zippa
Version:
A Generic Zipper Library
61 lines (43 loc) • 1.57 kB
JavaScript
;
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');
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(node.data);
};
describe('TreeZipper', 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 dfswalk(z) {
var _z = z;
var result = [];
while (!_z.isEnd()) {
result.push(_z.value().data);
_z = _z.next();
}
return result;
}
it('DFS iteration works', function () {
var z = _tree_zipper.TreeZipper.from(getTree());
var iterationOrder = [];
while (!z.isEnd()) {
iterationOrder.push(z.value().data);
z = z.next();
}
var expected = [1, 2, 4, 5, 3];
expect(iterationOrder).to.deep.equal(expected);
});
it('replacing works', function () {
var z = _tree_zipper.TreeZipper.from(getTree());
var changedZipper = z.down().rightmost().remove().root();
var dfsorder = dfswalk(changedZipper);
expect(dfsorder).to.deep.equal([1, 2, 4, 5]);
});
});