UNPKG

zippa

Version:
69 lines (48 loc) 1.92 kB
'use strict'; var _chai = require('chai'); var _chai2 = _interopRequireDefault(_chai); var _sinonChai = require('sinon-chai'); var _sinonChai2 = _interopRequireDefault(_sinonChai); var _index = require('../index'); var _tree_zipper = require('./tree_zipper'); var _utils = require('./utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _chai2.default.use(_sinonChai2.default); var expect = _chai2.default.expect; var log = function log(node) { console.log('LOG NODE:', node.data); return node; }; describe('TreeZipper walk', function () { function getTree() { return new _tree_zipper.Node(1, [new _tree_zipper.Node(2, [new _tree_zipper.Node(4), new _tree_zipper.Node(5)]), new _tree_zipper.Node(3)]); } function incrementNode(node) { return new _tree_zipper.Node(node.data + 1, node.children); } it('postwalk works', function () { var z = _tree_zipper.TreeZipper.from(getTree()); var initialNumbers = (0, _utils.collect)(function (node) { return node.data; }, z); expect(initialNumbers).to.deep.equal([1, 2, 4, 5, 3]); // Do the incrementation. z = (0, _index.postWalk)(incrementNode, z); // Check result. var afterNumbers = (0, _utils.collect)(function (node) { return node.data; }, z); expect(afterNumbers).to.deep.equal([2, 3, 5, 6, 4]); }); it('prewalk is in correct order', function () { var z = _tree_zipper.TreeZipper.from(getTree()); function _gatherNumbers(listRef, node) { listRef.push(node.data); return node; } var treeNumbers = []; var gatherNumbers = _gatherNumbers.bind(null, treeNumbers); z = (0, _index.preWalk)(gatherNumbers, z); expect(treeNumbers).to.deep.equal([1, 2, 4, 5, 3]); }); });