mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-12-19 07:00:35 +08:00
testing: improve test coverage DequeTest (#6429)
testing: improve test coverage DequeTest
This commit is contained in:
committed by
GitHub
parent
ac5849323e
commit
4f16ad0b0e
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user