保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
'use strict';
 
var test = require('tape');
var debug = require('object-inspect');
var forEach = require('foreach');
var has = require('has');
var v = require('es-value-fixtures');
 
var getSymbolDescription = require('../');
var getInferredName = require('../getInferredName');
 
test('getSymbolDescription', function (t) {
    t.test('no symbols', { skip: v.hasSymbols }, function (st) {
        st['throws'](
            getSymbolDescription,
            SyntaxError,
            'requires Symbol support'
        );
 
        st.end();
    });
 
    forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) {
        t['throws'](
            function () { getSymbolDescription(nonSymbol); },
            v.hasSymbols ? TypeError : SyntaxError,
            debug(nonSymbol) + ' is not a Symbol'
        );
    });
 
    t.test('with symbols', { skip: !v.hasSymbols }, function (st) {
        forEach(
            [
                [Symbol(), undefined],
                [Symbol(undefined), undefined],
                [Symbol(null), 'null'],
                [Symbol.iterator, 'Symbol.iterator'],
                [Symbol('foo'), 'foo']
            ],
            function (pair) {
                var sym = pair[0];
                var desc = pair[1];
                st.equal(getSymbolDescription(sym), desc, debug(sym) + ' description is ' + debug(desc));
            }
        );
 
        st.test('only possible when inference or native `Symbol.prototype.description` is supported', {
            skip: !getInferredName && !has(Symbol.prototype, 'description')
        }, function (s2t) {
            s2t.equal(getSymbolDescription(Symbol('')), '', 'Symbol("") description is ""');
 
            s2t.end();
        });
 
        st.test('only possible when global symbols are supported', {
            skip: !has(Symbol, 'for') || !has(Symbol, 'keyFor')
        }, function (s2t) {
            // eslint-disable-next-line no-restricted-properties
            s2t.equal(getSymbolDescription(Symbol['for']('')), '', 'Symbol.for("") description is ""');
            s2t.end();
        });
 
        st.end();
    });
 
    t.end();
});