1 | 'use strict';
|
---|
2 |
|
---|
3 | var test = require('tape');
|
---|
4 | var v = require('es-value-fixtures');
|
---|
5 | var traverse = require('../');
|
---|
6 |
|
---|
7 | test('has', function (t) {
|
---|
8 | var obj = { a: 2, b: [4, 5, { c: 6 }] };
|
---|
9 |
|
---|
10 | t.equal(traverse(obj).has(['b', 2, 'c']), true);
|
---|
11 | t.equal(traverse(obj).has(['b', 2, 'c', 0]), false);
|
---|
12 | t.equal(traverse(obj).has(['b', 2, 'd']), false);
|
---|
13 | t.equal(traverse(obj).has([]), true);
|
---|
14 | t.equal(traverse(obj).has(['a']), true);
|
---|
15 | t.equal(traverse(obj).has(['a', 2]), false);
|
---|
16 |
|
---|
17 | t.test('symbols', { skip: !v.hasSymbols }, function (st) {
|
---|
18 | /* eslint no-restricted-properties: 1 */
|
---|
19 | var globalSymbol = Symbol.for('d');
|
---|
20 | var localSymbol = Symbol('e');
|
---|
21 |
|
---|
22 | obj[globalSymbol] = {};
|
---|
23 | obj[globalSymbol][localSymbol] = 7;
|
---|
24 | obj[localSymbol] = 8;
|
---|
25 |
|
---|
26 | st.equal(traverse(obj).has([globalSymbol]), true);
|
---|
27 | st.equal(traverse(obj).has([globalSymbol, globalSymbol]), false);
|
---|
28 | st.equal(traverse(obj).has([globalSymbol, localSymbol]), true);
|
---|
29 | st.equal(traverse(obj).has([localSymbol]), true);
|
---|
30 | st.equal(traverse(obj).has([localSymbol]), true);
|
---|
31 | st.equal(traverse(obj).has([Symbol('e')]), false);
|
---|
32 | st.equal(traverse(obj).has([Symbol.for('d')]), true);
|
---|
33 | st.equal(traverse(obj).has([Symbol.for('e')]), false);
|
---|
34 |
|
---|
35 | st.end();
|
---|
36 | });
|
---|
37 |
|
---|
38 | t.end();
|
---|
39 | });
|
---|