forked from iam-peekay/JavaScript-Data-Structures
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHashTable_Test.js
More file actions
94 lines (85 loc) · 2.65 KB
/
HashTable_Test.js
File metadata and controls
94 lines (85 loc) · 2.65 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/**
* Created by Stefano on 31/03/14.
*/
test("HashTable - Insert test", function () {
var table = new HashTable(4);
for (var i = 0; i < 20; i++)
table.insert(i, "Insert # " + i);
for (var j = 0; j < 20; j++)
deepEqual(table.search(j), "Insert # " + j, "Insert " + j);
});
test("HashTable - Delete key test", function () {
var table = new HashTable(4);
for (var i = 0; i < 20; i++)
table.insert(i, i);
table.deleteKey(6);
deepEqual(table.search(6), undefined, "Delete key");
});
test("HashTable - Delete all key test", function () {
var table = new HashTable(4);
for (var i = 0; i < 100; i++)
table.insert(i % 20, {value: i % 20});
table.deleteAllKey(13);
deepEqual(table.searchAll(13).length, 0, "Delete all key");
});
test("HashTable - Get keys test", function () {
var table = new HashTable(50);
var keys = [];
for (var i = 0; i < 100; i++) {
table.insert(i, {value: i % 20});
keys.push(i);
}
keys.sort();
var storedKeys = table.getKeys().sort();
deepEqual(storedKeys, keys, "Get stored keys");
});
test("HashTable - Get items test", function () {
var table = new HashTable(50);
var items = [];
for (var i = 0; i < 100; i++) {
table.insert(i, i % 20);
items.push(i % 20);
}
items.sort();
var storedKeys = table.getItems().sort();
deepEqual(storedKeys, items, "Get stored items");
});
test("HashTable - Contains key test", function () {
var table = new HashTable(50);
for (var i = 0; i < 100; i++)
table.insert(i, i % 20);
deepEqual(table.containsKey(4), true, "Contains key");
deepEqual(table.containsKey(200), false, "Not contains key");
var callback = function (k) {
return k > 20;
};
deepEqual(table.containsKey(0, callback), true, "Contains key greater than 20");
callback = function (k) {
return k < 0;
};
deepEqual(table.containsKey(0, callback), false, "Not contains negative key");
});
test("HashTable - Clear test", function () {
var table = new HashTable(50);
for (var i = 0; i < 100; i++)
table.insert(i, i % 20);
deepEqual(table.isEmpty(), false, "Before clear");
table.clear();
deepEqual(table.isEmpty(), true, "After clear");
});
test("HashTable - Get number of keys test", function () {
var table = new HashTable(50);
deepEqual(table.getNumberOfKeys(), 0, "Before insertion");
for (var i = 0; i < 100; i++)
table.insert(i, i % 20);
deepEqual(table.getNumberOfKeys(), 100, "After insertion");
});
test("HashTable - Is empty test", function () {
var table = new HashTable(50);
deepEqual(table.isEmpty(), true, "Before insertion");
for (var i = 0; i < 100; i++)
table.insert(i, i % 20);
deepEqual(table.isEmpty(), false, "Before clear");
table.clear();
deepEqual(table.isEmpty(), true, "After clear");
});