|
1 function testBooleans(a, b) { |
|
2 var res = 0; |
|
3 if (a && b) res += 2; |
|
4 if (b || a) res += 1; |
|
5 return res; |
|
6 } |
|
7 assertEq(testBooleans(false, false), 0); |
|
8 assertEq(testBooleans(false, true), 1); |
|
9 assertEq(testBooleans(true, false), 1); |
|
10 assertEq(testBooleans(true, true), 3); |
|
11 |
|
12 function testShortCircuit(a) { |
|
13 var b = 0; |
|
14 ++a && a++; |
|
15 a || (b = 100); |
|
16 return a + b; |
|
17 } |
|
18 assertEq(testShortCircuit(0), 2); |
|
19 assertEq(testShortCircuit(-2), 100); |
|
20 assertEq(testShortCircuit(-1), 100); |
|
21 |
|
22 function testValues(a, b) { |
|
23 if (a && b) return 2; |
|
24 if (b || a) return 1; |
|
25 return 0; |
|
26 } |
|
27 assertEq(testValues(false, true), 1); |
|
28 assertEq(testValues("foo", 22), 2); |
|
29 assertEq(testValues(null, ""), 0); |
|
30 assertEq(testValues(Math.PI, undefined), 1); |
|
31 assertEq(testValues(Math.abs, 2.2), 2); |