typescript-ds-lib 0.2.2 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +4 -2
  2. package/dist/lib/binary-search-tree.d.ts +4 -0
  3. package/dist/lib/binary-search-tree.js +39 -0
  4. package/dist/lib/binary-search-tree.js.map +1 -1
  5. package/dist/lib/hash-table.js +33 -29
  6. package/dist/lib/hash-table.js.map +1 -1
  7. package/dist/lib/linked-list.d.ts +5 -0
  8. package/dist/lib/linked-list.js +66 -0
  9. package/dist/lib/linked-list.js.map +1 -1
  10. package/dist/lib/map.d.ts +2 -0
  11. package/dist/lib/map.js +6 -0
  12. package/dist/lib/map.js.map +1 -1
  13. package/dist/lib/matrix.d.ts +16 -5
  14. package/dist/lib/matrix.js +126 -0
  15. package/dist/lib/matrix.js.map +1 -1
  16. package/dist/lib/priority-queue.d.ts +1 -1
  17. package/dist/lib/priority-queue.js +16 -20
  18. package/dist/lib/priority-queue.js.map +1 -1
  19. package/dist/lib/red-black-tree.d.ts +2 -0
  20. package/dist/lib/red-black-tree.js +10 -0
  21. package/dist/lib/red-black-tree.js.map +1 -1
  22. package/dist/lib/set.d.ts +2 -0
  23. package/dist/lib/set.js +14 -0
  24. package/dist/lib/set.js.map +1 -1
  25. package/dist/tests/binary-search-tree.test.js +148 -103
  26. package/dist/tests/binary-search-tree.test.js.map +1 -1
  27. package/dist/tests/linked-list.test.js +324 -129
  28. package/dist/tests/linked-list.test.js.map +1 -1
  29. package/dist/tests/map.test.js +161 -45
  30. package/dist/tests/map.test.js.map +1 -1
  31. package/dist/tests/matrix.test.js +90 -0
  32. package/dist/tests/matrix.test.js.map +1 -1
  33. package/dist/tests/priority-queue.test.js +59 -0
  34. package/dist/tests/priority-queue.test.js.map +1 -1
  35. package/dist/tests/red-black-tree.test.js +151 -58
  36. package/dist/tests/red-black-tree.test.js.map +1 -1
  37. package/dist/tests/set.test.js +104 -60
  38. package/dist/tests/set.test.js.map +1 -1
  39. package/package.json +1 -1
@@ -6,144 +6,339 @@ describe('LinkedList', () => {
6
6
  beforeEach(() => {
7
7
  list = new linked_list_1.LinkedList();
8
8
  });
9
- test('should add elements to the end', () => {
10
- list.pushBack(1);
11
- list.pushBack(2);
12
- list.pushBack(3);
13
- expect(list.size()).toBe(3);
14
- expect(list.get(0)).toBe(1);
15
- expect(list.get(1)).toBe(2);
16
- expect(list.get(2)).toBe(3);
9
+ describe('Adding elements', () => {
10
+ test('should add elements to the end', () => {
11
+ list.pushBack(1);
12
+ list.pushBack(2);
13
+ list.pushBack(3);
14
+ expect(list.size()).toBe(3);
15
+ expect(list.get(0)).toBe(1);
16
+ expect(list.get(1)).toBe(2);
17
+ expect(list.get(2)).toBe(3);
18
+ });
19
+ test('should add elements to the front', () => {
20
+ list.pushFront(1);
21
+ list.pushFront(2);
22
+ list.pushFront(3);
23
+ expect(list.size()).toBe(3);
24
+ expect(list.get(0)).toBe(3);
25
+ expect(list.get(1)).toBe(2);
26
+ expect(list.get(2)).toBe(1);
27
+ });
17
28
  });
18
- test('should add elements to the front', () => {
19
- list.pushFront(1);
20
- list.pushFront(2);
21
- list.pushFront(3);
22
- expect(list.size()).toBe(3);
23
- expect(list.get(0)).toBe(3);
24
- expect(list.get(1)).toBe(2);
25
- expect(list.get(2)).toBe(1);
29
+ describe('Inserting elements', () => {
30
+ test('should insert at valid positions', () => {
31
+ list.pushBack(1);
32
+ list.pushBack(3);
33
+ expect(list.insert(2, 1)).toBe(true);
34
+ expect(list.get(0)).toBe(1);
35
+ expect(list.get(1)).toBe(2);
36
+ expect(list.get(2)).toBe(3);
37
+ });
38
+ test('should insert at beginning', () => {
39
+ list.pushBack(1);
40
+ list.pushBack(2);
41
+ expect(list.insert(0, 0)).toBe(true);
42
+ expect(list.get(0)).toBe(0);
43
+ expect(list.get(1)).toBe(1);
44
+ expect(list.get(2)).toBe(2);
45
+ });
46
+ test('should insert at end', () => {
47
+ list.pushBack(1);
48
+ list.pushBack(2);
49
+ expect(list.insert(3, 2)).toBe(true);
50
+ expect(list.get(0)).toBe(1);
51
+ expect(list.get(1)).toBe(2);
52
+ expect(list.get(2)).toBe(3);
53
+ });
54
+ test('should return false for invalid positions', () => {
55
+ expect(list.insert(1, -1)).toBe(false);
56
+ expect(list.insert(1, 1)).toBe(false);
57
+ });
26
58
  });
27
- test('should insert at valid positions', () => {
28
- list.pushBack(1);
29
- list.pushBack(3);
30
- expect(list.insert(2, 1)).toBe(true);
31
- expect(list.get(0)).toBe(1);
32
- expect(list.get(1)).toBe(2);
33
- expect(list.get(2)).toBe(3);
59
+ describe('Removing elements', () => {
60
+ describe('removeIf', () => {
61
+ test('should remove elements that satisfy the condition', () => {
62
+ list.pushBack(1);
63
+ list.pushBack(2);
64
+ list.pushBack(3);
65
+ expect(list.removeIf(x => x === 2)).toBe(true);
66
+ expect(list.size()).toBe(2);
67
+ expect(list.get(0)).toBe(1);
68
+ expect(list.get(1)).toBe(3);
69
+ });
70
+ test('should remove multiple elements that satisfy the condition', () => {
71
+ list.pushBack(1);
72
+ list.pushBack(2);
73
+ list.pushBack(2);
74
+ list.pushBack(3);
75
+ expect(list.removeIf(x => x === 2)).toBe(true);
76
+ expect(list.size()).toBe(3);
77
+ expect(list.get(0)).toBe(1);
78
+ expect(list.get(1)).toBe(2);
79
+ expect(list.get(2)).toBe(3);
80
+ });
81
+ test('should remove first element that satisfies condition', () => {
82
+ list.pushBack(1);
83
+ list.pushBack(2);
84
+ list.pushBack(3);
85
+ expect(list.removeIf(x => x === 1)).toBe(true);
86
+ expect(list.size()).toBe(2);
87
+ expect(list.get(0)).toBe(2);
88
+ expect(list.get(1)).toBe(3);
89
+ });
90
+ test('should remove last element that satisfies condition', () => {
91
+ list.pushBack(1);
92
+ list.pushBack(2);
93
+ list.pushBack(3);
94
+ expect(list.removeIf(x => x === 3)).toBe(true);
95
+ expect(list.size()).toBe(2);
96
+ expect(list.get(0)).toBe(1);
97
+ expect(list.get(1)).toBe(2);
98
+ });
99
+ test('should return false if no element satisfies the condition', () => {
100
+ list.pushBack(1);
101
+ list.pushBack(2);
102
+ expect(list.removeIf(x => x === 3)).toBe(false);
103
+ expect(list.size()).toBe(2);
104
+ });
105
+ });
106
+ describe('removeAt', () => {
107
+ test('should remove elements at valid positions', () => {
108
+ list.pushBack(1);
109
+ list.pushBack(2);
110
+ list.pushBack(3);
111
+ expect(list.removeAt(1)).toBe(2);
112
+ expect(list.size()).toBe(2);
113
+ expect(list.get(0)).toBe(1);
114
+ expect(list.get(1)).toBe(3);
115
+ });
116
+ test('should remove first element', () => {
117
+ list.pushBack(1);
118
+ list.pushBack(2);
119
+ list.pushBack(3);
120
+ expect(list.removeAt(0)).toBe(1);
121
+ expect(list.size()).toBe(2);
122
+ expect(list.get(0)).toBe(2);
123
+ expect(list.get(1)).toBe(3);
124
+ });
125
+ test('should remove last element', () => {
126
+ list.pushBack(1);
127
+ list.pushBack(2);
128
+ list.pushBack(3);
129
+ expect(list.removeAt(2)).toBe(3);
130
+ expect(list.size()).toBe(2);
131
+ expect(list.get(0)).toBe(1);
132
+ expect(list.get(1)).toBe(2);
133
+ });
134
+ test('should return undefined for invalid positions', () => {
135
+ list.pushBack(1);
136
+ expect(list.removeAt(-1)).toBeUndefined();
137
+ expect(list.removeAt(1)).toBeUndefined();
138
+ });
139
+ });
34
140
  });
35
- test('should return false for invalid positions', () => {
36
- expect(list.insert(1, -1)).toBe(false);
37
- expect(list.insert(1, 1)).toBe(false);
141
+ describe('Accessing elements', () => {
142
+ test('should return elements at valid positions', () => {
143
+ list.pushBack(1);
144
+ list.pushBack(2);
145
+ expect(list.get(0)).toBe(1);
146
+ expect(list.get(1)).toBe(2);
147
+ });
148
+ test('should return undefined for invalid positions', () => {
149
+ list.pushBack(1);
150
+ expect(list.get(-1)).toBeUndefined();
151
+ expect(list.get(1)).toBeUndefined();
152
+ });
38
153
  });
39
- test('should remove elements that satisfy the condition', () => {
40
- list.pushBack(1);
41
- list.pushBack(2);
42
- list.pushBack(3);
43
- expect(list.removeIf(x => x === 2)).toBe(true);
44
- expect(list.size()).toBe(2);
45
- expect(list.get(0)).toBe(1);
46
- expect(list.get(1)).toBe(3);
154
+ describe('List state', () => {
155
+ test('should return true for empty list', () => {
156
+ expect(list.isEmpty()).toBe(true);
157
+ });
158
+ test('should return false for non-empty list', () => {
159
+ list.pushBack(1);
160
+ expect(list.isEmpty()).toBe(false);
161
+ });
162
+ test('should return correct size', () => {
163
+ expect(list.size()).toBe(0);
164
+ list.pushBack(1);
165
+ expect(list.size()).toBe(1);
166
+ list.pushBack(2);
167
+ expect(list.size()).toBe(2);
168
+ });
169
+ test('should remove all elements', () => {
170
+ list.pushBack(1);
171
+ list.pushBack(2);
172
+ list.clear();
173
+ expect(list.isEmpty()).toBe(true);
174
+ expect(list.size()).toBe(0);
175
+ });
47
176
  });
48
- test('should return false if no element satisfies the condition', () => {
49
- list.pushBack(1);
50
- list.pushBack(2);
51
- expect(list.removeIf(x => x === 3)).toBe(false);
52
- expect(list.size()).toBe(2);
177
+ describe('Pop operations', () => {
178
+ describe('popBack', () => {
179
+ test('should pop elements from back', () => {
180
+ list.pushBack(1);
181
+ list.pushBack(2);
182
+ list.pushBack(3);
183
+ expect(list.popBack()).toBe(3);
184
+ expect(list.size()).toBe(2);
185
+ expect(list.popBack()).toBe(2);
186
+ expect(list.size()).toBe(1);
187
+ expect(list.popBack()).toBe(1);
188
+ expect(list.size()).toBe(0);
189
+ });
190
+ test('should return undefined when popping from empty list from back', () => {
191
+ expect(list.popBack()).toBeUndefined();
192
+ });
193
+ });
194
+ describe('popFront', () => {
195
+ test('should pop elements from front', () => {
196
+ list.pushBack(1);
197
+ list.pushBack(2);
198
+ list.pushBack(3);
199
+ expect(list.popFront()).toBe(1);
200
+ expect(list.size()).toBe(2);
201
+ expect(list.popFront()).toBe(2);
202
+ expect(list.size()).toBe(1);
203
+ expect(list.popFront()).toBe(3);
204
+ expect(list.size()).toBe(0);
205
+ });
206
+ test('should return undefined when popping from empty list from front', () => {
207
+ expect(list.popFront()).toBeUndefined();
208
+ });
209
+ });
53
210
  });
54
- test('should remove elements at valid positions', () => {
55
- list.pushBack(1);
56
- list.pushBack(2);
57
- list.pushBack(3);
58
- expect(list.removeAt(1)).toBe(2);
59
- expect(list.size()).toBe(2);
60
- expect(list.get(0)).toBe(1);
61
- expect(list.get(1)).toBe(3);
211
+ describe('Mixed operations', () => {
212
+ test('should handle mixed push and pop operations', () => {
213
+ list.pushBack(1);
214
+ list.pushFront(2);
215
+ expect(list.popBack()).toBe(1);
216
+ list.pushBack(3);
217
+ expect(list.popFront()).toBe(2);
218
+ expect(list.size()).toBe(1);
219
+ expect(list.get(0)).toBe(3);
220
+ });
221
+ test('should maintain correct order after multiple operations', () => {
222
+ list.pushBack(1);
223
+ list.pushFront(2);
224
+ list.pushBack(3);
225
+ list.pushFront(4);
226
+ expect(list.size()).toBe(4);
227
+ expect(list.get(0)).toBe(4);
228
+ expect(list.get(1)).toBe(2);
229
+ expect(list.get(2)).toBe(1);
230
+ expect(list.get(3)).toBe(3);
231
+ });
62
232
  });
63
- test('should return undefined for invalid positions', () => {
64
- list.pushBack(1);
65
- expect(list.removeAt(-1)).toBeUndefined();
66
- expect(list.removeAt(1)).toBeUndefined();
233
+ describe('Conditional insertion', () => {
234
+ describe('insertBefore', () => {
235
+ test('should insert before element that satisfies condition', () => {
236
+ list.pushBack(1);
237
+ list.pushBack(3);
238
+ list.pushBack(5);
239
+ expect(list.insertBefore(2, x => x === 3)).toBe(true);
240
+ expect(list.get(0)).toBe(1);
241
+ expect(list.get(1)).toBe(2);
242
+ expect(list.get(2)).toBe(3);
243
+ expect(list.get(3)).toBe(5);
244
+ });
245
+ test('should insert before first element when condition matches', () => {
246
+ list.pushBack(1);
247
+ list.pushBack(2);
248
+ expect(list.insertBefore(0, x => x === 1)).toBe(true);
249
+ expect(list.get(0)).toBe(0);
250
+ expect(list.get(1)).toBe(1);
251
+ expect(list.get(2)).toBe(2);
252
+ });
253
+ test('should return false when inserting before with no match', () => {
254
+ list.pushBack(1);
255
+ list.pushBack(2);
256
+ expect(list.insertBefore(3, x => x === 4)).toBe(false);
257
+ });
258
+ });
259
+ describe('insertAfter', () => {
260
+ test('should insert after element that satisfies condition', () => {
261
+ list.pushBack(1);
262
+ list.pushBack(3);
263
+ list.pushBack(5);
264
+ expect(list.insertAfter(4, x => x === 3)).toBe(true);
265
+ expect(list.get(0)).toBe(1);
266
+ expect(list.get(1)).toBe(3);
267
+ expect(list.get(2)).toBe(4);
268
+ expect(list.get(3)).toBe(5);
269
+ });
270
+ test('should insert after last element when condition matches', () => {
271
+ list.pushBack(1);
272
+ list.pushBack(2);
273
+ expect(list.insertAfter(3, x => x === 2)).toBe(true);
274
+ expect(list.get(0)).toBe(1);
275
+ expect(list.get(1)).toBe(2);
276
+ expect(list.get(2)).toBe(3);
277
+ });
278
+ test('should return false when inserting after with no match', () => {
279
+ list.pushBack(1);
280
+ list.pushBack(2);
281
+ expect(list.insertAfter(3, x => x === 4)).toBe(false);
282
+ });
283
+ });
67
284
  });
68
- test('should return elements at valid positions', () => {
69
- list.pushBack(1);
70
- list.pushBack(2);
71
- expect(list.get(0)).toBe(1);
72
- expect(list.get(1)).toBe(2);
285
+ describe('Accessing ends', () => {
286
+ describe('front', () => {
287
+ test('should return first element with front()', () => {
288
+ list.pushBack(1);
289
+ list.pushBack(2);
290
+ list.pushBack(3);
291
+ expect(list.front()).toBe(1);
292
+ expect(list.size()).toBe(3); // Check size hasn't changed
293
+ });
294
+ test('should return undefined when calling front() on empty list', () => {
295
+ expect(list.front()).toBeUndefined();
296
+ });
297
+ });
298
+ describe('back', () => {
299
+ test('should return last element with back()', () => {
300
+ list.pushBack(1);
301
+ list.pushBack(2);
302
+ list.pushBack(3);
303
+ expect(list.back()).toBe(3);
304
+ expect(list.size()).toBe(3); // Check size hasn't changed
305
+ });
306
+ test('should return undefined when calling back() on empty list', () => {
307
+ expect(list.back()).toBeUndefined();
308
+ });
309
+ });
73
310
  });
74
- test('should return undefined for invalid positions', () => {
75
- list.pushBack(1);
76
- expect(list.get(-1)).toBeUndefined();
77
- expect(list.get(1)).toBeUndefined();
78
- });
79
- test('should return true for empty list', () => {
80
- expect(list.isEmpty()).toBe(true);
81
- });
82
- test('should return false for non-empty list', () => {
83
- list.pushBack(1);
84
- expect(list.isEmpty()).toBe(false);
85
- });
86
- test('should return correct size', () => {
87
- expect(list.size()).toBe(0);
88
- list.pushBack(1);
89
- expect(list.size()).toBe(1);
90
- list.pushBack(2);
91
- expect(list.size()).toBe(2);
92
- });
93
- test('should remove all elements', () => {
94
- list.pushBack(1);
95
- list.pushBack(2);
96
- list.clear();
97
- expect(list.isEmpty()).toBe(true);
98
- expect(list.size()).toBe(0);
99
- });
100
- test('should pop elements from back', () => {
101
- list.pushBack(1);
102
- list.pushBack(2);
103
- list.pushBack(3);
104
- expect(list.popBack()).toBe(3);
105
- expect(list.size()).toBe(2);
106
- expect(list.popBack()).toBe(2);
107
- expect(list.size()).toBe(1);
108
- expect(list.popBack()).toBe(1);
109
- expect(list.size()).toBe(0);
110
- });
111
- test('should return undefined when popping from empty list from back', () => {
112
- expect(list.popBack()).toBeUndefined();
113
- });
114
- test('should pop elements from front', () => {
115
- list.pushBack(1);
116
- list.pushBack(2);
117
- list.pushBack(3);
118
- expect(list.popFront()).toBe(1);
119
- expect(list.size()).toBe(2);
120
- expect(list.popFront()).toBe(2);
121
- expect(list.size()).toBe(1);
122
- expect(list.popFront()).toBe(3);
123
- expect(list.size()).toBe(0);
124
- });
125
- test('should return undefined when popping from empty list from front', () => {
126
- expect(list.popFront()).toBeUndefined();
127
- });
128
- test('should handle mixed push and pop operations', () => {
129
- list.pushBack(1);
130
- list.pushFront(2);
131
- expect(list.popBack()).toBe(1);
132
- list.pushBack(3);
133
- expect(list.popFront()).toBe(2);
134
- expect(list.size()).toBe(1);
135
- expect(list.get(0)).toBe(3);
136
- });
137
- test('should maintain correct order after multiple operations', () => {
138
- list.pushBack(1);
139
- list.pushFront(2);
140
- list.pushBack(3);
141
- list.pushFront(4);
142
- expect(list.size()).toBe(4);
143
- expect(list.get(0)).toBe(4);
144
- expect(list.get(1)).toBe(2);
145
- expect(list.get(2)).toBe(1);
146
- expect(list.get(3)).toBe(3);
311
+ describe('Iteration', () => {
312
+ test('should iterate through all elements with forEach', () => {
313
+ list.pushBack(1);
314
+ list.pushBack(2);
315
+ list.pushBack(3);
316
+ const elements = [];
317
+ list.forEach(x => elements.push(x));
318
+ expect(elements).toEqual([1, 2, 3]);
319
+ });
320
+ test('should not call callback for empty list', () => {
321
+ const callback = jest.fn();
322
+ list.forEach(callback);
323
+ expect(callback).not.toHaveBeenCalled();
324
+ });
325
+ test('should call callback with correct elements in order', () => {
326
+ list.pushBack(1);
327
+ list.pushBack(2);
328
+ const callback = jest.fn();
329
+ list.forEach(callback);
330
+ expect(callback).toHaveBeenNthCalledWith(1, 1);
331
+ expect(callback).toHaveBeenNthCalledWith(2, 2);
332
+ expect(callback).toHaveBeenCalledTimes(2);
333
+ });
334
+ test('should allow callback to modify elements', () => {
335
+ list.pushBack(1);
336
+ list.pushBack(2);
337
+ list.pushBack(3);
338
+ const doubled = [];
339
+ list.forEach(x => doubled.push(x * 2));
340
+ expect(doubled).toEqual([2, 4, 6]);
341
+ });
147
342
  });
148
343
  });
149
344
  //# sourceMappingURL=linked-list.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linked-list.test.js","sourceRoot":"","sources":["../../tests/linked-list.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linked-list.test.js","sourceRoot":"","sources":["../../tests/linked-list.test.ts"],"names":[],"mappings":"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"}