MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 115 lines 3.5 kB view raw
1import { test, summary } from './helpers.js'; 2 3console.log('Operator Tests\n'); 4 5test('5 == 5', 5 == 5, true); 6test('5 === 5', 5 === 5, true); 7test('5 != 10', 5 != 10, true); 8test('5 !== 10', 5 !== 10, true); 9test('5 == 10', 5 == 10, false); 10test('5 != 5', 5 != 5, false); 11 12test("'hello' == 'hello'", 'hello' == 'hello', true); 13test("'hello' === 'hello'", 'hello' === 'hello', true); 14test("'hello' != 'world'", 'hello' != 'world', true); 15test("'hello' == 'world'", 'hello' == 'world', false); 16 17test('true == true', true == true, true); 18test('true === true', true === true, true); 19test('true != false', true != false, true); 20test('false == false', false == false, true); 21 22test('undefined == undefined', undefined == undefined, true); 23test('undefined === undefined', undefined === undefined, true); 24test('null == null', null == null, true); 25test('null === null', null === null, true); 26test('undefined == null', undefined == null, true); 27test('undefined === null', undefined === null, false); 28 29test('5 !== "5"', 5 !== '5', true); 30test('true !== 1', true !== 1, true); 31 32let obj1 = { x: 1 }; 33let obj2 = { x: 1 }; 34let obj3 = obj1; 35test('obj1 == obj2 (diff refs)', obj1 == obj2, false); 36test('obj1 === obj3 (same ref)', obj1 === obj3, true); 37 38let arr1 = [1, 2, 3]; 39let arr2 = [1, 2, 3]; 40let arr3 = arr1; 41test('arr1 == arr2 (diff refs)', arr1 == arr2, false); 42test('arr1 === arr3 (same ref)', arr1 === arr3, true); 43 44test('5 > 3', 5 > 3, true); 45test('3 < 5', 3 < 5, true); 46test('5 >= 5', 5 >= 5, true); 47test('5 <= 5', 5 <= 5, true); 48test('5 > 5', 5 > 5, false); 49test('5 < 5', 5 < 5, false); 50 51test('2 + 3', 2 + 3, 5); 52test('5 - 3', 5 - 3, 2); 53test('4 * 3', 4 * 3, 12); 54test('12 / 4', 12 / 4, 3); 55test('10 % 3', 10 % 3, 1); 56test('2 ** 3', 2 ** 3, 8); 57 58test('true && true', true && true, true); 59test('true && false', true && false, false); 60test('true || false', true || false, true); 61test('false || false', false || false, false); 62test('!true', !true, false); 63test('!false', !false, true); 64 65test('5 & 3', 5 & 3, 1); 66test('5 | 3', 5 | 3, 7); 67test('5 ^ 3', 5 ^ 3, 6); 68test('~5', ~5, -6); 69test('5 << 1', 5 << 1, 10); 70test('5 >> 1', 5 >> 1, 2); 71test('-5 >>> 1', (-5 >>> 1) > 0, true); 72 73test('typeof 5', typeof 5, 'number'); 74test("typeof 'hello'", typeof 'hello', 'string'); 75test('typeof true', typeof true, 'boolean'); 76test('typeof undefined', typeof undefined, 'undefined'); 77test('typeof null', typeof null, 'object'); 78test('typeof {}', typeof {}, 'object'); 79test('typeof []', typeof [], 'object'); 80test('typeof function(){}', typeof function(){}, 'function'); 81 82test("'a' in {a:1}", 'a' in {a:1}, true); 83test("'b' in {a:1}", 'b' in {a:1}, false); 84 85test('[] instanceof Array', [] instanceof Array, true); 86test('{} instanceof Object', {} instanceof Object, true); 87 88test('ternary true', true ? 'yes' : 'no', 'yes'); 89test('ternary false', false ? 'yes' : 'no', 'no'); 90 91test('nullish ?? default', null ?? 'default', 'default'); 92test('nullish defined', 'value' ?? 'default', 'value'); 93test('nullish 0', 0 ?? 'default', 0); 94 95test('optional ?.', { a: { b: 1 } }?.a?.b, 1); 96test('optional ?. undefined', { a: {} }?.a?.b, undefined); 97test('optional ?. null chain', null?.a?.b, undefined); 98 99let x = 5; 100test('++x prefix', ++x, 6); 101test('x++ postfix', x++, 6); 102test('after x++', x, 7); 103test('--x prefix', --x, 6); 104 105let y = 10; 106y += 5; 107test('+= assignment', y, 15); 108y -= 3; 109test('-= assignment', y, 12); 110y *= 2; 111test('*= assignment', y, 24); 112y /= 4; 113test('/= assignment', y, 6); 114 115summary();