>();
+ const objBST = new BST<{ key: number; keyA: number }>();
expect(objBST).toBeInstanceOf(BST);
objBST.add(11, {key: 11, keyA: 11});
objBST.add(3, {key: 3, keyA: 3});
diff --git a/test/integration/index.html b/test/integration/index.html
index 0fab945..8c85112 100644
--- a/test/integration/index.html
+++ b/test/integration/index.html
@@ -3,7 +3,7 @@
CDN Test
-
+
diff --git a/test/unit/data-structures/binary-tree/avl-tree.test.ts b/test/unit/data-structures/binary-tree/avl-tree.test.ts
index 01c0e16..5c99c38 100644
--- a/test/unit/data-structures/binary-tree/avl-tree.test.ts
+++ b/test/unit/data-structures/binary-tree/avl-tree.test.ts
@@ -110,7 +110,7 @@ describe('AVL Tree Test', () => {
});
describe('AVLTree APIs test', () => {
- const avl = new AVLTree<{id: number; text: string}>();
+ const avl = new AVLTree<{ id: number; text: string }>();
beforeEach(() => {
avl.clear();
});
@@ -123,7 +123,7 @@ describe('AVLTree APIs test', () => {
avl.add(node3);
avl.add(node3, {id: 3, text: 'text33'});
- const bfsRes = avl.bfs(node => node.key, false);
+ const bfsRes = avl.bfs(node => node.key);
expect(bfsRes[0]).toBe(2);
});
});
diff --git a/test/unit/data-structures/binary-tree/binary-tree.test.ts b/test/unit/data-structures/binary-tree/binary-tree.test.ts
index 49d87d8..0e9ce66 100644
--- a/test/unit/data-structures/binary-tree/binary-tree.test.ts
+++ b/test/unit/data-structures/binary-tree/binary-tree.test.ts
@@ -1,4 +1,8 @@
-import {AVLTree, AVLTreeNode, BinaryTree, BinaryTreeNode} from '../../../../src';
+import {AVLTree, AVLTreeNode, BinaryTree, BinaryTreeNode, IterationType} from '../../../../src';
+import {isDebugTest} from "../../../config";
+
+const isDebug = isDebugTest;
+// const isDebug = true;
describe('BinaryTreeNode', () => {
it('should create an instance of BinaryTreeNode', () => {
@@ -196,7 +200,7 @@ describe('BinaryTree Morris Traversal', () => {
});
describe('BinaryTree APIs test', () => {
- const avl = new AVLTree<{id: number; text: string}>();
+ const avl = new AVLTree<{ id: number; text: string }>();
beforeEach(() => {
avl.clear();
});
@@ -213,3 +217,20 @@ describe('BinaryTree APIs test', () => {
expect(bfsRes[0]?.key).toBe(2);
});
});
+
+describe('BinaryTree traversals', () => {
+ const tree = new BinaryTree();
+
+ const arr = [35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55];
+ tree.refill(arr);
+ expect(tree.dfs(node => node.key, 'pre')).toEqual([35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55]);
+ expect(tree.dfs(node => node.key, 'in')).toEqual([15, 16, 20, 28, 29, 30, 35, 40, 45, 50, 55]);
+ expect(tree.dfs(node => node.key, 'post')).toEqual([16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35]);
+ expect(tree.bfs(node => node.key, tree.root, IterationType.RECURSIVE)).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
+ expect(tree.bfs(node => node.key, tree.root, IterationType.ITERATIVE)).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
+
+ const levels = tree.listLevels(node => node.key);
+ expect(levels).toEqual([[35], [20, 40], [15, 29, 50], [16, 28, 30, 45, 55]]);
+ isDebug && console.log(levels);
+
+})
diff --git a/test/unit/data-structures/binary-tree/bst.test.ts b/test/unit/data-structures/binary-tree/bst.test.ts
index 872223f..7b0441c 100644
--- a/test/unit/data-structures/binary-tree/bst.test.ts
+++ b/test/unit/data-structures/binary-tree/bst.test.ts
@@ -189,7 +189,7 @@ describe('BST operations test', () => {
});
it('should perform various operations on a Binary Search Tree with object values', () => {
- const objBST = new BST<{key: number; keyA: number}>();
+ const objBST = new BST<{ key: number; keyA: number }>();
expect(objBST).toBeInstanceOf(BST);
objBST.add(11, {key: 11, keyA: 11});
objBST.add(3, {key: 3, keyA: 3});
@@ -260,7 +260,7 @@ describe('BST operations test', () => {
objBST.perfectlyBalance();
expect(objBST.isPerfectlyBalanced()).toBe(true);
- const bfsNodesAfterBalanced: BSTNode<{key: number; keyA: number}>[] = [];
+ const bfsNodesAfterBalanced: BSTNode<{ key: number; keyA: number }>[] = [];
objBST.bfs(node => bfsNodesAfterBalanced.push(node));
expect(bfsNodesAfterBalanced[0].key).toBe(8);
expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
@@ -385,7 +385,7 @@ describe('BST operations test', () => {
expect(bfsIDs[1]).toBe(12);
expect(bfsIDs[2]).toBe(16);
- const bfsNodes: BSTNode<{key: number; keyA: number}>[] = [];
+ const bfsNodes: BSTNode<{ key: number; keyA: number }>[] = [];
objBST.bfs(node => bfsNodes.push(node));
expect(bfsNodes[0].key).toBe(2);
expect(bfsNodes[1].key).toBe(12);
@@ -435,13 +435,7 @@ describe('BST Performance test', function () {
bst.addMany(nodes);
isDebug && console.log('---add', performance.now() - start);
const startL = performance.now();
- const arr: number[][] = [];
- bst.bfs((node, level) => {
- if (level !== undefined) {
- if (!arr[level]) arr[level] = [];
- arr[level].push(node.key);
- }
- }, true);
+ const arr: number[][] = bst.listLevels((node) => node.key);
isDebug && console.log('---listLevels', arr);
isDebug && console.log('---listLevels', performance.now() - startL);
});
diff --git a/test/unit/data-structures/binary-tree/overall.test.ts b/test/unit/data-structures/binary-tree/overall.test.ts
index e4301b1..04dff37 100644
--- a/test/unit/data-structures/binary-tree/overall.test.ts
+++ b/test/unit/data-structures/binary-tree/overall.test.ts
@@ -1,4 +1,4 @@
-import {AVLTree, BST, BSTNode} from '../../../../src';
+import {AVLTree, BST} from '../../../../src';
describe('Overall BinaryTree Test', () => {
it('should perform various operations on BinaryTree', () => {
@@ -6,30 +6,30 @@ describe('Overall BinaryTree Test', () => {
bst.add(11);
bst.add(3);
bst.addMany([15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5], undefined, false);
- bst.size === 16; // true
- expect(bst.size).toBe(16); // true
- bst.has(6); // true
- expect(bst.has(6)).toBe(true); // true
- bst.getHeight(6) === 2; // true
- bst.getHeight() === 5; // true
- bst.getDepth(6) === 3; // true
- expect(bst.getHeight(6)).toBe(2); // true
- expect(bst.getHeight()).toBe(5); // true
- expect(bst.getDepth(6)).toBe(3); // true
+ bst.size === 16; // true
+ expect(bst.size).toBe(16); // true
+ bst.has(6); // true
+ expect(bst.has(6)).toBe(true); // true
+ bst.getHeight(6) === 2; // true
+ bst.getHeight() === 5; // true
+ bst.getDepth(6) === 3; // true
+ expect(bst.getHeight(6)).toBe(2); // true
+ expect(bst.getHeight()).toBe(5); // true
+ expect(bst.getDepth(6)).toBe(3); // true
const leftMost = bst.getLeftMost();
- leftMost?.key === 1; // true
+ leftMost?.key === 1; // true
expect(leftMost?.key).toBe(1);
bst.delete(6);
- bst.get(6); // null
+ bst.get(6); // null
expect(bst.get(6)).toBeNull();
- bst.isAVLBalanced(); // true or false
+ bst.isAVLBalanced(); // true or false
expect(bst.isAVLBalanced()).toBe(true);
const bfsIDs: number[] = [];
bst.bfs(node => bfsIDs.push(node.key));
- bfsIDs[0] === 11; // true
+ bfsIDs[0] === 11; // true
expect(bfsIDs[0]).toBe(11);
- const objBST = new BST<{key: number; keyA: number}>();
+ const objBST = new BST<{ key: number; keyA: number }>();
objBST.add(11, {key: 11, keyA: 11});
objBST.add(3, {key: 3, keyA: 3});
@@ -57,10 +57,10 @@ describe('Overall BinaryTree Test', () => {
const avlTree = new AVLTree();
avlTree.addMany([11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5]);
- avlTree.isAVLBalanced(); // true
- expect(avlTree.isAVLBalanced()).toBe(true); // true
+ avlTree.isAVLBalanced(); // true
+ expect(avlTree.isAVLBalanced()).toBe(true); // true
avlTree.delete(10);
- avlTree.isAVLBalanced(); // true
- expect(avlTree.isAVLBalanced()).toBe(true); // true
+ avlTree.isAVLBalanced(); // true
+ expect(avlTree.isAVLBalanced()).toBe(true); // true
});
});
diff --git a/test/unit/data-structures/binary-tree/tree-multiset.test.ts b/test/unit/data-structures/binary-tree/tree-multiset.test.ts
index 795ce47..5e25bde 100644
--- a/test/unit/data-structures/binary-tree/tree-multiset.test.ts
+++ b/test/unit/data-structures/binary-tree/tree-multiset.test.ts
@@ -206,7 +206,7 @@ describe('TreeMultiset operations test', () => {
});
it('should perform various operations on a Binary Search Tree with object values', () => {
- const objTreeMultiset = new TreeMultiset<{key: number; keyA: number}>();
+ const objTreeMultiset = new TreeMultiset<{ key: number; keyA: number }>();
expect(objTreeMultiset).toBeInstanceOf(TreeMultiset);
objTreeMultiset.add(11, {key: 11, keyA: 11});
objTreeMultiset.add(3, {key: 3, keyA: 3});
@@ -481,7 +481,7 @@ describe('TreeMultiset Performance test', function () {
}
isDebug && console.log('---add', performance.now() - start);
const startL = performance.now();
- treeMS.lesserOrGreaterTraverse((node: TreeMultisetNode) => (node.count += 1), CP.lt, inputSize / 2);
+ treeMS.lesserOrGreaterTraverse((node) => (node.count += 1), CP.lt, inputSize / 2);
isDebug && console.log('---lesserOrGreaterTraverse', performance.now() - startL);
});
});
diff --git a/test/unit/data-structures/heap/heap.test.ts b/test/unit/data-structures/heap/heap.test.ts
index 8745402..14c54cf 100644
--- a/test/unit/data-structures/heap/heap.test.ts
+++ b/test/unit/data-structures/heap/heap.test.ts
@@ -22,7 +22,7 @@ describe('Heap Operation Test', () => {
});
it('should object heap work well', function () {
- const minHeap = new MinHeap<{a: string; key: number}>((a, b) => a.key - b.key);
+ const minHeap = new MinHeap<{ a: string; key: number }>((a, b) => a.key - b.key);
minHeap.add({key: 1, a: 'a1'});
minHeap.add({key: 6, a: 'a6'});
minHeap.add({key: 2, a: 'a2'});
@@ -37,7 +37,7 @@ describe('Heap Operation Test', () => {
i++;
}
- const maxHeap = new MaxHeap<{key: number; a: string}>((a, b) => b.key - a.key);
+ const maxHeap = new MaxHeap<{ key: number; a: string }>((a, b) => b.key - a.key);
maxHeap.add({key: 1, a: 'a1'});
maxHeap.add({key: 6, a: 'a6'});
maxHeap.add({key: 5, a: 'a5'});
diff --git a/test/unit/data-structures/linked-list/doubly-linked-list.test.ts b/test/unit/data-structures/linked-list/doubly-linked-list.test.ts
index eab2ad5..0838337 100644
--- a/test/unit/data-structures/linked-list/doubly-linked-list.test.ts
+++ b/test/unit/data-structures/linked-list/doubly-linked-list.test.ts
@@ -3,7 +3,7 @@ import {bigO, magnitude} from '../../../utils';
describe('DoublyLinkedList Operation Test', () => {
let list: DoublyLinkedList;
- let objectList: DoublyLinkedList<{keyA: number}>;
+ let objectList: DoublyLinkedList<{ keyA: number }>;
beforeEach(() => {
list = new DoublyLinkedList();
diff --git a/test/unit/data-structures/linked-list/singly-linked-list.test.ts b/test/unit/data-structures/linked-list/singly-linked-list.test.ts
index 74a3de8..092b2e6 100644
--- a/test/unit/data-structures/linked-list/singly-linked-list.test.ts
+++ b/test/unit/data-structures/linked-list/singly-linked-list.test.ts
@@ -3,10 +3,10 @@ import {bigO, magnitude} from '../../../utils';
describe('SinglyLinkedList Operation Test', () => {
let list: SinglyLinkedList;
- let objectList: SinglyLinkedList<{keyA: number}>;
+ let objectList: SinglyLinkedList<{ keyA: number }>;
beforeEach(() => {
list = new SinglyLinkedList();
- objectList = new SinglyLinkedList<{keyA: number}>();
+ objectList = new SinglyLinkedList<{ keyA: number }>();
});
describe('push', () => {
diff --git a/test/unit/data-structures/priority-queue/max-priority-queue.test.ts b/test/unit/data-structures/priority-queue/max-priority-queue.test.ts
index f8a63bc..f389309 100644
--- a/test/unit/data-structures/priority-queue/max-priority-queue.test.ts
+++ b/test/unit/data-structures/priority-queue/max-priority-queue.test.ts
@@ -17,7 +17,7 @@ describe('MaxPriorityQueue Operation Test', () => {
});
it('should add elements and maintain heap property in a object MaxPriorityQueue', () => {
- const priorityQueue = new MaxPriorityQueue<{keyA: number}>((a, b) => b.keyA - a.keyA);
+ const priorityQueue = new MaxPriorityQueue<{ keyA: number }>((a, b) => b.keyA - a.keyA);
priorityQueue.refill([{keyA: 5}, {keyA: 3}, {keyA: 1}]);
priorityQueue.add({keyA: 7});
@@ -64,7 +64,7 @@ describe('MaxPriorityQueue Operation Test', () => {
it('should correctly heapify an object array', () => {
const nodes = [{keyA: 5}, {keyA: 3}, {keyA: 7}, {keyA: 1}];
- const maxPQ = MaxPriorityQueue.heapify<{keyA: number}>(nodes, (a, b) => b.keyA - a.keyA);
+ const maxPQ = MaxPriorityQueue.heapify<{ keyA: number }>(nodes, (a, b) => b.keyA - a.keyA);
expect(maxPQ.poll()?.keyA).toBe(7);
expect(maxPQ.poll()?.keyA).toBe(5);
diff --git a/test/utils/big-o.ts b/test/utils/big-o.ts
index 43d7eca..cc9fc86 100644
--- a/test/utils/big-o.ts
+++ b/test/utils/big-o.ts
@@ -26,7 +26,7 @@ export const bigO = {
function findPotentialN(input: any): number {
let longestArray: any[] = [];
- let mostProperties: {[key: string]: any} = {};
+ let mostProperties: { [key: string]: any } = {};
function recurse(obj: any) {
if (Array.isArray(obj)) {
diff --git a/tsup.config.js b/tsup.config.js
index dd1aa90..fe37d02 100644
--- a/tsup.config.js
+++ b/tsup.config.js
@@ -1,11 +1,18 @@
export default [{
- entry: ['src/index.ts'],
+ entryPoints: {
+ "data-structure-typed": "src/index.ts"
+ },
format: ["iife"],
clean: true,
sourcemap: true,
minify: true,
- outDir: 'dist/umd',
- globalName: 'dataStructureTyped',
+ outDir: "dist/umd",
+ globalName: "dataStructureTyped",
platform: "browser",
- bundle: true
+ bundle: true,
+ outExtension() {
+ return {
+ js: `.min.js`,
+ }
+ },
}];