constant-compare-null-undefined.js (1347B)
1 load(libdir + "asserts.js"); 2 3 function makeConstantCompareFn(val, op) { 4 return new Function('val', `return val ${op} ${val};`); 5 } 6 7 { 8 function testConstantCompareFn(fn, i, expectedOnSuccess) { 9 assertEq(fn(i), expectedOnSuccess); 10 11 // test with double values 12 assertEq(fn(0.5), !expectedOnSuccess); 13 assertEq(fn(-0.5), !expectedOnSuccess); 14 15 // test with string values 16 assertEq(fn(String(i)), !expectedOnSuccess); 17 assertEq(fn(String(!i)), !expectedOnSuccess); 18 19 // test with int values 20 assertEq(fn(1), !expectedOnSuccess); 21 assertEq(fn(0), !expectedOnSuccess); 22 assertEq(fn(-1), !expectedOnSuccess); 23 24 // test with BigInt values 25 assertEq(fn(BigInt(1)), !expectedOnSuccess); 26 27 // test with NaN 28 assertEq(fn(NaN), !expectedOnSuccess); 29 30 // test with Infinity 31 assertEq(fn(Infinity), !expectedOnSuccess); 32 assertEq(fn(-Infinity), !expectedOnSuccess); 33 34 // test with object values 35 assertEq(fn({}), !expectedOnSuccess); 36 assertEq(fn([]), !expectedOnSuccess); 37 } 38 39 testConstantCompareFn(makeConstantCompareFn(null, '==='), null, true); 40 testConstantCompareFn(makeConstantCompareFn(null, '!=='), null, false); 41 42 testConstantCompareFn(makeConstantCompareFn(undefined, '==='), undefined, true); 43 testConstantCompareFn(makeConstantCompareFn(undefined, '!=='), undefined, false); 44 }