NaN-as-key.js (914B)
1 /* 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/licenses/publicdomain/ 4 */ 5 6 // All NaNs must be treated as identical keys for Set. 7 8 // Avoid constant-folding that would happen were |undefined| to be used. 9 var key = -/a/g.missingProperty; 10 11 var s = new Set(); 12 s.add(key, 17); 13 assertEq(s.has(key), true); 14 assertEq(s.has(-key), true); 15 assertEq(s.has(NaN), true); 16 17 s.delete(-key); 18 assertEq(s.has(key), false); 19 assertEq(s.has(-key), false); 20 assertEq(s.has(NaN), false); 21 22 s.add(-key, 17); 23 assertEq(s.has(key), true); 24 assertEq(s.has(-key), true); 25 assertEq(s.has(NaN), true); 26 27 s.delete(NaN); 28 assertEq(s.has(key), false); 29 assertEq(s.has(-key), false); 30 assertEq(s.has(NaN), false); 31 32 s.add(NaN, 17); 33 assertEq(s.has(key), true); 34 assertEq(s.has(-key), true); 35 assertEq(s.has(NaN), true); 36 37 s.delete(key); 38 assertEq(s.has(key), false); 39 assertEq(s.has(-key), false); 40 assertEq(s.has(NaN), false);