Commit eab5a1bd5a
Changed files (1)
test
behavior
test/behavior/math.zig
@@ -690,6 +690,30 @@ test "extensive @mulWithOverflow" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+ {
+ var a: u5 = 3;
+ var b: u5 = 10;
+ var res: u5 = undefined;
+ try expect(!@mulWithOverflow(u5, a, b, &res));
+ try expect(res == 30);
+
+ b = 11;
+ try expect(@mulWithOverflow(u5, a, b, &res));
+ try expect(res == 1);
+ }
+
+ {
+ var a: i5 = 3;
+ var b: i5 = -5;
+ var res: i5 = undefined;
+ try expect(!@mulWithOverflow(i5, a, b, &res));
+ try expect(res == -15);
+
+ b = -6;
+ try expect(@mulWithOverflow(i5, a, b, &res));
+ try expect(res == 14);
+ }
+
{
var a: u8 = 3;
var b: u8 = 85;
@@ -715,6 +739,30 @@ test "extensive @mulWithOverflow" {
try expect(res == 127);
}
+ {
+ var a: u14 = 3;
+ var b: u14 = 0x1555;
+ var res: u14 = undefined;
+ try expect(!@mulWithOverflow(u14, a, b, &res));
+ try expect(res == 0x3fff);
+
+ b = 0x1556;
+ try expect(@mulWithOverflow(u14, a, b, &res));
+ try expect(res == 2);
+ }
+
+ {
+ var a: i14 = 3;
+ var b: i14 = -0xaaa;
+ var res: i14 = undefined;
+ try expect(!@mulWithOverflow(i14, a, b, &res));
+ try expect(res == -0x1ffe);
+
+ b = -0xaab;
+ try expect(@mulWithOverflow(i14, a, b, &res));
+ try expect(res == 0x1fff);
+ }
+
{
var a: u16 = 3;
var b: u16 = 0x5555;