// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // @dart = 2.7 import "package:expect/expect.dart"; int zero() { return 0; } int one() { return 1; } int minus1() { return 0 - 1; } int two() { return 2; } int three() { return 3; } int five() { return 5; } int minus5() { return 0 - 5; } int ninetyNine() { return 99; } int four99() { return 499; } int four99times99() { return 499 * 99; } int four99times99plus1() { return 499 * 99 + 1; } void addTest() { var m1 = 0 - 1; var x = 0; x += 0; Expect.equals(0, x); x += one(); Expect.equals(1, x); x += m1; Expect.equals(0, x); x += 499; Expect.equals(499, x); } void subTest() { var m1 = 0 - 1; var x = 0; x -= 0; Expect.equals(0, x); x -= one(); Expect.equals(m1, x); x -= m1; Expect.equals(0, x); x = 499; x -= one(); x -= 98; Expect.equals(400, x); } void mulTest() { var m1 = 0 - 1; var x = 0; x *= 0; Expect.equals(0, x); x = one(); x *= 1; Expect.equals(1, x); x *= four99(); Expect.equals(499, x); x *= m1; Expect.equals(0 - 499, x); } void divTest() { var m1 = 0.0 - 1.0; var m2 = 0 - 2; num x = two(); x /= 2; Expect.equals(1.0, x); x /= 2; Expect.equals(0.5, x); x = four99times99(); x /= 99; Expect.equals(499.0, x); } void tdivTest() { var x = 3; x ~/= two(); Expect.equals(1, x); x = 49402; x ~/= ninetyNine(); Expect.equals(499, x); } void modTest() { var x = five(); x %= 3; Expect.equals(2, x); x = 49402; x %= ninetyNine(); Expect.equals(1, x); } void shlTest() { var x = five(); x <<= 2; Expect.equals(20, x); x <<= 1; Expect.equals(40, x); } void shrTest() { var x = four99(); x >>= 1; Expect.equals(249, x); x >>= 2; Expect.equals(62, x); } void andTest() { var x = five(); x &= 3; Expect.equals(1, x); x &= 10; Expect.equals(0, x); x = four99(); x &= 63; Expect.equals(51, x); } void orTest() { var x = five(); x |= 2; Expect.equals(7, x); x |= 7; Expect.equals(7, x); x |= 10; Expect.equals(15, x); x |= 499; Expect.equals(511, x); } void xorTest() { var x = five(); x ^= 2; Expect.equals(7, x); x ^= 7; Expect.equals(0, x); x ^= 10; Expect.equals(10, x); x ^= 499; Expect.equals(505, x); } void main() { addTest(); subTest(); mulTest(); divTest(); tdivTest(); modTest(); shlTest(); shrTest(); andTest(); orTest(); xorTest(); }