Is this the best way to use expectEqual
?
fn add(a: i64, b: i64) i64 {
return a + b;
}
test "basic test" {
try std.testing.expectEqual(@as(i64, 10), add(3, 7));
}
Without the @as
the test doesn’t even compile:
./src/main.zig:12:40: error: expected type 'comptime_int', found 'i64'
try std.testing.expectEqual(10, add(3, 7));
Having to use @as
seems makes the test less readable. It seems to me inferring the type of expected
from the type of actual
would make more sense.
Should work if “10” is also declared as a variable with type “i64” I think?
Sure, you could do:
Is there a way to write an
i64
literal?If we look at the signature
expectEqual(expected: anytype, actual: @TypeOf(expected)) !void
, notice that the second arg’s type depends on the first arg’s type.To avoid using
@as
coercion, we can just swap the passing arguments.comptime_int
can be inferred asi64
, not the other way around. And that makes sense because literal values are unsized.