Skip to content

[34/N] Add unit tests for Graph, BFS, DFS, Dijkstras, Prims, Kruskals, Floyd, CreateGraph, and LVA algorithms - #125

Open
karkir0003 wants to merge 34 commits into
csvistool:masterfrom
karkir0003:karthik/kar-41-add-unit-tests-for-graph-algorithms
Open

karkir0003 wants to merge 34 commits into
csvistool:masterfrom
karkir0003:karthik/kar-41-add-unit-tests-for-graph-algorithms

Conversation

@karkir0003

@karkir0003 karkir0003 commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

PR 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 Header, Footer, and Blob components)
  3. ⬅️ [3/N] Add unit tests for SideButton component #94 (Add unit tests for HomeScreen components (SideButton, SearchFilter))
  4. ⬅️ [4/N] Add unit tests for SearchFilter component #95 (Add unit tests for AlgoScreen components (AlgoSection, Pseudocode, ModalSidebarSectionTab))
  5. ⬅️ [6/N] Add unit tests for Blob mascot component #97 (Add unit tests for modals (BigOModal, InfoModals))
  6. ⬅️ [5/N] Add unit tests for Header and Footer components #96 (Add unit tests for AlgorithmNotFound404 component)
  7. ⬅️ [7/N] Add unit tests for AboutScreen screen #98 (Add unit tests for HomeScreen page)
  8. ⬅️ [8/N] Add integration tests for HomeScreen screen #99 (Add unit tests for AboutScreen page)
  9. ⬅️ [9/N] Add unit tests for AlgorithmNotFound404 component #100 (Add unit tests for AlgoScreen page)
  10. ⬅️ [10/N] Add integration tests for AlgoScreen screen #101 (Add unit tests for App root component and routes)
  11. ⬅️ [11/N] Add unit tests for ModalSidebarSectionTab component #102 (Add test coverage workflow for CI)
  12. ⬅️ [12/N] Add unit tests for BigOModal component #103 (Add unit tests for CustomEvents animation utility)
  13. ⬅️ [13/N] Add unit tests for Pseudocode component #104 (Add unit tests for UndoFunctions animation utility)
  14. ⬅️ [14/N] Add unit and integration tests for AlgoSection component #105 (Add unit tests for AnimatedCircle animation primitive)
  15. ⬅️ [15/N] Add unit and integration tests for root App component #106 (Add unit tests for AnimatedHighlightCircle)
  16. ⬅️ [16/N] Add unit tests for animation events and undo functions #107 (Add unit tests for SingleAnimation)
  17. ⬅️ [17/N] Add unit tests for AnimatedObject, AnimatedCircle, and AnimatedHighlightCircle #108 (Add unit tests for AnimatedObject base class)
  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. ⬅️ [28/N] Add unit tests for BST, AVL, Heap, and SplayTree algorithms #119 (Add unit tests for BST, AVL, Heap, and SplayTree algorithms)
  29. ⬅️ [29/N] Add unit tests for BTree, TreeMap, SkipList, and DisjointSet algorithms #120 (Add unit tests for BTree, TreeMap, SkipList, and DisjointSet algorithms)
  30. ⬅️ [30/N] Add unit tests for Hash, OpenHash, ClosedHash, and NonLinearProbing algorithms #121 (Add unit tests for Hash, OpenHash, ClosedHash, and NonLinearProbing algorithms)
  31. ⬅️ [31/N] Add unit tests for BruteForce, BoyerMoore, KMP, RabinKarp, and LCS pattern matching algorithms #122 (Add unit tests for BruteForce, BoyerMoore, KMP, RabinKarp, and LCS pattern matching algorithms)
  32. ⬅️ [32/N] Add unit tests for BubbleSort, CocktailSort, SelectionSort, InsertionSort, MergeSort, Quicksort, Quickselect, and HeapSort algorithms #123 (Add unit tests for BubbleSort, CocktailSort, SelectionSort, InsertionSort, MergeSort, Quicksort, Quickselect, and HeapSort algorithms)
  33. ⬅️ [33/N] Add unit tests for LSDRadix, RadixSort, BogoSort, DropSort, FredSort, MiracleSort, and SleepSort algorithms #124 (Add unit tests for LSDRadix, RadixSort, BogoSort, DropSort, FredSort, MiracleSort, and SleepSort algorithms)
  34. 👉 #CURRENT — Add unit tests for Graph, BFS, DFS, Dijkstras, Prims, Kruskals, Floyd, CreateGraph, and LVA algorithms (this PR)
  35. ➡️ [35/N] Add unit tests for AlgoList registry, algorithm index, and InfoModals #126 (Add unit tests for AlgoList registry, algorithm index, and InfoModals)

Addresses #93

Context

Adds comprehensive unit test coverage for graph algorithm visualizers and graph management components:

  • Graph.js: Core base class for all graph algorithm visualizers managing logical representation, adjacency list, and adjacency matrix view layers, directed/undirected modes, and small (8 nodes) vs large (18 nodes) graph layouts.
  • BFS.js: Breadth-First Search traversal with start vertex validation, FIFO queue animation, and visited set updates.
  • DFS.js: Depth-First Search supporting both recursive call stack visualization and iterative explicit stack traversal modes.
  • Dijkstras.js: Dijkstra's single-source shortest path algorithm utilizing PriorityQueue, dynamic distance map table entries, and shortest path tree construction.
  • Prims.js: Prim's Minimum Spanning Tree algorithm tracking visited cut partitions, priority queue edges, and highlighted MST edge formatting.
  • Kruskals.js: Kruskal's Minimum Spanning Tree algorithm using Disjoint Sets data structures (setData), edge weight sorting, and cycle detection.
  • Floyd.js: Floyd-Warshall all-pairs shortest paths algorithm computing 2D cost and path tables via dynamic programming relaxation passes.
  • CreateGraph.js: Interactive graph designer with textarea adjacency list parser, live character sanitization, and matrix reconstruction.
  • LVA.js: Lowest Value Adjacent tree visualizer with insert, delete, find, print traversals, and Left-LVA / Right-LVA rotational balancing.

Changes Made

  • Introduced src/algo/__tests__/Graph.test.js:
    • Controls registration, size switching (small/large), directed/undirected toggling.
    • New/default graph callbacks, layer visibility switching (logical, adj list, adj matrix).
    • UI control enable/disable.
  • Introduced src/algo/__tests__/BFS.test.js:
    • Input controls, start vertex validation (empty and out-of-range).
    • BFS traversal execution, visited coloring, reset, and Enter key handler.
  • Introduced src/algo/__tests__/DFS.test.js:
    • Recursion vs physical stack mode toggling (stackCallback).
    • Validation in doDFSRecursive and doDFSStack.
    • Traversal execution under both recursion and iterative stack modes.
  • Introduced src/algo/__tests__/Dijkstras.test.js:
    • Distance map table, PQ queue labels, start vertex validation, and shortest path updates.
  • Introduced src/algo/__tests__/Prims.test.js:
    • MST edge styling, priority queue integration, start vertex validation, and traversal.
  • Introduced src/algo/__tests__/Kruskals.test.js:
    • Disjoint set table, edge list sorting, union-find cycle detection, and MST highlights.
  • Introduced src/algo/__tests__/Floyd.test.js:
    • Cost table and path table grids, all-pairs relaxation animation, and INF label formatting.
  • Introduced src/algo/__tests__/CreateGraph.test.js:
    • Textarea input validation, regex sanitization, adjacency list parsing, and graph rebuilding.
  • Introduced src/algo/__tests__/LVA.test.js:
    • Insert, delete, find, print, clear operations.
    • Right-LVA vs Left-LVA mode toggles and tree balancing.

Test Plan

  • Ran npm test -- --watchAll=false (all 9 new test suites pass, 55 unit tests passing; 84 suites, 886 tests passing repository-wide).
  • 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