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); };