// 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"; // Tests basic expressions. Does not attempt to validate the details of arithmetic, coercion, and // so forth. class ExpressionTest { ExpressionTest() {} int foo = -1; static testMain() { var test = new ExpressionTest(); test.testBinary(); test.testUnary(); test.testShifts(); test.testBitwise(); test.testIncrement(); test.testMangling(); } testBinary() { int x = 4, y = 2; Expect.equals(6, x + y); Expect.equals(2, x - y); Expect.equals(8, x * y); Expect.equals(2, x / y); Expect.equals(0, x % y); } testUnary() { int x = 4, y = 2, z = -5; bool t = true, f = false; Expect.equals(-4, -x); Expect.equals(4, ~z); Expect.equals(f, !t); } testShifts() { int x = 4, y = 2; Expect.equals(y, x >> 1); Expect.equals(x, y << 1); } testBitwise() { int x = 4, y = 2; Expect.equals(6, (x | y)); Expect.equals(0, (x & y)); Expect.equals(6, (x ^ y)); } int operator [](int index) { return foo; } operator []=(int index, int value) { foo = value; } testIncrement() { int x = 4, a = x++; Expect.equals(4, a); Expect.equals(5, x); Expect.equals(6, ++x); Expect.equals(6, x++); Expect.equals(7, x); Expect.equals(6, --x); Expect.equals(6, x--); Expect.equals(5, x); this.foo = 0; Expect.equals(0, this.foo++); Expect.equals(1, this.foo); Expect.equals(2, ++this.foo); Expect.equals(2, this.foo); Expect.equals(2, this.foo--); Expect.equals(1, this.foo); Expect.equals(0, --this.foo); Expect.equals(0, this.foo); Expect.equals(0, this[0]++); Expect.equals(1, this[0]); Expect.equals(2, ++this[0]); Expect.equals(2, this[0]); Expect.equals(2, this[0]--); Expect.equals(1, this[0]); Expect.equals(0, --this[0]); Expect.equals(0, this[0]); int $0 = 42, $1 = 87, $2 = 117; Expect.equals(42, $0++); Expect.equals(43, $0); Expect.equals(44, ++$0); Expect.equals(88, $0 += $0); Expect.equals(87, $1++); Expect.equals(88, $1); Expect.equals(89, ++$1); Expect.equals(178, ($1 += $1)); Expect.equals(117, $2++); Expect.equals(118, $2); Expect.equals(119, ++$2); } void testMangling() { int $0 = 42, $1 = 87, $2 = 117; this[0] = 0; Expect.equals(42, (this[0] += $0)); Expect.equals(129, (this[0] += $1)); Expect.equals(246, (this[0] += $2)); } } main() { ExpressionTest.testMain(); }