function test(a: u32, b: u32): void { // signed assert((a + b) == (a + b)); assert((a - b) == (a - b)); assert((a * b) == (a * b)); assert((a & b) == (a & b)); assert((a | b) == (a | b)); assert((a ^ b) == (a ^ b)); assert((a << b) == (a << b)); // unsigned assert((a + b) == (a + b)); assert((a - b) == (a - b)); assert((a * b) == (a * b)); assert((a & b) == (a & b)); assert((a | b) == (a | b)); assert((a ^ b) == (a ^ b)); assert((a << b) == (a << b)); } // signed test(0, i8.MAX_VALUE); test(i8.MAX_VALUE, 0); test(1, i8.MAX_VALUE); test(i8.MAX_VALUE, 1); test(-1, i8.MAX_VALUE); test(i8.MAX_VALUE, -1); test(0, i8.MIN_VALUE); test(i8.MIN_VALUE, 0); test(1, i8.MIN_VALUE); test(i8.MIN_VALUE, 1); test(-1, i8.MIN_VALUE); test(i8.MIN_VALUE, -1); test(i8.MAX_VALUE, i8.MAX_VALUE); test(i8.MIN_VALUE, i8.MIN_VALUE); test(i8.MAX_VALUE, i8.MIN_VALUE); test(i8.MIN_VALUE, i8.MAX_VALUE); // unsigned test(0, u8.MAX_VALUE); test(u8.MAX_VALUE, 0); test(1, u8.MAX_VALUE); test(u8.MAX_VALUE, 1); test(-1, u8.MAX_VALUE); test(u8.MAX_VALUE, -1); test(u8.MAX_VALUE, u8.MAX_VALUE); // various for (var i: i32 = i8.MIN_VALUE; i <= u8.MAX_VALUE; ++i) { test(0, i); test(1, i); test(-1, i); test(i8.MIN_VALUE, i); test(i8.MAX_VALUE, i); test(u8.MAX_VALUE, i); test(i16.MIN_VALUE, i); test(i16.MAX_VALUE, i); test(u16.MAX_VALUE, i); test(i32.MAX_VALUE, i); test(i32.MIN_VALUE, i); test(u32.MAX_VALUE, i); } // visually var si: i8; si = 127 + 127 + 1; // sign-extends exactly once assert(si == -1); si = 127 - 1 - 127; // sign-extends exactly once assert(si == -1); si = 127 * 2; // sign-extends exactly once assert(si == -2); si = -(-128); // -MIN_VALUE == MIN_VALUE assert(si == -128); si = -128 * -1; // -MIN_VALUE == MIN_VALUE assert(si == -128); si = 127 / -1; assert(si == -127); si = -128 / -1; // -MIN_VALUE == MIN_VALUE assert(si == -128); si = 127 % 2; assert(si == 1); si = 1 % 127; assert(si == 1); si = -128 % 2; assert(si == 0); si = 1 % -128; assert(si == 1); var ui: u8; ui = 255 + 255 + 1; assert(ui == 255); ui = 255 - 1 - 255; assert(ui == 255); ui = 255 * 2; assert(ui == 254); ui = 255 * 255; assert(ui == 1); ui = 255 / 255; assert(ui == 1); ui = 255 % 2; assert(ui == 1); ui = 255 % 255; assert(ui == 0);