Serenity Operating System
1try {
2 assert((0 | 0) === 0);
3 assert((0 | 1) === 1);
4 assert((0 | 2) === 2);
5 assert((0 | 3) === 3);
6 assert((0 | 4) === 4);
7 assert((0 | 5) === 5);
8
9 assert((1 | 0) === 1);
10 assert((1 | 1) === 1);
11 assert((1 | 2) === 3);
12 assert((1 | 3) === 3);
13 assert((1 | 4) === 5);
14 assert((1 | 5) === 5);
15
16 assert((2 | 0) === 2);
17 assert((2 | 1) === 3);
18 assert((2 | 2) === 2);
19 assert((2 | 3) === 3);
20 assert((2 | 4) === 6);
21 assert((2 | 5) === 7);
22
23 assert((3 | 0) === 3);
24 assert((3 | 1) === 3);
25 assert((3 | 2) === 3);
26 assert((3 | 3) === 3);
27 assert((3 | 4) === 7);
28 assert((3 | 5) === 7);
29
30 assert((4 | 0) === 4);
31 assert((4 | 1) === 5);
32 assert((4 | 2) === 6);
33 assert((4 | 3) === 7);
34 assert((4 | 4) === 4);
35 assert((4 | 5) === 5);
36
37 assert((5 | 0) === 5);
38 assert((5 | 1) === 5);
39 assert((5 | 2) === 7);
40 assert((5 | 3) === 7);
41 assert((5 | 4) === 5);
42 assert((5 | 5) === 5);
43
44 var x = 3;
45 var y = 7;
46 assert(("42" | 6) === 46);
47 assert((x | y) === 7);
48 assert((x | [[[[12]]]]) === 15);
49 assert((undefined | y) === 7);
50 assert(("a" | "b") === 0);
51 assert((null | null) === 0);
52 assert((undefined | undefined) === 0);
53 assert((NaN | NaN) === 0);
54 assert((NaN | 6) === 6);
55 assert((Infinity | Infinity) === 0);
56 assert((-Infinity | Infinity) === 0);
57
58 console.log("PASS");
59} catch (e) {
60 console.log("FAIL: " + e);
61}