| /* Any copyright is dedicated to the Public Domain. |
| * http://creativecommons.org/licenses/publicdomain/ */ |
| |
| // Symbol.for called twice with the same argument returns the same symbol. |
| assertEq(Symbol.for("ponies"), Symbol.for("ponies")); |
| |
| // Called twice with equal strings: still the same result. |
| var one = Array(64+1).join("x"); |
| var two = Array(8+1).join(Array(8+1).join("x")); |
| assertEq(Symbol.for(one), Symbol.for(two)); |
| |
| // Symbols created by calling Symbol() are not in the symbol registry. |
| var sym = Symbol("123"); |
| assertEq(Symbol.for("123") !== sym, true); |
| |
| // Empty string is fine. |
| assertEq(typeof Symbol.for(""), "symbol"); |
| |
| // Primitive arguments. |
| assertEq(Symbol.for(3), Symbol.for("3")); |
| assertEq(Symbol.for(null), Symbol.for("null")); |
| assertEq(Symbol.for(undefined), Symbol.for("undefined")); |
| assertEq(Symbol.for(), Symbol.for("undefined")); |
| |
| // Symbol.for ignores the 'this' value. |
| var foo = Symbol.for("foo") |
| assertEq(Symbol.for.call(String, "foo"), foo); |
| assertEq(Symbol.for.call(3.14, "foo"), foo); |
| |
| if (typeof reportCompare === "function") |
| reportCompare(0, 0); |