mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-27 17:53:49 +01:00 
			
		
		
		
	sourceRevisionAtLastExport: 33f2fb0e53d135f0ee17cfccd9d993eb2a6f47de targetRevisionAtLastExport: 31340cbd9add103f586d501b0c3354b7b182abc0
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Copyright 2015 the V8 project authors. All rights reserved.
 | |
| // Use of this source code is governed by a BSD-style license that can be
 | |
| // found in the LICENSE file.
 | |
| 
 | |
| // Flags: --allow-natives-syntax
 | |
| 
 | |
| var undetectable = %GetUndetectable();
 | |
| 
 | |
| var tests = [
 | |
|   true,        false,
 | |
|   false,       false,
 | |
|   null,        true,
 | |
|   void 0,      true,
 | |
|   0,           false,
 | |
|   0.0,         false,
 | |
|   -0,          false,
 | |
|   "",          false,
 | |
|   -1,          false,
 | |
|   -1.25,       false,
 | |
|   1,           false,
 | |
|   1.25,        false,
 | |
|   -2147483648, false,
 | |
|   2147483648,  false,
 | |
|   Infinity,    false,
 | |
|   -Infinity,   false,
 | |
|   NaN,         false
 | |
| ];
 | |
| 
 | |
| var func = (function eq(a) { return a == undetectable; });
 | |
| var left_funcs = [
 | |
|   (function eq_L0() { return true == undetectable; }),
 | |
|   (function eq_L1() { return false == undetectable; }),
 | |
|   (function eq_L2() { return null == undetectable; }),
 | |
|   (function eq_L3() { return void 0 == undetectable; }),
 | |
|   (function eq_L4() { return 0 == undetectable; }),
 | |
|   (function eq_L5() { return 0.0 == undetectable; }),
 | |
|   (function eq_L6() { return -0 == undetectable; }),
 | |
|   (function eq_L7() { return "" == undetectable; }),
 | |
|   (function eq_L8() { return -1 == undetectable; }),
 | |
|   (function eq_L9() { return -1.25 == undetectable; }),
 | |
|   (function eq_L10() { return 1 == undetectable; }),
 | |
|   (function eq_L11() { return 1.25 == undetectable; }),
 | |
|   (function eq_L12() { return -2147483648 == undetectable; }),
 | |
|   (function eq_L13() { return 2147483648 == undetectable; }),
 | |
|   (function eq_L14() { return Infinity == undetectable; }),
 | |
|   (function eq_L15() { return -Infinity == undetectable; }),
 | |
|   (function eq_L16() { return NaN == undetectable; })
 | |
| ];
 | |
| 
 | |
| var right_funcs = [
 | |
|   (function eq_R0() { return undetectable == true; }),
 | |
|   (function eq_R1() { return undetectable == false; }),
 | |
|   (function eq_R2() { return undetectable == null; }),
 | |
|   (function eq_R3() { return undetectable == void 0; }),
 | |
|   (function eq_R4() { return undetectable == 0; }),
 | |
|   (function eq_R5() { return undetectable == 0.0; }),
 | |
|   (function eq_R6() { return undetectable == -0; }),
 | |
|   (function eq_R7() { return undetectable == ""; }),
 | |
|   (function eq_R8() { return undetectable == -1; }),
 | |
|   (function eq_R9() { return undetectable == -1.25; }),
 | |
|   (function eq_R10() { return undetectable == 1; }),
 | |
|   (function eq_R11() { return undetectable == 1.25; }),
 | |
|   (function eq_R12() { return undetectable == -2147483648; }),
 | |
|   (function eq_R13() { return undetectable == 2147483648; }),
 | |
|   (function eq_R14() { return undetectable == Infinity; }),
 | |
|   (function eq_R15() { return undetectable == -Infinity; }),
 | |
|   (function eq_R16() { return undetectable == NaN; })
 | |
| ];
 | |
| 
 | |
| function test() {
 | |
|   for (var i = 0; i < tests.length; i += 2) {
 | |
|     var val = tests[i];
 | |
|     var eq = tests[i + 1];
 | |
| 
 | |
|     assertEquals(eq, val == undetectable);
 | |
|     assertEquals(eq, undetectable == val);
 | |
| 
 | |
|     assertFalse(val === undetectable);
 | |
|     assertFalse(undetectable === val);
 | |
| 
 | |
|     assertEquals(eq, left_funcs[i/2]());
 | |
|     assertEquals(eq, right_funcs[i/2]());
 | |
|   }
 | |
| 
 | |
|   assertTrue(undetectable == undetectable);
 | |
|   assertTrue(undetectable === undetectable);
 | |
| 
 | |
| }
 | |
| 
 | |
| for (var i = 0; i < 5; i++) {
 | |
|   test();
 | |
| }
 | |
| 
 | |
| 
 | |
| assertFalse(undetectable == %GetUndetectable());
 | |
| assertFalse(undetectable === %GetUndetectable());
 | |
| 
 | |
| 
 | |
| function test2(a, b) {
 | |
|   return a == b;
 | |
| }
 | |
| test2(0, 1);
 | |
| test2(undetectable, {});
 | |
| %OptimizeFunctionOnNextCall(test2);
 | |
| for (var i = 0; i < 5; ++i) {
 | |
|   assertFalse(test2(undetectable, %GetUndetectable()));
 | |
| }
 |