123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531 |
- load("test-common.js");
- try {
- const vals = [
- 1,
- 2,
- [],
- [1],
- [2],
- [1, 2],
- "foo",
- "fooo",
- "🔥",
- "❤️",
- "bar",
- {},
- { a: 1 },
- { a: 2 },
- { b: 1 },
- true,
- false,
- undefined,
- null,
- NaN,
- +Infinity,
- -Infinity,
- ];
- // Each row contains: x_index, y_index, (x < y), (x > y), (x <= y), (x >= y)
- // where x = vals[x_index], y = vals[y_index]
- const table = [
- [0, 0, false, false, true, true],
- [0, 1, true, false, true, false],
- [0, 2, false, true, false, true],
- [0, 3, false, false, true, true],
- [0, 4, true, false, true, false],
- [0, 5, false, false, false, false],
- [0, 6, false, false, false, false],
- [0, 7, false, false, false, false],
- [0, 8, false, false, false, false],
- [0, 9, false, false, false, false],
- [0, 10, false, false, false, false],
- [0, 11, false, false, false, false],
- [0, 12, false, false, false, false],
- [0, 13, false, false, false, false],
- [0, 14, false, false, false, false],
- [0, 15, false, false, true, true],
- [0, 16, false, true, false, true],
- [0, 17, false, false, false, false],
- [0, 18, false, true, false, true],
- [0, 19, false, false, false, false],
- [0, 20, true, false, true, false],
- [0, 21, false, true, false, true],
- [1, 0, false, true, false, true],
- [1, 1, false, false, true, true],
- [1, 2, false, true, false, true],
- [1, 3, false, true, false, true],
- [1, 4, false, false, true, true],
- [1, 5, false, false, false, false],
- [1, 6, false, false, false, false],
- [1, 7, false, false, false, false],
- [1, 8, false, false, false, false],
- [1, 9, false, false, false, false],
- [1, 10, false, false, false, false],
- [1, 11, false, false, false, false],
- [1, 12, false, false, false, false],
- [1, 13, false, false, false, false],
- [1, 14, false, false, false, false],
- [1, 15, false, true, false, true],
- [1, 16, false, true, false, true],
- [1, 17, false, false, false, false],
- [1, 18, false, true, false, true],
- [1, 19, false, false, false, false],
- [1, 20, true, false, true, false],
- [1, 21, false, true, false, true],
- [2, 0, true, false, true, false],
- [2, 1, true, false, true, false],
- [2, 2, false, false, true, true],
- [2, 3, true, false, true, false],
- [2, 4, true, false, true, false],
- [2, 5, true, false, true, false],
- [2, 6, true, false, true, false],
- [2, 7, true, false, true, false],
- [2, 8, true, false, true, false],
- [2, 9, true, false, true, false],
- [2, 10, true, false, true, false],
- [2, 11, true, false, true, false],
- [2, 12, true, false, true, false],
- [2, 13, true, false, true, false],
- [2, 14, true, false, true, false],
- [2, 15, true, false, true, false],
- [2, 16, false, false, true, true],
- [2, 17, false, false, false, false],
- [2, 18, false, false, true, true],
- [2, 19, false, false, false, false],
- [2, 20, true, false, true, false],
- [2, 21, false, true, false, true],
- [3, 0, false, false, true, true],
- [3, 1, true, false, true, false],
- [3, 2, false, true, false, true],
- [3, 3, false, false, true, true],
- [3, 4, true, false, true, false],
- [3, 5, true, false, true, false],
- [3, 6, true, false, true, false],
- [3, 7, true, false, true, false],
- [3, 8, true, false, true, false],
- [3, 9, true, false, true, false],
- [3, 10, true, false, true, false],
- [3, 11, true, false, true, false],
- [3, 12, true, false, true, false],
- [3, 13, true, false, true, false],
- [3, 14, true, false, true, false],
- [3, 15, false, false, true, true],
- [3, 16, false, true, false, true],
- [3, 17, false, false, false, false],
- [3, 18, false, true, false, true],
- [3, 19, false, false, false, false],
- [3, 20, true, false, true, false],
- [3, 21, false, true, false, true],
- [4, 0, false, true, false, true],
- [4, 1, false, false, true, true],
- [4, 2, false, true, false, true],
- [4, 3, false, true, false, true],
- [4, 4, false, false, true, true],
- [4, 5, false, true, false, true],
- [4, 6, true, false, true, false],
- [4, 7, true, false, true, false],
- [4, 8, true, false, true, false],
- [4, 9, true, false, true, false],
- [4, 10, true, false, true, false],
- [4, 11, true, false, true, false],
- [4, 12, true, false, true, false],
- [4, 13, true, false, true, false],
- [4, 14, true, false, true, false],
- [4, 15, false, true, false, true],
- [4, 16, false, true, false, true],
- [4, 17, false, false, false, false],
- [4, 18, false, true, false, true],
- [4, 19, false, false, false, false],
- [4, 20, true, false, true, false],
- [4, 21, false, true, false, true],
- [5, 0, false, false, false, false],
- [5, 1, false, false, false, false],
- [5, 2, false, true, false, true],
- [5, 3, false, true, false, true],
- [5, 4, true, false, true, false],
- [5, 5, false, false, true, true],
- [5, 6, true, false, true, false],
- [5, 7, true, false, true, false],
- [5, 8, true, false, true, false],
- [5, 9, true, false, true, false],
- [5, 10, true, false, true, false],
- [5, 11, true, false, true, false],
- [5, 12, true, false, true, false],
- [5, 13, true, false, true, false],
- [5, 14, true, false, true, false],
- [5, 15, false, false, false, false],
- [5, 16, false, false, false, false],
- [5, 17, false, false, false, false],
- [5, 18, false, false, false, false],
- [5, 19, false, false, false, false],
- [5, 20, false, false, false, false],
- [5, 21, false, false, false, false],
- [6, 0, false, false, false, false],
- [6, 1, false, false, false, false],
- [6, 2, false, true, false, true],
- [6, 3, false, true, false, true],
- [6, 4, false, true, false, true],
- [6, 5, false, true, false, true],
- [6, 6, false, false, true, true],
- [6, 7, true, false, true, false],
- [6, 8, true, false, true, false],
- [6, 9, true, false, true, false],
- [6, 10, false, true, false, true],
- [6, 11, false, true, false, true],
- [6, 12, false, true, false, true],
- [6, 13, false, true, false, true],
- [6, 14, false, true, false, true],
- [6, 15, false, false, false, false],
- [6, 16, false, false, false, false],
- [6, 17, false, false, false, false],
- [6, 18, false, false, false, false],
- [6, 19, false, false, false, false],
- [6, 20, false, false, false, false],
- [6, 21, false, false, false, false],
- [7, 0, false, false, false, false],
- [7, 1, false, false, false, false],
- [7, 2, false, true, false, true],
- [7, 3, false, true, false, true],
- [7, 4, false, true, false, true],
- [7, 5, false, true, false, true],
- [7, 6, false, true, false, true],
- [7, 7, false, false, true, true],
- [7, 8, true, false, true, false],
- [7, 9, true, false, true, false],
- [7, 10, false, true, false, true],
- [7, 11, false, true, false, true],
- [7, 12, false, true, false, true],
- [7, 13, false, true, false, true],
- [7, 14, false, true, false, true],
- [7, 15, false, false, false, false],
- [7, 16, false, false, false, false],
- [7, 17, false, false, false, false],
- [7, 18, false, false, false, false],
- [7, 19, false, false, false, false],
- [7, 20, false, false, false, false],
- [7, 21, false, false, false, false],
- [8, 0, false, false, false, false],
- [8, 1, false, false, false, false],
- [8, 2, false, true, false, true],
- [8, 3, false, true, false, true],
- [8, 4, false, true, false, true],
- [8, 5, false, true, false, true],
- [8, 6, false, true, false, true],
- [8, 7, false, true, false, true],
- [8, 8, false, false, true, true],
- [8, 9, false, true, false, true],
- [8, 10, false, true, false, true],
- [8, 11, false, true, false, true],
- [8, 12, false, true, false, true],
- [8, 13, false, true, false, true],
- [8, 14, false, true, false, true],
- [8, 15, false, false, false, false],
- [8, 16, false, false, false, false],
- [8, 17, false, false, false, false],
- [8, 18, false, false, false, false],
- [8, 19, false, false, false, false],
- [8, 20, false, false, false, false],
- [8, 21, false, false, false, false],
- [9, 0, false, false, false, false],
- [9, 1, false, false, false, false],
- [9, 2, false, true, false, true],
- [9, 3, false, true, false, true],
- [9, 4, false, true, false, true],
- [9, 5, false, true, false, true],
- [9, 6, false, true, false, true],
- [9, 7, false, true, false, true],
- [9, 8, true, false, true, false],
- [9, 9, false, false, true, true],
- [9, 10, false, true, false, true],
- [9, 11, false, true, false, true],
- [9, 12, false, true, false, true],
- [9, 13, false, true, false, true],
- [9, 14, false, true, false, true],
- [9, 15, false, false, false, false],
- [9, 16, false, false, false, false],
- [9, 17, false, false, false, false],
- [9, 18, false, false, false, false],
- [9, 19, false, false, false, false],
- [9, 20, false, false, false, false],
- [9, 21, false, false, false, false],
- [10, 0, false, false, false, false],
- [10, 1, false, false, false, false],
- [10, 2, false, true, false, true],
- [10, 3, false, true, false, true],
- [10, 4, false, true, false, true],
- [10, 5, false, true, false, true],
- [10, 6, true, false, true, false],
- [10, 7, true, false, true, false],
- [10, 8, true, false, true, false],
- [10, 9, true, false, true, false],
- [10, 10, false, false, true, true],
- [10, 11, false, true, false, true],
- [10, 12, false, true, false, true],
- [10, 13, false, true, false, true],
- [10, 14, false, true, false, true],
- [10, 15, false, false, false, false],
- [10, 16, false, false, false, false],
- [10, 17, false, false, false, false],
- [10, 18, false, false, false, false],
- [10, 19, false, false, false, false],
- [10, 20, false, false, false, false],
- [10, 21, false, false, false, false],
- [11, 0, false, false, false, false],
- [11, 1, false, false, false, false],
- [11, 2, false, true, false, true],
- [11, 3, false, true, false, true],
- [11, 4, false, true, false, true],
- [11, 5, false, true, false, true],
- [11, 6, true, false, true, false],
- [11, 7, true, false, true, false],
- [11, 8, true, false, true, false],
- [11, 9, true, false, true, false],
- [11, 10, true, false, true, false],
- [11, 11, false, false, true, true],
- [11, 12, false, false, true, true],
- [11, 13, false, false, true, true],
- [11, 14, false, false, true, true],
- [11, 15, false, false, false, false],
- [11, 16, false, false, false, false],
- [11, 17, false, false, false, false],
- [11, 18, false, false, false, false],
- [11, 19, false, false, false, false],
- [11, 20, false, false, false, false],
- [11, 21, false, false, false, false],
- [12, 0, false, false, false, false],
- [12, 1, false, false, false, false],
- [12, 2, false, true, false, true],
- [12, 3, false, true, false, true],
- [12, 4, false, true, false, true],
- [12, 5, false, true, false, true],
- [12, 6, true, false, true, false],
- [12, 7, true, false, true, false],
- [12, 8, true, false, true, false],
- [12, 9, true, false, true, false],
- [12, 10, true, false, true, false],
- [12, 11, false, false, true, true],
- [12, 12, false, false, true, true],
- [12, 13, false, false, true, true],
- [12, 14, false, false, true, true],
- [12, 15, false, false, false, false],
- [12, 16, false, false, false, false],
- [12, 17, false, false, false, false],
- [12, 18, false, false, false, false],
- [12, 19, false, false, false, false],
- [12, 20, false, false, false, false],
- [12, 21, false, false, false, false],
- [13, 0, false, false, false, false],
- [13, 1, false, false, false, false],
- [13, 2, false, true, false, true],
- [13, 3, false, true, false, true],
- [13, 4, false, true, false, true],
- [13, 5, false, true, false, true],
- [13, 6, true, false, true, false],
- [13, 7, true, false, true, false],
- [13, 8, true, false, true, false],
- [13, 9, true, false, true, false],
- [13, 10, true, false, true, false],
- [13, 11, false, false, true, true],
- [13, 12, false, false, true, true],
- [13, 13, false, false, true, true],
- [13, 14, false, false, true, true],
- [13, 15, false, false, false, false],
- [13, 16, false, false, false, false],
- [13, 17, false, false, false, false],
- [13, 18, false, false, false, false],
- [13, 19, false, false, false, false],
- [13, 20, false, false, false, false],
- [13, 21, false, false, false, false],
- [14, 0, false, false, false, false],
- [14, 1, false, false, false, false],
- [14, 2, false, true, false, true],
- [14, 3, false, true, false, true],
- [14, 4, false, true, false, true],
- [14, 5, false, true, false, true],
- [14, 6, true, false, true, false],
- [14, 7, true, false, true, false],
- [14, 8, true, false, true, false],
- [14, 9, true, false, true, false],
- [14, 10, true, false, true, false],
- [14, 11, false, false, true, true],
- [14, 12, false, false, true, true],
- [14, 13, false, false, true, true],
- [14, 14, false, false, true, true],
- [14, 15, false, false, false, false],
- [14, 16, false, false, false, false],
- [14, 17, false, false, false, false],
- [14, 18, false, false, false, false],
- [14, 19, false, false, false, false],
- [14, 20, false, false, false, false],
- [14, 21, false, false, false, false],
- [15, 0, false, false, true, true],
- [15, 1, true, false, true, false],
- [15, 2, false, true, false, true],
- [15, 3, false, false, true, true],
- [15, 4, true, false, true, false],
- [15, 5, false, false, false, false],
- [15, 6, false, false, false, false],
- [15, 7, false, false, false, false],
- [15, 8, false, false, false, false],
- [15, 9, false, false, false, false],
- [15, 10, false, false, false, false],
- [15, 11, false, false, false, false],
- [15, 12, false, false, false, false],
- [15, 13, false, false, false, false],
- [15, 14, false, false, false, false],
- [15, 15, false, false, true, true],
- [15, 16, false, true, false, true],
- [15, 17, false, false, false, false],
- [15, 18, false, true, false, true],
- [15, 19, false, false, false, false],
- [15, 20, true, false, true, false],
- [15, 21, false, true, false, true],
- [16, 0, true, false, true, false],
- [16, 1, true, false, true, false],
- [16, 2, false, false, true, true],
- [16, 3, true, false, true, false],
- [16, 4, true, false, true, false],
- [16, 5, false, false, false, false],
- [16, 6, false, false, false, false],
- [16, 7, false, false, false, false],
- [16, 8, false, false, false, false],
- [16, 9, false, false, false, false],
- [16, 10, false, false, false, false],
- [16, 11, false, false, false, false],
- [16, 12, false, false, false, false],
- [16, 13, false, false, false, false],
- [16, 14, false, false, false, false],
- [16, 15, true, false, true, false],
- [16, 16, false, false, true, true],
- [16, 17, false, false, false, false],
- [16, 18, false, false, true, true],
- [16, 19, false, false, false, false],
- [16, 20, true, false, true, false],
- [16, 21, false, true, false, true],
- [17, 0, false, false, false, false],
- [17, 1, false, false, false, false],
- [17, 2, false, false, false, false],
- [17, 3, false, false, false, false],
- [17, 4, false, false, false, false],
- [17, 5, false, false, false, false],
- [17, 6, false, false, false, false],
- [17, 7, false, false, false, false],
- [17, 8, false, false, false, false],
- [17, 9, false, false, false, false],
- [17, 10, false, false, false, false],
- [17, 11, false, false, false, false],
- [17, 12, false, false, false, false],
- [17, 13, false, false, false, false],
- [17, 14, false, false, false, false],
- [17, 15, false, false, false, false],
- [17, 16, false, false, false, false],
- [17, 17, false, false, false, false],
- [17, 18, false, false, false, false],
- [17, 19, false, false, false, false],
- [17, 20, false, false, false, false],
- [17, 21, false, false, false, false],
- [18, 0, true, false, true, false],
- [18, 1, true, false, true, false],
- [18, 2, false, false, true, true],
- [18, 3, true, false, true, false],
- [18, 4, true, false, true, false],
- [18, 5, false, false, false, false],
- [18, 6, false, false, false, false],
- [18, 7, false, false, false, false],
- [18, 8, false, false, false, false],
- [18, 9, false, false, false, false],
- [18, 10, false, false, false, false],
- [18, 11, false, false, false, false],
- [18, 12, false, false, false, false],
- [18, 13, false, false, false, false],
- [18, 14, false, false, false, false],
- [18, 15, true, false, true, false],
- [18, 16, false, false, true, true],
- [18, 17, false, false, false, false],
- [18, 18, false, false, true, true],
- [18, 19, false, false, false, false],
- [18, 20, true, false, true, false],
- [18, 21, false, true, false, true],
- [19, 0, false, false, false, false],
- [19, 1, false, false, false, false],
- [19, 2, false, false, false, false],
- [19, 3, false, false, false, false],
- [19, 4, false, false, false, false],
- [19, 5, false, false, false, false],
- [19, 6, false, false, false, false],
- [19, 7, false, false, false, false],
- [19, 8, false, false, false, false],
- [19, 9, false, false, false, false],
- [19, 10, false, false, false, false],
- [19, 11, false, false, false, false],
- [19, 12, false, false, false, false],
- [19, 13, false, false, false, false],
- [19, 14, false, false, false, false],
- [19, 15, false, false, false, false],
- [19, 16, false, false, false, false],
- [19, 17, false, false, false, false],
- [19, 18, false, false, false, false],
- [19, 19, false, false, false, false],
- [19, 20, false, false, false, false],
- [19, 21, false, false, false, false],
- [20, 0, false, true, false, true],
- [20, 1, false, true, false, true],
- [20, 2, false, true, false, true],
- [20, 3, false, true, false, true],
- [20, 4, false, true, false, true],
- [20, 5, false, false, false, false],
- [20, 6, false, false, false, false],
- [20, 7, false, false, false, false],
- [20, 8, false, false, false, false],
- [20, 9, false, false, false, false],
- [20, 10, false, false, false, false],
- [20, 11, false, false, false, false],
- [20, 12, false, false, false, false],
- [20, 13, false, false, false, false],
- [20, 14, false, false, false, false],
- [20, 15, false, true, false, true],
- [20, 16, false, true, false, true],
- [20, 17, false, false, false, false],
- [20, 18, false, true, false, true],
- [20, 19, false, false, false, false],
- [20, 20, false, false, true, true],
- [20, 21, false, true, false, true],
- [21, 0, true, false, true, false],
- [21, 1, true, false, true, false],
- [21, 2, true, false, true, false],
- [21, 3, true, false, true, false],
- [21, 4, true, false, true, false],
- [21, 5, false, false, false, false],
- [21, 6, false, false, false, false],
- [21, 7, false, false, false, false],
- [21, 8, false, false, false, false],
- [21, 9, false, false, false, false],
- [21, 10, false, false, false, false],
- [21, 11, false, false, false, false],
- [21, 12, false, false, false, false],
- [21, 13, false, false, false, false],
- [21, 14, false, false, false, false],
- [21, 15, true, false, true, false],
- [21, 16, true, false, true, false],
- [21, 17, false, false, false, false],
- [21, 18, true, false, true, false],
- [21, 19, false, false, false, false],
- [21, 20, true, false, true, false],
- [21, 21, false, false, true, true],
- ];
- for (let test of table) {
- let x = vals[test[0]];
- let y = vals[test[1]];
- assert(x < y === test[2]);
- assert(x > y === test[3]);
- assert(x <= y === test[4]);
- assert(x >= y === test[5]);
- }
- console.log("PASS");
- } catch (e) {
- console.log("FAIL: " + e);
- }
|