authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-05-05 21:43:31+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-05-05 21:43:36+02:00
logeab5a1bd5a6b6fb6f968cb99895a862ad5639f15
tree383f39ba0ddd693c02dc87e16e28eb1c0f275f98
parent3cef23129a37676cfd1e86efbc20d6089d7812e5

test: test bitwidths between 1...8 and 8...16 for mul_with_overflow


1 files changed, 48 insertions(+), 0 deletions(-)

test/behavior/math.zig+48
...@@ -690,6 +690,30 @@ test "extensive @mulWithOverflow" {...@@ -690,6 +690,30 @@ test "extensive @mulWithOverflow" {
690 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO690 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
691 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO691 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
692692
693 {
694 var a: u5 = 3;
695 var b: u5 = 10;
696 var res: u5 = undefined;
697 try expect(!@mulWithOverflow(u5, a, b, &res));
698 try expect(res == 30);
699
700 b = 11;
701 try expect(@mulWithOverflow(u5, a, b, &res));
702 try expect(res == 1);
703 }
704
705 {
706 var a: i5 = 3;
707 var b: i5 = -5;
708 var res: i5 = undefined;
709 try expect(!@mulWithOverflow(i5, a, b, &res));
710 try expect(res == -15);
711
712 b = -6;
713 try expect(@mulWithOverflow(i5, a, b, &res));
714 try expect(res == 14);
715 }
716
693 {717 {
694 var a: u8 = 3;718 var a: u8 = 3;
695 var b: u8 = 85;719 var b: u8 = 85;
...@@ -715,6 +739,30 @@ test "extensive @mulWithOverflow" {...@@ -715,6 +739,30 @@ test "extensive @mulWithOverflow" {
715 try expect(res == 127);739 try expect(res == 127);
716 }740 }
717741
742 {
743 var a: u14 = 3;
744 var b: u14 = 0x1555;
745 var res: u14 = undefined;
746 try expect(!@mulWithOverflow(u14, a, b, &res));
747 try expect(res == 0x3fff);
748
749 b = 0x1556;
750 try expect(@mulWithOverflow(u14, a, b, &res));
751 try expect(res == 2);
752 }
753
754 {
755 var a: i14 = 3;
756 var b: i14 = -0xaaa;
757 var res: i14 = undefined;
758 try expect(!@mulWithOverflow(i14, a, b, &res));
759 try expect(res == -0x1ffe);
760
761 b = -0xaab;
762 try expect(@mulWithOverflow(i14, a, b, &res));
763 try expect(res == 0x1fff);
764 }
765
718 {766 {
719 var a: u16 = 3;767 var a: u16 = 3;
720 var b: u16 = 0x5555;768 var b: u16 = 0x5555;