testing: improve test coverage DequeTest (#6429)

testing: improve test coverage DequeTest
This commit is contained in:
Oleksandr Klymenko
2025-07-24 20:41:02 +02:00
committed by GitHub
parent ac5849323e
commit 4f16ad0b0e

View File

@@ -121,4 +121,77 @@ class DequeTest {
assertNull(deque.pollFirst());
org.junit.jupiter.api.Assertions.assertTrue(deque.isEmpty());
}
@Test
void testMultipleAddFirst() {
Deque<Integer> deque = new Deque<>();
deque.addFirst(1);
deque.addFirst(2);
deque.addFirst(3);
assertEquals(3, deque.peekFirst(), "First element should be the last added to front");
assertEquals(1, deque.peekLast(), "Last element should be the first added to front");
assertEquals(3, deque.size(), "Size should reflect all additions");
}
@Test
void testMultipleAddLast() {
Deque<Integer> deque = new Deque<>();
deque.addLast(1);
deque.addLast(2);
deque.addLast(3);
assertEquals(1, deque.peekFirst(), "First element should be the first added to back");
assertEquals(3, deque.peekLast(), "Last element should be the last added to back");
assertEquals(3, deque.size(), "Size should reflect all additions");
}
@Test
void testSingleElementOperations() {
Deque<Integer> deque = new Deque<>();
deque.addFirst(1);
assertEquals(1, deque.peekFirst(), "Single element should be both first and last");
assertEquals(1, deque.peekLast(), "Single element should be both first and last");
assertEquals(1, deque.size());
assertEquals(1, deque.pollFirst(), "Should be able to poll single element from front");
org.junit.jupiter.api.Assertions.assertTrue(deque.isEmpty(), "Deque should be empty after polling single element");
}
@Test
void testSingleElementPollLast() {
Deque<Integer> deque = new Deque<>();
deque.addLast(1);
assertEquals(1, deque.pollLast(), "Should be able to poll single element from back");
org.junit.jupiter.api.Assertions.assertTrue(deque.isEmpty(), "Deque should be empty after polling single element");
}
@Test
void testMixedNullAndValues() {
Deque<String> deque = new Deque<>();
deque.addFirst("first");
deque.addLast(null);
deque.addFirst(null);
deque.addLast("last");
assertEquals(4, deque.size(), "Should handle mixed null and non-null values");
assertNull(deque.pollFirst(), "Should poll null from front");
assertEquals("first", deque.pollFirst(), "Should poll non-null value");
assertNull(deque.pollLast().equals("last") ? null : deque.peekLast(), "Should handle null correctly");
}
@Test
void testSymmetricOperations() {
Deque<Integer> deque = new Deque<>();
// Test that addFirst/pollFirst and addLast/pollLast are symmetric
deque.addFirst(1);
deque.addLast(2);
assertEquals(1, deque.pollFirst(), "addFirst/pollFirst should be symmetric");
assertEquals(2, deque.pollLast(), "addLast/pollLast should be symmetric");
org.junit.jupiter.api.Assertions.assertTrue(deque.isEmpty(), "Deque should be empty after symmetric operations");
}
}