typescript-ds-lib 0.0.1 → 0.1.1

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 (46) hide show
  1. package/README.md +33 -0
  2. package/dist/index.d.ts +8 -1
  3. package/dist/index.js +30 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/binary-search-tree.d.ts +40 -0
  6. package/dist/lib/binary-search-tree.js +155 -0
  7. package/dist/lib/binary-search-tree.js.map +1 -0
  8. package/dist/lib/deque.d.ts +41 -0
  9. package/dist/lib/deque.js +65 -0
  10. package/dist/lib/deque.js.map +1 -0
  11. package/dist/lib/linked-list.d.ts +43 -0
  12. package/dist/lib/linked-list.js +172 -0
  13. package/dist/lib/linked-list.js.map +1 -0
  14. package/dist/lib/priority-queue.d.ts +32 -0
  15. package/dist/lib/priority-queue.js +61 -0
  16. package/dist/lib/priority-queue.js.map +1 -0
  17. package/dist/lib/queue.d.ts +29 -0
  18. package/dist/lib/queue.js +47 -0
  19. package/dist/lib/queue.js.map +1 -0
  20. package/dist/lib/set.d.ts +29 -0
  21. package/dist/lib/set.js +50 -0
  22. package/dist/lib/set.js.map +1 -0
  23. package/dist/lib/stack.d.ts +2 -1
  24. package/dist/lib/stack.js.map +1 -1
  25. package/dist/tests/binary-search-tree.test.d.ts +1 -0
  26. package/dist/tests/binary-search-tree.test.js +75 -0
  27. package/dist/tests/binary-search-tree.test.js.map +1 -0
  28. package/dist/tests/deque.test.d.ts +1 -0
  29. package/dist/tests/deque.test.js +78 -0
  30. package/dist/tests/deque.test.js.map +1 -0
  31. package/dist/tests/linked-list.test.d.ts +1 -0
  32. package/dist/tests/linked-list.test.js +101 -0
  33. package/dist/tests/linked-list.test.js.map +1 -0
  34. package/dist/tests/priority-queue.test.d.ts +1 -0
  35. package/dist/tests/priority-queue.test.js +59 -0
  36. package/dist/tests/priority-queue.test.js.map +1 -0
  37. package/dist/tests/queue.test.d.ts +1 -0
  38. package/dist/tests/queue.test.js +48 -0
  39. package/dist/tests/queue.test.js.map +1 -0
  40. package/dist/tests/set.test.d.ts +1 -0
  41. package/dist/tests/set.test.js +75 -0
  42. package/dist/tests/set.test.js.map +1 -0
  43. package/dist/types/index.d.ts +64 -0
  44. package/dist/types/index.js +3 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/package.json +2 -4
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PriorityQueue = void 0;
4
+ class PriorityQueue {
5
+ items;
6
+ constructor() {
7
+ this.items = [];
8
+ }
9
+ /**
10
+ * Adds an element with a priority to the queue.
11
+ * Lower priority numbers have higher precedence.
12
+ */
13
+ push(element, priority) {
14
+ const item = { element, priority };
15
+ let added = false;
16
+ for (let i = 0; i < this.items.length; i++) {
17
+ if (priority > this.items[i].priority) {
18
+ this.items.splice(i, 0, item);
19
+ added = true;
20
+ break;
21
+ }
22
+ }
23
+ if (!added)
24
+ this.items.push(item);
25
+ }
26
+ /**
27
+ * Removes and returns the highest priority element from the queue,
28
+ * or undefined if queue is empty.
29
+ */
30
+ pop() {
31
+ const item = this.items.shift();
32
+ return item?.element;
33
+ }
34
+ /**
35
+ * Returns the highest priority element without removing it,
36
+ * or undefined if queue is empty.
37
+ */
38
+ front() {
39
+ return this.items[0]?.element;
40
+ }
41
+ /**
42
+ * Checks if the queue is empty. Returns true if empty, false otherwise.
43
+ */
44
+ empty() {
45
+ return this.items.length === 0;
46
+ }
47
+ /**
48
+ * Returns the number of elements in the queue.
49
+ */
50
+ size() {
51
+ return this.items.length;
52
+ }
53
+ /**
54
+ * Removes all elements from the queue.
55
+ */
56
+ clear() {
57
+ this.items = [];
58
+ }
59
+ }
60
+ exports.PriorityQueue = PriorityQueue;
61
+ //# sourceMappingURL=priority-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-queue.js","sourceRoot":"","sources":["../../lib/priority-queue.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IAChB,KAAK,CAAqC;IAElD;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,OAAU,EAAE,QAAgB;QAC/B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC9B,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,IAAI,EAAE,OAAO,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AA7DD,sCA6DC"}
@@ -0,0 +1,29 @@
1
+ import { QueueTy } from '../types';
2
+ export declare class Queue<T> implements QueueTy<T> {
3
+ private items;
4
+ constructor();
5
+ /**
6
+ * Adds an element to the back of the queue.
7
+ */
8
+ push(element: T): void;
9
+ /**
10
+ * Removes and returns the front element from the queue, or undefined if queue is empty.
11
+ */
12
+ pop(): T | undefined;
13
+ /**
14
+ * Returns the front element of the queue without removing it, or undefined if queue is empty.
15
+ */
16
+ front(): T | undefined;
17
+ /**
18
+ * Checks if the queue is empty. Returns true if the queue is empty, false otherwise.
19
+ */
20
+ empty(): boolean;
21
+ /**
22
+ * Returns the number of elements in the queue.
23
+ */
24
+ size(): number;
25
+ /**
26
+ * Removes all elements from the queue.
27
+ */
28
+ clear(): void;
29
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Queue = void 0;
4
+ class Queue {
5
+ items;
6
+ constructor() {
7
+ this.items = [];
8
+ }
9
+ /**
10
+ * Adds an element to the back of the queue.
11
+ */
12
+ push(element) {
13
+ this.items.push(element);
14
+ }
15
+ /**
16
+ * Removes and returns the front element from the queue, or undefined if queue is empty.
17
+ */
18
+ pop() {
19
+ return this.items.shift();
20
+ }
21
+ /**
22
+ * Returns the front element of the queue without removing it, or undefined if queue is empty.
23
+ */
24
+ front() {
25
+ return this.items[0];
26
+ }
27
+ /**
28
+ * Checks if the queue is empty. Returns true if the queue is empty, false otherwise.
29
+ */
30
+ empty() {
31
+ return this.items.length === 0;
32
+ }
33
+ /**
34
+ * Returns the number of elements in the queue.
35
+ */
36
+ size() {
37
+ return this.items.length;
38
+ }
39
+ /**
40
+ * Removes all elements from the queue.
41
+ */
42
+ clear() {
43
+ this.items = [];
44
+ }
45
+ }
46
+ exports.Queue = Queue;
47
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../lib/queue.ts"],"names":[],"mappings":";;;AAGA,MAAa,KAAK;IACR,KAAK,CAAM;IAEnB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAU;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAhDD,sBAgDC"}
@@ -0,0 +1,29 @@
1
+ import { SetTy } from '../types';
2
+ export declare class Set<T> implements SetTy<T> {
3
+ private bst;
4
+ constructor();
5
+ /**
6
+ * Adds a value to the set if it's not already present
7
+ */
8
+ insert(value: T): void;
9
+ /**
10
+ * Checks if a value exists in the set
11
+ */
12
+ find(value: T): boolean;
13
+ /**
14
+ * Removes a value from the set
15
+ */
16
+ remove(value: T): void;
17
+ /**
18
+ * Removes all elements from the set
19
+ */
20
+ clear(): void;
21
+ /**
22
+ * Returns true if the set contains no elements
23
+ */
24
+ empty(): boolean;
25
+ /**
26
+ * Returns the number of elements in the set
27
+ */
28
+ size(): number;
29
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Set = void 0;
4
+ const binary_search_tree_1 = require("./binary-search-tree");
5
+ class Set {
6
+ bst;
7
+ constructor() {
8
+ this.bst = new binary_search_tree_1.BinarySearchTree();
9
+ }
10
+ /**
11
+ * Adds a value to the set if it's not already present
12
+ */
13
+ insert(value) {
14
+ if (!this.find(value)) {
15
+ this.bst.insert(value);
16
+ }
17
+ }
18
+ /**
19
+ * Checks if a value exists in the set
20
+ */
21
+ find(value) {
22
+ return this.bst.find(value);
23
+ }
24
+ /**
25
+ * Removes a value from the set
26
+ */
27
+ remove(value) {
28
+ this.bst.remove(value);
29
+ }
30
+ /**
31
+ * Removes all elements from the set
32
+ */
33
+ clear() {
34
+ this.bst = new binary_search_tree_1.BinarySearchTree();
35
+ }
36
+ /**
37
+ * Returns true if the set contains no elements
38
+ */
39
+ empty() {
40
+ return this.bst.empty();
41
+ }
42
+ /**
43
+ * Returns the number of elements in the set
44
+ */
45
+ size() {
46
+ return this.bst.count();
47
+ }
48
+ }
49
+ exports.Set = Set;
50
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../lib/set.ts"],"names":[],"mappings":";;;AACA,6DAAwD;AAGxD,MAAa,GAAG;IACN,GAAG,CAAsB;IAEjC;QACE,IAAI,CAAC,GAAG,GAAG,IAAI,qCAAgB,EAAK,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,KAAQ;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,qCAAgB,EAAK,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;AAlDD,kBAkDC"}
@@ -1,4 +1,5 @@
1
- export declare class Stack<T> {
1
+ import { StackTy } from '../types/';
2
+ export declare class Stack<T> implements StackTy<T> {
2
3
  private items;
3
4
  constructor();
4
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../lib/stack.ts"],"names":[],"mappings":";;;AAAA,MAAa,KAAK;IACR,KAAK,CAAM;IAEnB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAU;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAhDD,sBAgDC"}
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../lib/stack.ts"],"names":[],"mappings":";;;AAGA,MAAa,KAAK;IACR,KAAK,CAAM;IAEnB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAU;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAhDD,sBAgDC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const binary_search_tree_1 = require("../lib/binary-search-tree");
4
+ describe('BinarySearchTree', () => {
5
+ let bst;
6
+ beforeEach(() => {
7
+ bst = new binary_search_tree_1.BinarySearchTree();
8
+ });
9
+ test('should create empty tree', () => {
10
+ expect(bst.empty()).toBe(true);
11
+ });
12
+ test('should insert and search values', () => {
13
+ bst.insert(5);
14
+ bst.insert(3);
15
+ bst.insert(7);
16
+ expect(bst.find(5)).toBe(true);
17
+ expect(bst.find(3)).toBe(true);
18
+ expect(bst.find(7)).toBe(true);
19
+ expect(bst.find(1)).toBe(false);
20
+ });
21
+ test('should find min and max values', () => {
22
+ bst.insert(5);
23
+ bst.insert(3);
24
+ bst.insert(7);
25
+ bst.insert(1);
26
+ bst.insert(9);
27
+ expect(bst.min()).toBe(1);
28
+ expect(bst.max()).toBe(9);
29
+ });
30
+ test('should return undefined min/max for empty tree', () => {
31
+ expect(bst.min()).toBeUndefined();
32
+ expect(bst.max()).toBeUndefined();
33
+ });
34
+ test('should remove leaf nodes', () => {
35
+ bst.insert(5);
36
+ bst.insert(3);
37
+ bst.insert(7);
38
+ bst.remove(3);
39
+ expect(bst.find(3)).toBe(false);
40
+ expect(bst.find(5)).toBe(true);
41
+ expect(bst.find(7)).toBe(true);
42
+ });
43
+ test('should remove nodes with one child', () => {
44
+ bst.insert(5);
45
+ bst.insert(3);
46
+ bst.insert(2);
47
+ bst.remove(3);
48
+ expect(bst.find(3)).toBe(false);
49
+ expect(bst.find(5)).toBe(true);
50
+ expect(bst.find(2)).toBe(true);
51
+ });
52
+ test('should remove nodes with two children', () => {
53
+ bst.insert(5);
54
+ bst.insert(3);
55
+ bst.insert(7);
56
+ bst.insert(6);
57
+ bst.insert(8);
58
+ bst.remove(7);
59
+ expect(bst.find(7)).toBe(false);
60
+ expect(bst.find(5)).toBe(true);
61
+ expect(bst.find(8)).toBe(true);
62
+ expect(bst.find(6)).toBe(true);
63
+ });
64
+ test('should clear all nodes from tree', () => {
65
+ bst.insert(5);
66
+ bst.insert(3);
67
+ bst.insert(7);
68
+ bst.clear();
69
+ expect(bst.empty()).toBe(true);
70
+ expect(bst.find(5)).toBe(false);
71
+ expect(bst.min()).toBeUndefined();
72
+ expect(bst.max()).toBeUndefined();
73
+ });
74
+ });
75
+ //# sourceMappingURL=binary-search-tree.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-search-tree.test.js","sourceRoot":"","sources":["../../tests/binary-search-tree.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const deque_1 = require("../lib/deque");
4
+ describe('Deque', () => {
5
+ let deque;
6
+ beforeEach(() => {
7
+ deque = new deque_1.Deque();
8
+ });
9
+ test('should create empty deque', () => {
10
+ expect(deque.empty()).toBe(true);
11
+ expect(deque.size()).toBe(0);
12
+ });
13
+ test('should push elements to front', () => {
14
+ deque.pushFront(1);
15
+ deque.pushFront(2);
16
+ expect(deque.size()).toBe(2);
17
+ expect(deque.front()).toBe(2);
18
+ expect(deque.back()).toBe(1);
19
+ });
20
+ test('should push elements to back', () => {
21
+ deque.pushBack(1);
22
+ deque.pushBack(2);
23
+ expect(deque.size()).toBe(2);
24
+ expect(deque.front()).toBe(1);
25
+ expect(deque.back()).toBe(2);
26
+ });
27
+ test('should pop elements from front', () => {
28
+ deque.pushBack(1);
29
+ deque.pushBack(2);
30
+ expect(deque.popFront()).toBe(1);
31
+ expect(deque.size()).toBe(1);
32
+ expect(deque.popFront()).toBe(2);
33
+ expect(deque.empty()).toBe(true);
34
+ });
35
+ test('should pop elements from back', () => {
36
+ deque.pushBack(1);
37
+ deque.pushBack(2);
38
+ expect(deque.popBack()).toBe(2);
39
+ expect(deque.size()).toBe(1);
40
+ expect(deque.popBack()).toBe(1);
41
+ expect(deque.empty()).toBe(true);
42
+ });
43
+ test('should return undefined when popping empty deque', () => {
44
+ expect(deque.popFront()).toBeUndefined();
45
+ expect(deque.popBack()).toBeUndefined();
46
+ });
47
+ test('should return front and back elements without removing them', () => {
48
+ deque.pushBack(1);
49
+ deque.pushBack(2);
50
+ expect(deque.front()).toBe(1);
51
+ expect(deque.back()).toBe(2);
52
+ expect(deque.size()).toBe(2);
53
+ });
54
+ test('should return undefined when checking front/back of empty deque', () => {
55
+ expect(deque.front()).toBeUndefined();
56
+ expect(deque.back()).toBeUndefined();
57
+ });
58
+ test('should clear all elements from deque', () => {
59
+ deque.pushBack(1);
60
+ deque.pushBack(2);
61
+ deque.pushBack(3);
62
+ deque.clear();
63
+ expect(deque.empty()).toBe(true);
64
+ expect(deque.size()).toBe(0);
65
+ });
66
+ test('should correctly report size', () => {
67
+ expect(deque.size()).toBe(0);
68
+ deque.pushBack(1);
69
+ expect(deque.size()).toBe(1);
70
+ deque.pushFront(2);
71
+ expect(deque.size()).toBe(2);
72
+ deque.popBack();
73
+ expect(deque.size()).toBe(1);
74
+ deque.popFront();
75
+ expect(deque.size()).toBe(0);
76
+ });
77
+ });
78
+ //# sourceMappingURL=deque.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deque.test.js","sourceRoot":"","sources":["../../tests/deque.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const linked_list_1 = require("../lib/linked-list");
4
+ describe('LinkedList', () => {
5
+ let list;
6
+ beforeEach(() => {
7
+ list = new linked_list_1.LinkedList();
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);
17
+ });
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);
26
+ });
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);
34
+ });
35
+ test('should return false for invalid positions', () => {
36
+ expect(list.insert(1, -1)).toBe(false);
37
+ expect(list.insert(1, 1)).toBe(false);
38
+ });
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);
47
+ });
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);
53
+ });
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);
62
+ });
63
+ test('should return undefined for invalid positions', () => {
64
+ list.pushBack(1);
65
+ expect(list.removeAt(-1)).toBeUndefined();
66
+ expect(list.removeAt(1)).toBeUndefined();
67
+ });
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);
73
+ });
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.empty()).toBe(true);
81
+ });
82
+ test('should return false for non-empty list', () => {
83
+ list.pushBack(1);
84
+ expect(list.empty()).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.empty()).toBe(true);
98
+ expect(list.size()).toBe(0);
99
+ });
100
+ });
101
+ //# sourceMappingURL=linked-list.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linked-list.test.js","sourceRoot":"","sources":["../../tests/linked-list.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const priority_queue_1 = require("../lib/priority-queue");
4
+ describe('PriorityQueue', () => {
5
+ let pq;
6
+ beforeEach(() => {
7
+ pq = new priority_queue_1.PriorityQueue();
8
+ });
9
+ test('should create empty priority queue', () => {
10
+ expect(pq.empty()).toBe(true);
11
+ expect(pq.size()).toBe(0);
12
+ });
13
+ test('should push elements with priority', () => {
14
+ pq.push('low', 1);
15
+ pq.push('high', 3);
16
+ pq.push('medium', 2);
17
+ expect(pq.size()).toBe(3);
18
+ expect(pq.front()).toBe('high');
19
+ });
20
+ test('should maintain priority order when pushing', () => {
21
+ pq.push('third', 1);
22
+ pq.push('first', 3);
23
+ pq.push('second', 2);
24
+ expect(pq.pop()).toBe('first');
25
+ expect(pq.pop()).toBe('second');
26
+ expect(pq.pop()).toBe('third');
27
+ });
28
+ test('should pop elements in priority order', () => {
29
+ pq.push('low', 1);
30
+ pq.push('high', 3);
31
+ pq.push('medium', 2);
32
+ expect(pq.pop()).toBe('high');
33
+ expect(pq.size()).toBe(2);
34
+ expect(pq.pop()).toBe('medium');
35
+ expect(pq.pop()).toBe('low');
36
+ expect(pq.empty()).toBe(true);
37
+ });
38
+ test('should return undefined when popping empty queue', () => {
39
+ expect(pq.pop()).toBeUndefined();
40
+ });
41
+ test('should return front element without removing it', () => {
42
+ pq.push('low', 1);
43
+ pq.push('high', 3);
44
+ expect(pq.front()).toBe('high');
45
+ expect(pq.size()).toBe(2);
46
+ });
47
+ test('should return undefined when checking front of empty queue', () => {
48
+ expect(pq.front()).toBeUndefined();
49
+ });
50
+ test('should clear all elements from queue', () => {
51
+ pq.push('low', 1);
52
+ pq.push('high', 3);
53
+ pq.push('medium', 2);
54
+ pq.clear();
55
+ expect(pq.empty()).toBe(true);
56
+ expect(pq.size()).toBe(0);
57
+ });
58
+ });
59
+ //# sourceMappingURL=priority-queue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-queue.test.js","sourceRoot":"","sources":["../../tests/priority-queue.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const queue_1 = require("../lib/queue");
4
+ describe('Queue', () => {
5
+ let queue;
6
+ beforeEach(() => {
7
+ queue = new queue_1.Queue();
8
+ });
9
+ test('should create empty queue', () => {
10
+ expect(queue.empty()).toBe(true);
11
+ expect(queue.size()).toBe(0);
12
+ });
13
+ test('should push elements to queue', () => {
14
+ queue.push(1);
15
+ queue.push(2);
16
+ expect(queue.size()).toBe(2);
17
+ expect(queue.front()).toBe(1);
18
+ });
19
+ test('should pop elements from queue', () => {
20
+ queue.push(1);
21
+ queue.push(2);
22
+ expect(queue.pop()).toBe(1);
23
+ expect(queue.size()).toBe(1);
24
+ expect(queue.pop()).toBe(2);
25
+ expect(queue.empty()).toBe(true);
26
+ });
27
+ test('should return undefined when popping empty queue', () => {
28
+ expect(queue.pop()).toBeUndefined();
29
+ });
30
+ test('should return front element without removing it', () => {
31
+ queue.push(1);
32
+ queue.push(2);
33
+ expect(queue.front()).toBe(1);
34
+ expect(queue.size()).toBe(2);
35
+ });
36
+ test('should return undefined when checking front of empty queue', () => {
37
+ expect(queue.front()).toBeUndefined();
38
+ });
39
+ test('should clear all elements from queue', () => {
40
+ queue.push(1);
41
+ queue.push(2);
42
+ queue.push(3);
43
+ queue.clear();
44
+ expect(queue.empty()).toBe(true);
45
+ expect(queue.size()).toBe(0);
46
+ });
47
+ });
48
+ //# sourceMappingURL=queue.test.js.map