You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.0 KiB
42 lines
1.0 KiB
var assert = require('assert'); |
|
var Traverse = require('traverse'); |
|
|
|
exports['interface map'] = function () { |
|
var obj = { a : [ 5,6,7 ], b : { c : [8] } }; |
|
|
|
assert.deepEqual( |
|
Traverse.paths(obj) |
|
.sort() |
|
.map(function (path) { return path.join('/') }) |
|
.slice(1) |
|
.join(' ') |
|
, |
|
'a a/0 a/1 a/2 b b/c b/c/0' |
|
); |
|
|
|
assert.deepEqual( |
|
Traverse.nodes(obj), |
|
[ |
|
{ a: [ 5, 6, 7 ], b: { c: [ 8 ] } }, |
|
[ 5, 6, 7 ], 5, 6, 7, |
|
{ c: [ 8 ] }, [ 8 ], 8 |
|
] |
|
); |
|
|
|
assert.deepEqual( |
|
Traverse.map(obj, function (node) { |
|
if (typeof node == 'number') { |
|
return node + 1000; |
|
} |
|
else if (Array.isArray(node)) { |
|
return node.join(' '); |
|
} |
|
}), |
|
{ a: '5 6 7', b: { c: '8' } } |
|
); |
|
|
|
var nodes = 0; |
|
Traverse.forEach(obj, function (node) { nodes ++ }); |
|
assert.deepEqual(nodes, 8); |
|
}; |
|
|
|
|