constant-compare-boolean-operands.js (1386B)
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 testBooleanConstantCompareFn(fn, i, expectedOnSuccess) { 9 assertEq(fn(i), expectedOnSuccess); 10 assertEq(fn(!i), !expectedOnSuccess); 11 12 // test with double values 13 assertEq(fn(0.5), !expectedOnSuccess); 14 assertEq(fn(-0.5), !expectedOnSuccess); 15 16 // test with string values 17 assertEq(fn(String(i)), !expectedOnSuccess); 18 assertEq(fn(String(!i)), !expectedOnSuccess); 19 20 // test with int values 21 assertEq(fn(1), !expectedOnSuccess); 22 assertEq(fn(0), !expectedOnSuccess); 23 assertEq(fn(-1), !expectedOnSuccess); 24 25 // test with BigInt values 26 assertEq(fn(BigInt(1)), !expectedOnSuccess); 27 28 // test with NaN 29 assertEq(fn(NaN), !expectedOnSuccess); 30 31 // test with Infinity 32 assertEq(fn(Infinity), !expectedOnSuccess); 33 assertEq(fn(-Infinity), !expectedOnSuccess); 34 35 // test with undefined 36 assertEq(fn(undefined), !expectedOnSuccess); 37 38 // test with null 39 assertEq(fn(null), !expectedOnSuccess); 40 41 // test with object values 42 assertEq(fn({}), !expectedOnSuccess); 43 assertEq(fn([]), !expectedOnSuccess); 44 } 45 46 testBooleanConstantCompareFn(makeConstantCompareFn(true, '==='), true, true); 47 testBooleanConstantCompareFn(makeConstantCompareFn(true, '!=='), true, false); 48 }