summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Symbol/equality.js
blob: eaa091ba43f25476c2f323b7d1318381bf13c278 (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
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/licenses/publicdomain/ */

// Symbol.for returns the same symbol whenever the same argument is passed.
assertEq(Symbol.for("q") === Symbol.for("q"), true);

// Several distinct Symbol values.
var symbols = [
    Symbol(),
    Symbol("Symbol.iterator"),
    Symbol("Symbol.iterator"),  // distinct new symbol with the same description
    Symbol.for("Symbol.iterator"),
    Symbol.iterator
];

// Distinct symbols are never equal to each other, even if they have the same
// description.
for (var i = 0; i < symbols.length; i++) {
    for (var j = i; j < symbols.length; j++) {
        var expected = (i === j);
        assertEq(symbols[i] == symbols[j], expected);
        assertEq(symbols[i] != symbols[j], !expected);
        assertEq(symbols[i] === symbols[j], expected);
        assertEq(symbols[i] !== symbols[j], !expected);
        assertEq(Object.is(symbols[i], symbols[j]), expected);
    }
}

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