testing: improve QueueByTwoStacksTest (#6416)

testing: improve QueueByTwoStacksTest
This commit is contained in:
Oleksandr Klymenko
2025-07-22 19:33:55 +02:00
committed by GitHub
parent 7c2af29d29
commit 3304cf2e58

View File

@@ -33,19 +33,19 @@ public class QueueByTwoStacksTest {
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 class QueueByTwoStacksTest {
@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<String> stringQueue = new QueueByTwoStacks<>();
stringQueue.put("a");
stringQueue.put("b");
assertEquals("a", stringQueue.get());
assertEquals("b", stringQueue.get());
}
}