mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-12-19 07:00:35 +08:00
146 lines
4.6 KiB
Java
146 lines
4.6 KiB
Java
package com.thealgorithms.others;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
import java.util.EmptyStackException;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
class QueueUsingTwoStacksTest {
|
|
|
|
private QueueUsingTwoStacks queue;
|
|
|
|
@BeforeEach
|
|
void setUp() {
|
|
queue = new QueueUsingTwoStacks();
|
|
}
|
|
|
|
@Test
|
|
void testIsEmptyInitially() {
|
|
assertTrue(queue.isEmpty(), "Queue should be empty initially");
|
|
}
|
|
|
|
@Test
|
|
void testInsertSingleElement() {
|
|
queue.insert(1);
|
|
assertFalse(queue.isEmpty(), "Queue should not be empty after inserting an element");
|
|
assertEquals(1, queue.peekFront(), "The front element should be the inserted element");
|
|
}
|
|
|
|
@Test
|
|
void testRemoveSingleElement() {
|
|
queue.insert(1);
|
|
assertEquals(1, queue.remove(), "Removing should return the first inserted element");
|
|
assertTrue(queue.isEmpty(), "Queue should be empty after removing the only element");
|
|
}
|
|
|
|
@Test
|
|
void testRemoveMultipleElements() {
|
|
queue.insert(1);
|
|
queue.insert(2);
|
|
queue.insert(3);
|
|
assertEquals(1, queue.remove(), "First removed element should be the first inserted element");
|
|
assertEquals(2, queue.remove(), "Second removed element should be the second inserted element");
|
|
assertEquals(3, queue.remove(), "Third removed element should be the third inserted element");
|
|
assertTrue(queue.isEmpty(), "Queue should be empty after removing all elements");
|
|
}
|
|
|
|
@Test
|
|
void testPeekFrontWithMultipleElements() {
|
|
queue.insert(1);
|
|
queue.insert(2);
|
|
queue.insert(3);
|
|
assertEquals(1, queue.peekFront(), "The front element should be the first inserted element");
|
|
}
|
|
|
|
@Test
|
|
void testPeekBackWithMultipleElements() {
|
|
queue.insert(1);
|
|
queue.insert(2);
|
|
queue.insert(3);
|
|
assertEquals(3, queue.peekBack(), "The back element should be the last inserted element");
|
|
}
|
|
|
|
@Test
|
|
void testPeekFrontAfterRemovals() {
|
|
queue.insert(1);
|
|
queue.insert(2);
|
|
queue.insert(3);
|
|
queue.remove();
|
|
assertEquals(2, queue.peekFront(), "After removing one element, the front should be the second element");
|
|
}
|
|
|
|
@Test
|
|
void testIsEmptyAfterRemovals() {
|
|
queue.insert(1);
|
|
queue.insert(2);
|
|
queue.remove();
|
|
queue.remove();
|
|
assertTrue(queue.isEmpty(), "Queue should be empty after removing all elements");
|
|
}
|
|
|
|
@Test
|
|
void testRemoveFromEmptyQueue() {
|
|
org.junit.jupiter.api.Assertions.assertThrows(EmptyStackException.class, queue::remove, "Removing from an empty queue should throw an exception");
|
|
}
|
|
|
|
@Test
|
|
void testPeekFrontFromEmptyQueue() {
|
|
org.junit.jupiter.api.Assertions.assertThrows(EmptyStackException.class, queue::peekFront, "Peeking front from an empty queue should throw an exception");
|
|
}
|
|
|
|
@Test
|
|
void testPeekBackFromEmptyQueue() {
|
|
org.junit.jupiter.api.Assertions.assertThrows(EmptyStackException.class, queue::peekBack, "Peeking back from an empty queue should throw an exception");
|
|
}
|
|
|
|
@Test
|
|
void testIsInStackEmptyInitially() {
|
|
assertTrue(queue.isInStackEmpty(), "inStack should be empty initially");
|
|
}
|
|
|
|
@Test
|
|
void testIsOutStackEmptyInitially() {
|
|
assertTrue(queue.isOutStackEmpty(), "outStack should be empty initially");
|
|
}
|
|
|
|
@Test
|
|
void testIsInStackEmptyAfterInsertion() {
|
|
queue.insert(1);
|
|
assertFalse(queue.isInStackEmpty(), "inStack should not be empty after an insertion");
|
|
}
|
|
|
|
@Test
|
|
void testIsOutStackEmptyAfterInsertion() {
|
|
queue.insert(1);
|
|
assertTrue(queue.isOutStackEmpty(), "outStack should still be empty after an insertion");
|
|
}
|
|
|
|
@Test
|
|
void testIsOutStackEmptyAfterRemoval() {
|
|
queue.insert(1);
|
|
queue.remove();
|
|
assertTrue(queue.isOutStackEmpty(), "outStack should be empty after removing the only element");
|
|
}
|
|
|
|
@Test
|
|
void testIsInStackEmptyAfterMultipleRemovals() {
|
|
queue.insert(1);
|
|
queue.insert(2);
|
|
queue.remove();
|
|
queue.remove();
|
|
assertTrue(queue.isInStackEmpty(), "inStack should be empty after removing all elements");
|
|
}
|
|
|
|
@Test
|
|
void testIsOutStackEmptyAfterMultipleRemovals() {
|
|
queue.insert(1);
|
|
queue.insert(2);
|
|
queue.remove();
|
|
queue.remove();
|
|
assertTrue(queue.isOutStackEmpty(), "outStack should be empty after removing all elements");
|
|
}
|
|
}
|