|  | // 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. | 
|  |  | 
|  | 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(); | 
|  | } |