11package com .thealgorithms .datastructures .queues ;
22
3- import static org .junit .jupiter .api .Assertions .assertEquals ;
4- import static org .junit .jupiter .api .Assertions .assertNull ;
5- import static org .junit .jupiter .api .Assertions .assertTrue ;
6-
3+ import static org .junit .jupiter .api .Assertions .*;
74import org .junit .jupiter .api .Test ;
85
96class GenericArrayListQueueTest {
@@ -13,43 +10,87 @@ void testAdd() {
1310 GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
1411 assertTrue (queue .add (10 ));
1512 assertTrue (queue .add (20 ));
13+ assertEquals (10 , queue .peek ()); // Ensure the first added element is at the front
1614 }
1715
1816 @ Test
1917 void testPeek () {
2018 GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
21- assertNull (queue .peek ());
19+ assertNull (queue .peek (), "Peek should return null for an empty queue" );
2220
2321 queue .add (10 );
2422 queue .add (20 );
2523
26- assertEquals (10 , queue .peek ());
24+ assertEquals (10 , queue .peek (), "Peek should return the first element (10)" );
2725 queue .poll ();
28- assertEquals (20 , queue .peek ());
26+ assertEquals (20 , queue .peek (), "Peek should return the next element (20) after poll" );
2927 }
3028
3129 @ Test
3230 void testPoll () {
3331 GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
34- assertNull (queue .poll ());
32+ assertNull (queue .poll (), "Poll should return null for an empty queue" );
3533
3634 queue .add (10 );
3735 queue .add (20 );
3836
39- assertEquals (10 , queue .poll ());
40- assertEquals (20 , queue .poll ());
41- assertNull (queue .poll ());
37+ assertEquals (10 , queue .poll (), "Poll should return and remove the first element (10)" );
38+ assertEquals (20 , queue .poll (), "Poll should return and remove the next element (20)" );
39+ assertNull (queue .poll (), "Poll should return null when queue is empty after removals" );
4240 }
4341
4442 @ Test
4543 void testIsEmpty () {
4644 GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
47- assertNull (queue .peek ());
48- assertNull (queue .poll ());
45+ assertTrue (queue .isEmpty (), "Queue should initially be empty" );
4946
5047 queue .add (30 );
51- assertEquals (30 , queue .peek ());
52- assertEquals (30 , queue .poll ());
53- assertNull (queue .peek ());
48+ assertFalse (queue .isEmpty (), "Queue should not be empty after adding an element" );
49+ queue .poll ();
50+ assertTrue (queue .isEmpty (), "Queue should be empty after removing the only element" );
51+ }
52+
53+ @ Test
54+ void testClearQueueAndReuse () {
55+ GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
56+ queue .add (5 );
57+ queue .add (10 );
58+ queue .poll ();
59+ queue .poll (); // Remove all elements
60+
61+ assertTrue (queue .isEmpty (), "Queue should be empty after all elements are removed" );
62+ assertNull (queue .peek (), "Peek should return null on an empty queue after clear" );
63+ assertTrue (queue .add (15 ), "Queue should be reusable after being emptied" );
64+ assertEquals (15 , queue .peek (), "Newly added element should be accessible in the empty queue" );
65+ }
66+
67+ @ Test
68+ void testOrderMaintained () {
69+ GenericArrayListQueue <String > queue = new GenericArrayListQueue <>();
70+ queue .add ("First" );
71+ queue .add ("Second" );
72+ queue .add ("Third" );
73+
74+ assertEquals ("First" , queue .poll (), "Order should be maintained; expected 'First'" );
75+ assertEquals ("Second" , queue .poll (), "Order should be maintained; expected 'Second'" );
76+ assertEquals ("Third" , queue .poll (), "Order should be maintained; expected 'Third'" );
77+ }
78+
79+ @ Test
80+ void testVariousDataTypes () {
81+ GenericArrayListQueue <Double > queue = new GenericArrayListQueue <>();
82+ queue .add (1.1 );
83+ queue .add (2.2 );
84+
85+ assertEquals (1.1 , queue .peek (), "Queue should handle Double data type correctly" );
86+ assertEquals (1.1 , queue .poll (), "Poll should return correct Double value" );
87+ assertEquals (2.2 , queue .peek (), "Peek should show next Double value in the queue" );
88+ }
89+
90+ @ Test
91+ void testEmptyPollAndPeekBehavior () {
92+ GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
93+ assertNull (queue .peek (), "Peek on an empty queue should return null" );
94+ assertNull (queue .poll (), "Poll on an empty queue should return null" );
5495 }
5596}
0 commit comments