authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-11-29 23:21:07-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-11-29 23:21:07-07:00
log173d56213b60fc570b6ba3922ee1d40bbf0d0e36
tree23b91c58644886ad798dafb617ff8bc8e7e1301d
parent0a9b4d092f58595888f9e4be8ef683b2ed8a0da1

improve behavior test coverage for overflow arithmetic


1 files changed, 22 insertions(+), 3 deletions(-)

test/behavior/math_stage1.zig+22-3
......@@ -9,26 +9,45 @@ const mem = std.mem;
99test "@addWithOverflow" {
1010 var result: u8 = undefined;
1111 try expect(@addWithOverflow(u8, 250, 100, &result));
12 try expect(result == 94);
1213 try expect(!@addWithOverflow(u8, 100, 150, &result));
1314 try expect(result == 250);
1415}
1516
16// TODO test mulWithOverflow
17// TODO test subWithOverflow
17test "@mulWithOverflow" {
18 var result: u8 = undefined;
19 try expect(@mulWithOverflow(u8, 86, 3, &result));
20 try expect(result == 2);
21 try expect(!@mulWithOverflow(u8, 85, 3, &result));
22 try expect(result == 255);
23}
24
25test "@subWithOverflow" {
26 var result: u8 = undefined;
27 try expect(@subWithOverflow(u8, 1, 2, &result));
28 try expect(result == 255);
29 try expect(!@subWithOverflow(u8, 1, 1, &result));
30 try expect(result == 0);
31}
1832
1933test "@shlWithOverflow" {
2034 var result: u16 = undefined;
2135 try expect(@shlWithOverflow(u16, 0b0010111111111111, 3, &result));
36 try expect(result == 0b0111111111111000);
2237 try expect(!@shlWithOverflow(u16, 0b0010111111111111, 2, &result));
2338 try expect(result == 0b1011111111111100);
2439}
2540
26test "@*WithOverflow with u0 values" {
41test "overflow arithmetic with u0 values" {
2742 var result: u0 = undefined;
2843 try expect(!@addWithOverflow(u0, 0, 0, &result));
44 try expect(result == 0);
2945 try expect(!@subWithOverflow(u0, 0, 0, &result));
46 try expect(result == 0);
3047 try expect(!@mulWithOverflow(u0, 0, 0, &result));
48 try expect(result == 0);
3149 try expect(!@shlWithOverflow(u0, 0, 0, &result));
50 try expect(result == 0);
3251}
3352
3453test "@clz vectors" {