Skip to content

[28/N] Add unit tests for BST, AVL, Heap, and SplayTree algorithms - #119

Open
karkir0003 wants to merge 28 commits into
csvistool:masterfrom
karkir0003:karthik/kar-35-add-unit-tests-for-bst-avl-heap-and-splaytree-algorithms
Open

karkir0003 wants to merge 28 commits into
csvistool:masterfrom
karkir0003:karthik/kar-35-add-unit-tests-for-bst-avl-heap-and-splaytree-algorithms

Conversation

@karkir0003

@karkir0003 karkir0003 commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

🥞 Stack

  1. ⬅️ [1/N] Update CI to run frontend unit tests #91 (Add test infrastructure and Jest setup)
  2. ⬅️ [2/N] Configure React Testing Library and Setup Tests #92 (Add unit tests for Footer, Header, and Blob components)
  3. ⬅️ [3/N] Add unit tests for SideButton component #94 (Add unit tests for AlgorithmNotFound404 component)
  4. ⬅️ [4/N] Add unit tests for SearchFilter component #95 (Add unit tests for Pseudocode component)
  5. ⬅️ [5/N] Add unit tests for Header and Footer components #96 (Add unit tests for AlgoSection component)
  6. ⬅️ [6/N] Add unit tests for Blob mascot component #97 (Add unit tests for ModalSidebarSectionTab component)
  7. ⬅️ [7/N] Add unit tests for AboutScreen screen #98 (Add unit tests for BigOModal component)
  8. ⬅️ [8/N] Add integration tests for HomeScreen screen #99 (Add unit tests for InfoModals component)
  9. ⬅️ [9/N] Add unit tests for AlgorithmNotFound404 component #100 (Add unit tests for SideButton component)
  10. ⬅️ [10/N] Add integration tests for AlgoScreen screen #101 (Add unit tests for SearchFilter component)
  11. ⬅️ [11/N] Add unit tests for ModalSidebarSectionTab component #102 (Add unit tests for HomeScreen)
  12. ⬅️ [12/N] Add unit tests for BigOModal component #103 (Add unit tests for AboutScreen)
  13. ⬅️ [13/N] Add unit tests for Pseudocode component #104 (Add unit tests for AlgoScreen)
  14. ⬅️ [14/N] Add unit and integration tests for AlgoSection component #105 (Add unit tests for AlgoList registry)
  15. ⬅️ [15/N] Add unit and integration tests for root App component #106 (Add unit and integration tests for root App component)
  16. ⬅️ [16/N] Add unit tests for animation events and undo functions #107 (Add unit tests for animation events and undo functions)
  17. ⬅️ [17/N] Add unit tests for AnimatedObject, AnimatedCircle, and AnimatedHighlightCircle #108 (Add unit tests for AnimatedObject, AnimatedCircle, and AnimatedHighlightCircle)
  18. ⬅️ [18/N] Add unit tests for AnimatedRectangle, AnimatedLabel, and AnimatedLine #109 (Add unit tests for AnimatedRectangle, AnimatedLabel, and AnimatedLine)
  19. ⬅️ [19/N] Add unit tests for AnimatedLinkedListNode, AnimatedDoublyLinkedListNode, and AnimatedCircularlyLinkedListNode #110 (Add unit tests for AnimatedLinkedListNode, AnimatedDoublyLinkedListNode, and AnimatedCircularlyLinkedListNode)
  20. ⬅️ [20/N] Add unit tests for AnimatedBTreeNode and AnimatedSkipListNode #111 (Add unit tests for AnimatedBTreeNode and AnimatedSkipListNode)
  21. ⬅️ [21/N] Add unit tests for ObjectManager #112 (Add unit tests for ObjectManager)
  22. ⬅️ [22/N] Add unit tests for AnimationMain #113 (Add unit tests for AnimationMain)
  23. ⬅️ [23/N] Add unit tests for algo util helpers (PriorityQueue, SkipListHeads, GraphValues) #114 (Add unit tests for algo util helpers (PriorityQueue, SkipListHeads, GraphValues))
  24. ⬅️ [24/N] Add unit tests for base Algorithm class and control bar helpers #115 (Add unit tests for base Algorithm class and control bar helpers)
  25. ⬅️ [25/N] Add unit tests for ArrayList algorithm #116 (Add unit tests for ArrayList algorithm)
  26. ⬅️ [26/N] Add unit tests for LinkedList, DoublyLinkedList, and CircularlyLinkedList algorithms #117 (Add unit tests for LinkedList, DoublyLinkedList, and CircularlyLinkedList algorithms)
  27. ⬅️ [27/N] Add unit tests for Stack, Queue, and Deque algorithms (Array and LL variants) #118 (Add unit tests for Stack, Queue, and Deque algorithms (Array and LL variants))
  28. 👉 #CURRENT — Add unit tests for BST, AVL, Heap, and SplayTree algorithms (this PR)
  29. ➡️ [29/N] Add unit tests for BTree, TreeMap, SkipList, and DisjointSet algorithms #120 (Add unit tests for BTree, TreeMap, SkipList, and DisjointSet algorithms)

Addresses #93

Context

Adds comprehensive unit test coverage for the core tree and heap visualizer algorithms:

  • BST.js: Binary Search Tree with recursive insertions, find, successor deletions (leaf, one child, two children), traversals (preorder, inorder, postorder), and resize/reposition logic.
  • AVL.js: Self-balancing binary search tree with height updates, balance factors, single (left, right) and double (left-right, right-left) rotations.
  • Heap.js: Min/max binary heap with array visualizer, insert with bubble-up, remove root with trickle-down, and buildHeap (bottom-up Floyd's algorithm).
  • SplayTree.js: Self-adjusting binary search tree with splaying operations (zig, zig-zig, zig-zag) on insert, find, and delete.

Changes Made

  • Introduced src/algo/__tests__/BST.test.js:
    • Control registration (insert, delete, find, print, clear).
    • Insertion (root, left/right branching, duplicates).
    • Search/find (hit and miss).
    • Deletion cases: leaf node, single-child node, two-child node with successor replacement.
    • Traversals: preorder, inorder, postorder callback flows.
    • URL data hydration (setURLData) and clear operations.
  • Introduced src/algo/__tests__/AVL.test.js:
    • AVL tree node properties (height, balance factor).
    • Rotations: Right rotation (LL case), Left rotation (RR case), Left-Right rotation (LR case), Right-Left rotation (RL case).
    • Insertions and deletions triggering cascading rebalancing.
    • Traversals, search, empty tree edge cases, and URL parameter deserialization.
  • Introduced src/algo/__tests__/Heap.test.js:
    • Min-heap operations: insert with percolate/bubble up, extract min with trickle-down.
    • Max-heap operations: insert and extract max with child comparisons.
    • Bottom-up heapify (buildHeap from arbitrary values).
    • Array representation synchronization with tree node positions.
    • Boundary cases (empty heap removal, random fill, capacity limits).
  • Introduced src/algo/__tests__/SplayTree.test.js:
    • Splay operations: Zig (root child), Zig-Zig (same side), Zig-Zag (opposite side).
    • Splay on insert (inserted element splayed to root).
    • Splay on find (found element splayed to root, or last accessed node on miss).
    • Deletion with splaying and subtree joining.
    • Traversals, reset, clear, and URL data loading.

Test Plan

  • Ran npm test -- --watchAll=false (all 4 new test suites pass, 64 unit tests passing).
  • Ran npm run lint and npm run prettier (0 errors, 0 warnings).

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant