|
@@ -0,0 +1,129 @@
|
|
|
+/**
|
|
|
+ * Created by Mai on 2017/4/1.
|
|
|
+ */
|
|
|
+
|
|
|
+const fs = require('fs');
|
|
|
+var test = require('tape');
|
|
|
+var idTreeUtil = null;
|
|
|
+var idTreeSetting = {
|
|
|
+ id: 'ID',
|
|
|
+ pid: 'ParentID',
|
|
|
+ nid: 'NextSiblingID',
|
|
|
+ rootId: -1,
|
|
|
+ autoUpdate: false
|
|
|
+};
|
|
|
+var testTreeData = null;
|
|
|
+var testTree = null;
|
|
|
+
|
|
|
+var getKeyIDs = function (node) {
|
|
|
+ var data = [];
|
|
|
+ if (node) {
|
|
|
+ data.push(node.getID());
|
|
|
+ data.push(node.getParentID());
|
|
|
+ data.push(node.getNextSiblingID());
|
|
|
+ } else {
|
|
|
+ for (var i = 1; i <= 3; i++) {
|
|
|
+ data.push(-1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+}
|
|
|
+
|
|
|
+test('loading idTree Module: ', function (t) {
|
|
|
+ var idTreeCode = fs.readFileSync(__dirname + '../../../../public/web/idTree.js', 'utf8', 'r');
|
|
|
+ eval(idTreeCode);
|
|
|
+ idTreeUtil = idTree;
|
|
|
+ t.pass('pass for loading idTree Module');
|
|
|
+ t.end();
|
|
|
+});
|
|
|
+
|
|
|
+test('loading Testing Data: ', function (t) {
|
|
|
+ var idTreeDataCode = fs.readFileSync(__dirname + '../../../tmp_data/data_15690.js', 'utf8', 'r');
|
|
|
+ eval(idTreeDataCode);
|
|
|
+ testTreeData = datas;
|
|
|
+ t.pass('pass for loading Testing Data');
|
|
|
+ t.end();
|
|
|
+});
|
|
|
+
|
|
|
+test('idTree loading Testing Data: ', function (t) {
|
|
|
+ t.plan(1);
|
|
|
+ testTree = idTreeUtil.createNew(idTreeSetting);
|
|
|
+ testTree.loadDatas(testTreeData);
|
|
|
+ t.equal(testTree.count(), testTreeData.length);
|
|
|
+ t.end();
|
|
|
+});
|
|
|
+
|
|
|
+test('upMove Node: ', function (t) {
|
|
|
+ t.plan(3);
|
|
|
+ var testNodeID = 13431;
|
|
|
+ var testResult = [[13429, 13427, 13431], [13430, 13427, 13432], [13431, 13427, 13430]];
|
|
|
+ var node = testTree.findNode(testNodeID), pre = node.preSibling, prePre = pre ? pre.preSibling : null;
|
|
|
+ node.upMove();
|
|
|
+ t.deepEqual(getKeyIDs(prePre), testResult[0]);
|
|
|
+ t.deepEqual(getKeyIDs(pre), testResult[1]);
|
|
|
+ t.deepEqual(getKeyIDs(node), testResult[2]);
|
|
|
+ t.end();
|
|
|
+});
|
|
|
+
|
|
|
+test('downMove Node: ', function (t) {
|
|
|
+ t.plan(3);
|
|
|
+ var testNodeID = 13431;
|
|
|
+ var testResult = [[13429, 13427, 13430], [13430, 13427, 13431], [13431, 13427, 13432]];
|
|
|
+ var node = testTree.findNode(testNodeID), pre = node.preSibling, next = node.nextSibling;
|
|
|
+ node.downMove();
|
|
|
+ t.deepEqual(getKeyIDs(pre), testResult[0]);
|
|
|
+ t.deepEqual(getKeyIDs(next), testResult[1]);
|
|
|
+ t.deepEqual(getKeyIDs(node), testResult[2]);
|
|
|
+ t.end();
|
|
|
+});
|
|
|
+
|
|
|
+test('upLevel Node: ', function (t) {
|
|
|
+ t.plan(4);
|
|
|
+ var testNodeID = 13431;
|
|
|
+ var node = testTree.findNode(testNodeID), orgPre = node.preSibling, orgNext = node.nextSibling, orgParent = node.parent;
|
|
|
+ var orgChildrenCount = node.children.length, orgNextSiblingCount = orgParent.children.length - node.siblingIndex() - 1;
|
|
|
+ node.upLevel();
|
|
|
+ t.equal(orgNext.parent, node);
|
|
|
+ t.equal(node.children.length, orgChildrenCount + orgNextSiblingCount);
|
|
|
+ t.equal(orgPre.nextSibling, null);
|
|
|
+ t.equal(orgParent.nextSibling, node);
|
|
|
+ t.end();
|
|
|
+});
|
|
|
+
|
|
|
+test('downLevel Node: ', function (t) {
|
|
|
+ t.plan(4);
|
|
|
+ var testNodeID = 13431;
|
|
|
+ var node = testTree.findNode(testNodeID), orgPre = node.preSibling, orgNext = node.nextSibling, orgParent = node.parent;
|
|
|
+ var newPre = orgPre.lastChild();
|
|
|
+ node.downLevel();
|
|
|
+ t.equal(orgPre.nextSibling, orgNext);
|
|
|
+ t.equal(orgPre.lastChild(), node);
|
|
|
+ t.equal(newPre.nextSibling, node);
|
|
|
+ t.equal(node.nextSibling, null);
|
|
|
+ t.end();
|
|
|
+});
|
|
|
+
|
|
|
+test('insert Node: ', function (t) {
|
|
|
+ t.plan(5);
|
|
|
+ var parent = testTree.findNode(13574), next = testTree.findNode(13598);
|
|
|
+ var orgTreeCount = testTree.count(), orgParentChildrenCount = parent.children.length, orgNextPre = next.preSibling;
|
|
|
+ var newNode = testTree.insert(parent.getID(), next.getID());
|
|
|
+ t.equal(testTree.count(), orgTreeCount + 1);
|
|
|
+ t.equal(parent.children.length, orgParentChildrenCount + 1);
|
|
|
+ t.equal(orgNextPre.nextSibling, newNode);
|
|
|
+ t.equal(newNode.parent, parent);
|
|
|
+ t.equal(newNode.nextSibling, next);
|
|
|
+ t.end();
|
|
|
+});
|
|
|
+
|
|
|
+test('delete Node: ', function (t) {
|
|
|
+ t.plan(3);
|
|
|
+ var testNodeID = 13598;
|
|
|
+ var node = testTree.findNode(testNodeID), orgParent = node.parent, orgPre = node.preSibling, orgNext = node.nextSibling;
|
|
|
+ var orgTreeCount = testTree.count(), orgParentChildrenCount = orgParent.children.length;
|
|
|
+ testTree.delete(node);
|
|
|
+ t.equal(testTree.count(), orgTreeCount - node.posterityCount() - 1);
|
|
|
+ t.equal(orgParent.children.length, orgParentChildrenCount - 1);
|
|
|
+ t.equal(orgPre.nextSibling, orgNext);
|
|
|
+ t.end();
|
|
|
+});
|