diff --git a/src/test/java/com/thealgorithms/datastructures/queues/QueueByTwoStacksTest.java b/src/test/java/com/thealgorithms/datastructures/queues/QueueByTwoStacksTest.java index 87f136a84631..491cb7634302 100644 --- a/src/test/java/com/thealgorithms/datastructures/queues/QueueByTwoStacksTest.java +++ b/src/test/java/com/thealgorithms/datastructures/queues/QueueByTwoStacksTest.java @@ -33,19 +33,19 @@ public void testDequeue() { queue.put(10); queue.put(20); queue.put(30); - assertEquals(10, queue.get()); // First item out - assertEquals(20, queue.get()); // Second item out - assertEquals(30, queue.get()); // Third item out + assertEquals(10, queue.get()); + assertEquals(20, queue.get()); + assertEquals(30, queue.get()); } @Test public void testInterleavedOperations() { queue.put(10); queue.put(20); - assertEquals(10, queue.get()); // Dequeue first item + assertEquals(10, queue.get()); queue.put(30); - assertEquals(20, queue.get()); // Dequeue second item - assertEquals(30, queue.get()); // Dequeue third item + assertEquals(20, queue.get()); + assertEquals(30, queue.get()); } @Test @@ -62,8 +62,76 @@ public void testQueueSize() { @Test public void testEmptyQueueException() { - assertThrows(NoSuchElementException.class, () -> { - queue.get(); // Attempting to dequeue from empty queue - }); + assertThrows(NoSuchElementException.class, () -> queue.get()); + } + + @Test + public void testDequeueAllElements() { + for (int i = 1; i <= 5; i++) { + queue.put(i); + } + for (int i = 1; i <= 5; i++) { + assertEquals(i, queue.get()); + } + assertEquals(0, queue.size()); + } + + @Test + public void testLargeNumberOfOperations() { + int n = 1000; + for (int i = 0; i < n; i++) { + queue.put(i); + } + for (int i = 0; i < n; i++) { + assertEquals(i, queue.get()); + } + assertEquals(0, queue.size()); + } + + @Test + public void testRefillDuringDequeue() { + queue.put(1); + queue.put(2); + assertEquals(1, queue.get()); + queue.put(3); + queue.put(4); + assertEquals(2, queue.get()); + assertEquals(3, queue.get()); + assertEquals(4, queue.get()); + } + + @Test + public void testAlternatingPutAndGet() { + queue.put(1); + assertEquals(1, queue.get()); + queue.put(2); + queue.put(3); + assertEquals(2, queue.get()); + queue.put(4); + assertEquals(3, queue.get()); + assertEquals(4, queue.get()); + } + + @Test + public void testSizeStability() { + queue.put(100); + int size1 = queue.size(); + int size2 = queue.size(); + assertEquals(size1, size2); + } + + @Test + public void testMultipleEmptyDequeues() { + assertThrows(NoSuchElementException.class, () -> queue.get()); + assertThrows(NoSuchElementException.class, () -> queue.get()); + } + + @Test + public void testQueueWithStrings() { + QueueByTwoStacks stringQueue = new QueueByTwoStacks<>(); + stringQueue.put("a"); + stringQueue.put("b"); + assertEquals("a", stringQueue.get()); + assertEquals("b", stringQueue.get()); } }