tree-sort
Version:
tree-sort data structure in node
54 lines (48 loc) • 2.38 kB
JavaScript
/*eslint-env mocha*/
/*eslint-disable strict*/
var assert = require('assert');
describe('tree', function(){
var Tree = require('../index.js');
it('should output mlr right', function(){
var tree = new Tree();
tree.add('2.1.1.1', '2.1.1');
tree.add('2.1.1.2', '2.1.1');
tree.add('1.1', '1');
tree.add('1.2', '1');
tree.add('1.3', '1');
tree.add('2.1', '2');
tree.add('2.1.1', '2.1');
tree.add('2.1.2', '2.1');
var ids = tree.mlr().join(',');
var exp = '1,1.1,1.2,1.3,2,2.1,2.1.1,2.1.1.1,2.1.1.2,2.1.2';
assert.equal(ids, exp);
});
it('should output hier right', function(){
var tree = new Tree();
tree.add('2.1.1.1', '2.1.1');
tree.add('2.1.1.2', '2.1.1');
tree.add('1.1', '1');
tree.add('1.2', '1');
tree.add('1.3', '1');
tree.add('2.1', '2');
tree.add('2.1.1', '2.1');
tree.add('2.1.2', '2.1');
var ids = tree.hier();
var exp = '[{"id":"1","children":[{"id":"1.1","children":[]},{"id":"1.2","children":[]},{"id":"1.3","children":[]}]},{"id":"2","children":[{"id":"2.1","children":[{"id":"2.1.1","children":[{"id":"2.1.1.1","children":[]},{"id":"2.1.1.2","children":[]}]},{"id":"2.1.2","children":[]}]}]}]';
assert.equal(JSON.stringify(ids), exp);
});
it('should output hier with custom cb right', function(){
var tree = new Tree();
tree.add('2.1.1.1', '2.1.1', null, {name: '2.1.1.1'});
tree.add('2.1.1.2', '2.1.1', null, {name: '2.1.1.2'});
tree.add('1.1', '1', null, {name: '1.1'});
tree.add('1.2', '1', null, {name: '1.2'});
tree.add('1.3', '1', null, {name: '1.3'});
tree.add('2.1', '2', null, {name: '2.1'});
tree.add('2.1.1', '2.1', null, {name: '2.1.1'});
tree.add('2.1.2', '2.1', null, {name: '2.1.2'});
var ids = tree.hier(null, false, function(id, seq, data){ return {id: id, name: data&&data.name}; });
var exp = '[{"id":"1","children":[{"id":"1.1","name":"1.1","children":[]},{"id":"1.2","name":"1.2","children":[]},{"id":"1.3","name":"1.3","children":[]}]},{"id":"2","children":[{"id":"2.1","name":"2.1","children":[{"id":"2.1.1","name":"2.1.1","children":[{"id":"2.1.1.1","name":"2.1.1.1","children":[]},{"id":"2.1.1.2","name":"2.1.1.2","children":[]}]},{"id":"2.1.2","name":"2.1.2","children":[]}]}]}]';
assert.equal(JSON.stringify(ids), exp);
});
});