# std.testing.expectEqual: show differing pointer values · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/ad77e93415add43d1c259ea462d6653b1f16a5e2)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: ad77e93415add43d1c259ea462d6653b1f16a5e2

Requested commit: ad77e93415add43d1c259ea462d6653b1f16a5e2

Commit: ad77e93415add43d1c259ea462d6653b1f16a5e2

Tree: 3142701d76c8cc57b11e0b52b1176c3d9135a0ef

Author: Johan Bolmsjö

Committer: Andrew Kelley

## Message

```
std.testing.expectEqual: show differing pointer values

Show differing pointer values when comparing pointers instead of the
content they point to.

It's confusing for a test to say "expected S{.x = 1}, found S{.x = 1}"
as illustrated below when it was the pointers that differed.

There seems to be different rules for when a pointer is dereferenced by
the printing routine depending on its type. I don't fully grok this but
it's also illustrated below.

    const std = @import("std");

    const S = struct { x: u32 };

    // before: ...expected S{ .x = 1 }, found S{ .x = 1 }
    // after:  ...expected S@7ffcd20b7798, found S@7ffcd20b7790
    test "compare_ptr_to_struct" {
        var a = S{.x = 1};
        var b = S{.x = 1};
        std.testing.expectEqual(&a, &b);
    }

    // before: ...expected u32@7fff316ba31c, found u32@7fff316ba318
    // after:  ...expected u32@7ffecec622dc, found u32@7ffecec622d8
    test "compare_ptr_to_scalar" {
        var a: u32 = 1;
        var b: u32 = 1;
        std.testing.expectEqual(&a, &b);
    }

```

## Parents

- [b3539b40a6fc98978b820a74c348b6272bfbc027](https://git.cafe/gitcafe/zig/commit/b3539b40a6fc98978b820a74c348b6272bfbc027?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/ad77e93415add43d1c259ea462d6653b1f16a5e2?format=markdown)
