Skip to content

[26/N] Add unit tests for LinkedList, DoublyLinkedList, and CircularlyLinkedList algorithms - #117

Open
karkir0003 wants to merge 26 commits into
csvistool:masterfrom
karkir0003:karthik/kar-33-add-unit-tests-for-linkedlist-doublylinkedlist-and-circularlylinkedlist
Open

karkir0003 wants to merge 26 commits into
csvistool:masterfrom
karkir0003:karthik/kar-33-add-unit-tests-for-linkedlist-doublylinkedlist-and-circularlylinkedlist

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 (Update CI to run frontend unit tests)
  2. ⬅️ [2/N] Configure React Testing Library and Setup Tests #92 (Configure React Testing Library and Setup Tests)
  3. ⬅️ [3/N] Add unit tests for SideButton component #94 (Add unit tests for SideButton component)
  4. ⬅️ [4/N] Add unit tests for SearchFilter component #95 (Add unit tests for SearchFilter component)
  5. ⬅️ [5/N] Add unit tests for Header and Footer components #96 (Add unit tests for Header and Footer components)
  6. ⬅️ [6/N] Add unit tests for Blob mascot component #97 (Add unit tests for Blob mascot component)
  7. ⬅️ [7/N] Add unit tests for AboutScreen screen #98 (Add unit tests for AboutScreen screen)
  8. ⬅️ [8/N] Add integration tests for HomeScreen screen #99 (Add integration tests for HomeScreen screen)
  9. ⬅️ [9/N] Add unit tests for AlgorithmNotFound404 component #100 (Add unit tests for AlgorithmNotFound404 component)
  10. ⬅️ [10/N] Add integration tests for AlgoScreen screen #101 (Add integration tests for AlgoScreen screen)
  11. ⬅️ [11/N] Add unit tests for ModalSidebarSectionTab component #102 (Add unit tests for ModalSidebarSectionTab component)
  12. ⬅️ [12/N] Add unit tests for BigOModal component #103 (Add unit tests for BigOModal component)
  13. ⬅️ [13/N] Add unit tests for Pseudocode component #104 (Add unit tests for Pseudocode component)
  14. ⬅️ [14/N] Add unit and integration tests for AlgoSection component #105 (Add unit and integration tests for AlgoSection component)
  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. 👉 #CURRENT — Add unit tests for LinkedList, DoublyLinkedList, and CircularlyLinkedList algorithms (this PR)
  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))

Addresses #93

Context

Adds comprehensive unit test coverage for the linked list algorithm visualizers:
• LinkedList.js: Singly linked list operations (add/remove head, tail, arbitrary index, traversal).
• DoublyLinkedList.js: Doubly linked list operations (next/prev pointer manipulation, bidirectional traversal, edge cases).
• CircularlyLinkedList.js: Circularly linked list operations (circular pointer maintenance, rotation, single-node and multi-node insertions/removals).

Changes Made

• Introduced src/algo/__tests__/LinkedList.test.js:
• Control registration (addControls, input fields, action buttons, disableUI/enableUI).
• add operations (front, back, middle index) with head/tail updates and size limits.
• remove operations (front, back, middle index) with empty list checks, single element handling, and pointer updates.
• Validation (invalid/out-of-bounds inputs, empty values, capacity constraints).
• reset, clearAll, randomCallback, and URL parameter serialization (setURLData).

• Introduced src/algo/__tests__/DoublyLinkedList.test.js:
• Control registration and UI toggle states.
• Bidirectional add operations (front, back, indexed insertion) with next and prev pointer rewiring.
• remove operations (head, tail, arbitrary index) with empty and single-element edge case checks.
• Pointer integrity assertions, bounds checks, random generation, and clear routines.

• Introduced src/algo/__tests__/CircularlyLinkedList.test.js:
• Circular pointer setup and UI controls initialization.
• add operations (front, back, arbitrary index) verifying circular pointer loops back to head.
• remove operations (front, back, index) asserting circular pointer integrity upon deletion.
• Edge cases: single element removal restoring empty state, full list cap, validation errors, reset, and URL data.

Test Plan

• Ran npm test -- --watchAll=false (all 37 test suites pass, 365 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