summaryrefslogtreecommitdiff
path: root/Libraries/LibJS/Tests/logical-expressions-basic.js
blob: ebd2b7c8651f82fd61070e7cda5810c3973c4886 (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
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
load("test-common.js");

try {
    assert((true && true) === true);
    assert((false && false) === false);
    assert((true && false) === false);
    assert((false && true) === false);
    assert((false && (1 === 2)) === false);
    assert((true && (1 === 2)) === false);
    assert(("" && "") === "");
    assert(("" && false) === "");
    assert(("" && true) === "");
    assert((false && "") === false);
    assert((true && "") === "");
    assert(("foo" && "bar") === "bar");
    assert(("foo" && false) === false);
    assert(("foo" && true) === true);
    assert((false && "bar") === false);
    assert((true && "bar") === "bar");
    assert((0 && false) === 0);
    assert((0 && true) === 0);
    assert((42 && false) === false);
    assert((42 && true) === true);
    assert((false && 0) === false);
    assert((true && 0) === 0);
    assert((false && 42) === false);
    assert((true && 42) === 42);
    assert(([] && false) === false);
    assert(([] && true) === true);
    assert((false && []) === false);
    assert((true && []).length === 0);
    assert((null && false) === null);
    assert((null && true) === null);
    assert((false && null) === false);
    assert((true && null) === null);
    assert((undefined && false) === undefined);
    assert((undefined && true) === undefined);
    assert((false && undefined) === false);
    assert((true && undefined) === undefined);

    assert((true || true) === true);
    assert((false || false) === false);
    assert((true || false) === true);
    assert((false || true) === true);
    assert((false || (1 === 2)) === false);
    assert((true || (1 === 2)) === true);
    assert(("" || "") === "");
    assert(("" || false) === false);
    assert(("" || true) === true);
    assert((false || "") === "");
    assert((true || "") === true);
    assert(("foo" || "bar") === "foo");
    assert(("foo" || false) === "foo");
    assert(("foo" || true) === "foo");
    assert((false || "bar") === "bar");
    assert((true || "bar") === true);
    assert((0 || false) === false);
    assert((0 || true) === true);
    assert((42 || false) === 42);
    assert((42 || true) === 42);
    assert((false || 0) === 0);
    assert((true || 0) === true);
    assert((false || 42) === 42);
    assert((true || 42) === true);
    assert(([] || false).length === 0);
    assert(([] || true).length === 0);
    assert((false || []).length === 0);
    assert((true || []) === true);
    assert((null || false) === false);
    assert((null || true) === true);
    assert((false || null) === null);
    assert((true || null) === true);
    assert((undefined || false) === false);
    assert((undefined || true) === true);
    assert((false || undefined) === undefined);
    assert((true || undefined) === true);

    assert((true ?? true) === true);
    assert((false ?? false) === false);
    assert((true ?? false) === true);
    assert((false ?? true) === false);
    assert((false ?? (1 === 2)) === false);
    assert((true ?? (1 === 2)) === true);
    assert(("" ?? "") === "");
    assert(("" ?? false) === "");
    assert(("" ?? true) === "");
    assert((false ?? "") === false);
    assert((true ?? "") === true);
    assert(("foo" ?? "bar") === "foo");
    assert(("foo" ?? false) === "foo");
    assert(("foo" ?? true) === "foo");
    assert((false ?? "bar") === false);
    assert((true ?? "bar") === true);
    assert((0 ?? false) === 0);
    assert((0 ?? true) === 0);
    assert((42 ?? false) === 42);
    assert((42 ?? true) === 42);
    assert((false ?? 0) === false);
    assert((true ?? 0) === true);
    assert((false ?? 42) === false);
    assert((true ?? 42) === true);
    assert(([] ?? false).length === 0);
    assert(([] ?? true).length === 0);
    assert((false ?? []) === false);
    assert((true ?? []) === true);
    assert((null ?? false) === false);
    assert((null ?? true) === true);
    assert((false ?? null) === false);
    assert((true ?? null) === true);
    assert((undefined ?? false) === false);
    assert((undefined ?? true) === true);
    assert((false ?? undefined) === false);
    assert((true ?? undefined) === true);

    console.log("PASS");
} catch (e) {
    console.log("FAIL: " + e);
}