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