/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ var cases = [ {sym: Symbol(), str: "Symbol()"}, {sym: Symbol("ok"), str: "Symbol(ok)"}, {sym: Symbol("\0"), str: "Symbol(\0)"}, {sym: Symbol.iterator, str: "Symbol(Symbol.iterator)"}, {sym: Symbol.for("dummies"), str: "Symbol(dummies)"} ]; // Symbol.prototype.toString works on both primitive symbols and Symbol // objects. for (var test of cases) { assertEq(test.sym.toString(), test.str); assertEq(Object(test.sym).toString(), test.str); } // Any other value throws. var nonsymbols = [ undefined, null, "not-ok", new String("still-not-ok"), {}, [] ]; for (var nonsym of nonsymbols) assertThrowsInstanceOf(() => Symbol.prototype.toString.call(nonsym), TypeError); if (typeof reportCompare === "function") reportCompare(0, 0);