Commit eab5a1bd5a

Jakub Konka <kubkon@jakubkonka.com>
2022-05-05 21:43:31
test: test bitwidths between 1...8 and 8...16 for mul_with_overflow
1 parent 3cef231
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;