heyujie
2021-05-20 6ebdefb4a5b2be82a8c452c0bb4624f3d85a17b7
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
"use strict";
 
var d              = require("d")
  , isSymbol       = require("../is-symbol")
  , defineProperty = Object.defineProperty;
 
module.exports = function (t, a) {
    var symbol = t("test"), obj = {};
    defineProperty(obj, symbol, d("foo"));
    a(obj.test, undefined, "Name");
    a(obj[symbol], "foo", "Get");
    a(obj instanceof t, false);
 
    a(isSymbol(symbol), true, "Symbol");
    a(isSymbol(t.iterator), true, "iterator");
    a(isSymbol(t.toStringTag), true, "toStringTag");
 
    obj = {};
    obj[symbol] = "foo";
    if (typeof symbol !== "symbol") {
        a.deep(Object.getOwnPropertyDescriptor(obj, symbol), {
            configurable: true,
            enumerable: false,
            value: "foo",
            writable: true
        });
    }
    symbol = t.for("marko");
    a(isSymbol(symbol), true);
    a(t.for("marko"), symbol);
    a(t.keyFor(symbol), "marko");
};