Chromium Code Reviews| Index: tests/language/src/BoolTest.dart |
| =================================================================== |
| --- tests/language/src/BoolTest.dart (revision 5247) |
| +++ tests/language/src/BoolTest.dart (working copy) |
| @@ -112,10 +112,99 @@ |
| Expect.equals(false, !isTrue); |
| } |
| + static void testLogicalOp() { |
| + testOr(a, b, onTypeError) { |
| + try { |
| + return a || b; |
| + } catch (TypeError t) { |
| + return onTypeError; |
| + } |
| + } |
| + testAnd(a, b, onTypeError) { |
| + try { |
| + return a && b; |
| + } catch (TypeError t) { |
| + return onTypeError; |
| + } |
| + } |
| + |
| + var isTrue = true; |
| + var isFalse = false; |
| + Expect.equals(true, testAnd(isTrue, isTrue, false)); |
| + Expect.equals(false, testAnd(isTrue, 0, false)); |
| + Expect.equals(false, testAnd(isTrue, 1, false)); |
| + Expect.equals(false, testAnd(isTrue, "true", false)); |
| + Expect.equals(false, testAnd(0, isTrue, false)); |
| + Expect.equals(false, testAnd(1, isTrue, false)); |
| + |
| + Expect.equals(true, testOr(isTrue, isTrue, false)); |
| + Expect.equals(true, testOr(isFalse, isTrue, false)); |
| + Expect.equals(true, testOr(isTrue, isFalse, false)); |
| + Expect.equals(true, testOr(isTrue, 0, true)); |
| + Expect.equals(true, testOr(isTrue, 1, true)); |
| + Expect.equals(false, testOr(isFalse, 0, false)); |
| + Expect.equals(false, testOr(isFalse, 1, false)); |
| + Expect.equals(true, testOr(0, isTrue, true)); |
| + Expect.equals(true, testOr(1, isTrue, true)); |
| + Expect.equals(false, testOr(0, isFalse, false)); |
| + Expect.equals(false, testOr(1, isFalse, false)); |
| + |
| + // Test side effects. |
| + int trueCount = 0; |
| + int falseCount = 0; |
| + |
| + trueFunc() { |
| + trueCount++; |
| + return true; |
| + } |
| + |
| + falseFunc() { |
| + falseCount++; |
| + return false; |
| + } |
| + |
| + Expect.equals(0, trueCount); |
| + Expect.equals(0, falseCount); |
| + |
| + trueFunc() && trueFunc(); |
| + Expect.equals(2, trueCount); |
| + Expect.equals(0, falseCount); |
| + |
|
regis
2012/03/09 20:48:27
It would be easier to read if the counts were rese
srdjan
2012/03/09 21:14:55
Done.
|
| + falseFunc() && trueFunc(); |
| + Expect.equals(2, trueCount); |
| + Expect.equals(1, falseCount); |
| + |
| + trueFunc() && falseFunc(); |
| + Expect.equals(3, trueCount); |
| + Expect.equals(2, falseCount); |
| + |
| + falseFunc() && falseFunc(); |
| + Expect.equals(3, trueCount); |
| + Expect.equals(3, falseCount); |
| + |
| + trueFunc() || trueFunc(); |
| + Expect.equals(4, trueCount); |
| + Expect.equals(3, falseCount); |
| + |
| + falseFunc() || trueFunc(); |
| + Expect.equals(5, trueCount); |
| + Expect.equals(4, falseCount); |
| + |
| + trueFunc() || falseFunc(); |
| + Expect.equals(6, trueCount); |
| + Expect.equals(4, falseCount); |
| + |
| + falseFunc() || falseFunc(); |
| + Expect.equals(6, trueCount); |
| + Expect.equals(6, falseCount); |
| + } |
| + |
| + |
| static void testMain() { |
| testEquality(); |
| testNegate(true, false); |
| testToString(); |
| + testLogicalOp(); |
| } |
| } |