summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/ion/andOr.js
blob: ae92f5462b9e3b013a99a72a8813c2048ef00b94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function testBooleans(a, b) {
    var res = 0;
    if (a && b) res += 2;
    if (b || a) res += 1;
    return res;
}
assertEq(testBooleans(false, false), 0);
assertEq(testBooleans(false, true), 1);
assertEq(testBooleans(true, false), 1);
assertEq(testBooleans(true, true), 3);

function testShortCircuit(a) {
    var b = 0;
    ++a && a++;
    a || (b = 100);
    return a + b;
}
assertEq(testShortCircuit(0), 2);
assertEq(testShortCircuit(-2), 100);
assertEq(testShortCircuit(-1), 100);

function testValues(a, b) {
    if (a && b) return 2;
    if (b || a) return 1;
    return 0;
}
assertEq(testValues(false, true), 1);
assertEq(testValues("foo", 22), 2);
assertEq(testValues(null, ""), 0);
assertEq(testValues(Math.PI, undefined), 1);
assertEq(testValues(Math.abs, 2.2), 2);