From ff10add756928f4ca263159bec1fde409194bfe9 Mon Sep 17 00:00:00 2001 From: haad Date: Mon, 29 Feb 2016 11:54:07 +0100 Subject: [PATCH] Add equals() and hashChild() --- src/list/Node.js | 12 ++++++++++++ test/list-node-tests.js | 27 +++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/list/Node.js b/src/list/Node.js index 6db8ddd..310e774 100644 --- a/src/list/Node.js +++ b/src/list/Node.js @@ -16,6 +16,18 @@ class Node { toJson() { return { id: this.id, seq: this.seq, ver: this.ver, data: this.data, next: this.next } } + + static equals(a, b) { + return a.id == b.id && a.seq == b.seq && a.ver == b.ver; + } + + static hasChild(a, b) { + for(let i = 0; i < a.next.length; i ++) { + if(b.compactId === a.next[i]) + return true; + } + return false; + } } module.exports = Node; diff --git a/test/list-node-tests.js b/test/list-node-tests.js index da5703d..4c9d075 100644 --- a/test/list-node-tests.js +++ b/test/list-node-tests.js @@ -37,4 +37,31 @@ describe('Node', () => { }); }); + describe('equals', () => { + it('check if nodes are equal', (done) => { + const node1 = new Node('A', 0, 0); + const node2 = new Node('A', 0, 0); + const node3 = new Node('A', 1, 1); + const node4 = new Node('B', 123, 456); + assert.equal(Node.equals(node1, node1), true); + assert.equal(Node.equals(node1, node2), true); + assert.equal(Node.equals(node1, node3), false); + assert.equal(Node.equals(node1, node4), false); + assert.equal(Node.equals(node3, node4), false); + done(); + }); + }); + + describe('hasChild', () => { + it('finds the child reference', (done) => { + const a = new Node('A', 0, 0); + const b = new Node('B', 0, 0, "hello", [a]); + const c = new Node('C', 0, 0, "hello", [a, b]); + assert.equal(Node.hasChild(b, a), true) + assert.equal(Node.hasChild(c, a), true) + assert.equal(Node.hasChild(c, b), true) + done(); + }); + }); + });