-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathoperators_logical.js
65 lines (54 loc) · 2.44 KB
/
operators_logical.js
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
console.assertEqual((true && true), true);
console.assertEqual((true && false), false);
console.assertEqual((false && true), false);
console.assertEqual((false && false), false);
console.assertEqual((true || true), true);
console.assertEqual((true || false), true);
console.assertEqual((false || true), true);
console.assertEqual((false || false), false);
console.assertEqual(("lhs" && "rhs"), "rhs");
console.assertEqual(("lhs" && ""), "");
console.assertEqual(("" && "rhs"), "");
console.assertEqual(("" && ""), "");
console.assertEqual(("lhs" || "rhs"), "lhs");
console.assertEqual(("lhs" || ""), "lhs");
console.assertEqual(("" || "rhs"), "rhs");
console.assertEqual(("" || ""), "");
console.assertEqual((false && console.assertNotReached()), false);
console.assertEqual((true || console.assertNotReached()), true);
console.assertEqual(("" && console.assertNotReached()), "");
console.assertEqual(("lhs" || console.assertNotReached()), "lhs");
let counter = 0;
function condition(n, value) {
counter += 1;
console.assertEqual(counter, n);
return value;
}
function checkAndReset(expected) {
console.assertEqual(counter, expected);
counter = 0;
}
console.assertEqual((condition(1, true) && condition(2, true)), true);
checkAndReset(2);
console.assertEqual((condition(1, true) && condition(2, false)), false);
checkAndReset(2);
console.assertEqual((condition(1, false) && assertNotReached()), false);
checkAndReset(1);
console.assertEqual((condition(1, false) && assertNotReached()), false);
checkAndReset(1);
console.assertEqual((condition(1, true) || assertNotReached()), true);
checkAndReset(1);
console.assertEqual((condition(1, true) || assertNotReached()), true);
checkAndReset(1);
console.assertEqual((condition(1, false) || condition(2, true)), true);
checkAndReset(2);
console.assertEqual((condition(1, false) || condition(2, false)), false);
checkAndReset(2);
console.assertEqual((condition(1, 1) && condition(2, 2) && condition(3, 3) && condition(4, 4) && condition(5, 5)), 5);
checkAndReset(5);
console.assertEqual((condition(1, 1) && condition(2, 2) && condition(3, 3) && condition(4, 4) && condition(5, 0) && assertNotReached()), 0);
checkAndReset(5);
console.assertEqual((condition(1, 0) || condition(2, 0) || condition(3, 0) || condition(4, 0) || condition(5, 0)), 0);
checkAndReset(5);
console.assertEqual((condition(1, 0) || condition(2, 0) || condition(3, 0) || condition(4, 0) || condition(5, 5) || assertNotReached()), 5);
checkAndReset(5);