summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_6/Symbol/well-known.js
blob: 8c5de127966f194a6effe1c2caf49fe5ac3b1ede (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/licenses/publicdomain/ */

var names = [
    "isConcatSpreadable",
    "iterator",
    "match",
    "replace",
    "search",
    "species",
    "hasInstance",
    "split",
    "toPrimitive",
    "unscopables"
];

for (var name of names) {
    // Well-known symbols exist.
    assertEq(typeof Symbol[name], "symbol");

    // They are never in the registry.
    assertEq(Symbol[name] !== Symbol.for("Symbol." + name), true);

    // They are shared across realms.
    if (typeof Realm === 'function')
        throw new Error("please update this test to use Realms");
    if (typeof newGlobal === 'function') {
        var g = newGlobal();
        assertEq(Symbol[name], g.Symbol[name]);
    }

    // Descriptor is all false.
    var desc = Object.getOwnPropertyDescriptor(Symbol, name);
    assertEq(typeof desc.value, "symbol");
    assertEq(desc.writable, false);
    assertEq(desc.enumerable, false);
    assertEq(desc.configurable, false);
}

if (typeof reportCompare === "function")
    reportCompare(0, 0);