[d24f17c] | 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 | });
|
---|