forked from SiZapPaaiGwat/javascript-algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsplay-tree.spec.js
More file actions
80 lines (77 loc) · 2.4 KB
/
splay-tree.spec.js
File metadata and controls
80 lines (77 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
'use strict';
var mod = require('../../src/data-structures/splay-tree.js');
var Node = mod.Node;
var SplayTree = mod.SplayTree;
describe('Node', function () {
it('should be a constructor function', function () {
expect(typeof Node).toBe('function');
});
it('should be a construct properly', function () {
var node = new Node(10, null, null, null);
expect(node.value).toBe(10);
expect(node._left).toBe(null);
expect(node._right).toBe(null);
expect(node._parent).toBe(null);
});
it('should reference children/parent properly', function () {
var root = new Node(10, null, null, null);
var left = new Node(5, null, null, root);
var right = new Node(15, null, null, root);
root._left = left;
root._right = right;
expect(root.value).toBe(10);
expect(root._left).toBe(left);
expect(root._right).toBe(right);
expect(root._parent).toBe(null);
});
});
describe('SplayTree', function () {
it('should be a constructor function', function () {
expect(typeof SplayTree).toBe('function');
});
it('should start with null root', function () {
expect(new SplayTree()._root).toBe(null);
});
it('should insert and remove correctly', function () {
var sTree = new SplayTree();
sTree.insert(10);
sTree.remove(10);
expect(sTree._root).toBe(null);
});
it('should splay correctly upon inserts', function () {
var sTree = new SplayTree();
sTree.insert(10);
sTree.insert(5);
sTree.insert(15);
sTree.insert(7);
sTree.insert(12);
expect(sTree._root.value).toBe(12);
expect(sTree._root._left.value).toBe(7);
expect(sTree._root._right.value).toBe(15);
});
it('should splay correctly upon search', function () {
var sTree = new SplayTree();
sTree.insert(10);
sTree.insert(5);
sTree.insert(15);
sTree.insert(7);
sTree.insert(12);
sTree.search(5);
expect(sTree._root.value).toBe(5);
expect(sTree._root._right.value).toBe(7);
expect(sTree._root._right._right.value).toBe(12);
});
it('should splay correctly upon remove', function () {
var sTree = new SplayTree();
sTree.insert(10);
sTree.insert(5);
sTree.insert(15);
sTree.insert(7);
sTree.insert(12);
sTree.remove(10);
expect(sTree._root.value).toBe(7);
expect(sTree._root._left.value).toBe(5);
expect(sTree._root._right.value).toBe(12);
expect(sTree._root._right._right.value).toBe(15);
});
});