interface.js 790 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 'use strict';
  2. var test = require('tape');
  3. var traverse = require('../');
  4. test('interface map', function (t) {
  5. var obj = { a: [5, 6, 7], b: { c: [8] } };
  6. t.same(
  7. traverse.paths(obj)
  8. .sort()
  9. .map(function (path) { return path.join('/'); })
  10. .slice(1)
  11. .join(' ')
  12. ,
  13. 'a a/0 a/1 a/2 b b/c b/c/0'
  14. );
  15. t.same(
  16. traverse.nodes(obj),
  17. [
  18. { a: [5, 6, 7], b: { c: [8] } },
  19. [5, 6, 7], 5, 6, 7,
  20. { c: [8] }, [8], 8,
  21. ]
  22. );
  23. t.same(
  24. traverse.map(obj, function (node) {
  25. if (typeof node === 'number') {
  26. return node + 1000;
  27. }
  28. if (Array.isArray(node)) {
  29. return node.join(' ');
  30. }
  31. return void undefined;
  32. }),
  33. { a: '5 6 7', b: { c: '8' } }
  34. );
  35. var nodes = 0;
  36. traverse.forEach(obj, function () { nodes += 1; });
  37. t.equal(nodes, 8);
  38. t.end();
  39. });