1 | var assert = require('assert');
|
2 | var Traverse = require('../');
|
3 |
|
4 | exports['interface map'] = function () {
|
5 | var obj = { a : [ 5,6,7 ], b : { c : [8] } };
|
6 |
|
7 | assert.deepEqual(
|
8 | Traverse.paths(obj)
|
9 | .sort()
|
10 | .map(function (path) { return path.join('/') })
|
11 | .slice(1)
|
12 | .join(' ')
|
13 | ,
|
14 | 'a a/0 a/1 a/2 b b/c b/c/0'
|
15 | );
|
16 |
|
17 | assert.deepEqual(
|
18 | Traverse.nodes(obj),
|
19 | [
|
20 | { a: [ 5, 6, 7 ], b: { c: [ 8 ] } },
|
21 | [ 5, 6, 7 ], 5, 6, 7,
|
22 | { c: [ 8 ] }, [ 8 ], 8
|
23 | ]
|
24 | );
|
25 |
|
26 | assert.deepEqual(
|
27 | Traverse.map(obj, function (node) {
|
28 | if (typeof node == 'number') {
|
29 | return node + 1000;
|
30 | }
|
31 | else if (Array.isArray(node)) {
|
32 | return node.join(' ');
|
33 | }
|
34 | }),
|
35 | { a: '5 6 7', b: { c: '8' } }
|
36 | );
|
37 |
|
38 | var nodes = 0;
|
39 | Traverse.forEach(obj, function (node) { nodes ++ });
|
40 | assert.deepEqual(nodes, 8);
|
41 | };
|
42 |
|