11package com .thealgorithms .datastructures .queues ;
22
33import static org .junit .jupiter .api .Assertions .assertEquals ;
4+ import static org .junit .jupiter .api .Assertions .assertFalse ;
45import static org .junit .jupiter .api .Assertions .assertNull ;
56import static org .junit .jupiter .api .Assertions .assertTrue ;
67
@@ -13,43 +14,87 @@ void testAdd() {
1314 GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
1415 assertTrue (queue .add (10 ));
1516 assertTrue (queue .add (20 ));
17+ assertEquals (10 , queue .peek ()); // Ensure the first added element is at the front
1618 }
1719
1820 @ Test
1921 void testPeek () {
2022 GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
21- assertNull (queue .peek ());
23+ assertNull (queue .peek (), "Peek should return null for an empty queue" );
2224
2325 queue .add (10 );
2426 queue .add (20 );
2527
26- assertEquals (10 , queue .peek ());
28+ assertEquals (10 , queue .peek (), "Peek should return the first element (10)" );
2729 queue .poll ();
28- assertEquals (20 , queue .peek ());
30+ assertEquals (20 , queue .peek (), "Peek should return the next element (20) after poll" );
2931 }
3032
3133 @ Test
3234 void testPoll () {
3335 GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
34- assertNull (queue .poll ());
36+ assertNull (queue .poll (), "Poll should return null for an empty queue" );
3537
3638 queue .add (10 );
3739 queue .add (20 );
3840
39- assertEquals (10 , queue .poll ());
40- assertEquals (20 , queue .poll ());
41- assertNull (queue .poll ());
41+ assertEquals (10 , queue .poll (), "Poll should return and remove the first element (10)" );
42+ assertEquals (20 , queue .poll (), "Poll should return and remove the next element (20)" );
43+ assertNull (queue .poll (), "Poll should return null when queue is empty after removals" );
4244 }
4345
4446 @ Test
4547 void testIsEmpty () {
4648 GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
47- assertNull (queue .peek ());
48- assertNull (queue .poll ());
49+ assertTrue (queue .isEmpty (), "Queue should initially be empty" );
4950
5051 queue .add (30 );
51- assertEquals (30 , queue .peek ());
52- assertEquals (30 , queue .poll ());
53- assertNull (queue .peek ());
52+ assertFalse (queue .isEmpty (), "Queue should not be empty after adding an element" );
53+ queue .poll ();
54+ assertTrue (queue .isEmpty (), "Queue should be empty after removing the only element" );
55+ }
56+
57+ @ Test
58+ void testClearQueueAndReuse () {
59+ GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
60+ queue .add (5 );
61+ queue .add (10 );
62+ queue .poll ();
63+ queue .poll (); // Remove all elements
64+
65+ assertTrue (queue .isEmpty (), "Queue should be empty after all elements are removed" );
66+ assertNull (queue .peek (), "Peek should return null on an empty queue after clear" );
67+ assertTrue (queue .add (15 ), "Queue should be reusable after being emptied" );
68+ assertEquals (15 , queue .peek (), "Newly added element should be accessible in the empty queue" );
69+ }
70+
71+ @ Test
72+ void testOrderMaintained () {
73+ GenericArrayListQueue <String > queue = new GenericArrayListQueue <>();
74+ queue .add ("First" );
75+ queue .add ("Second" );
76+ queue .add ("Third" );
77+
78+ assertEquals ("First" , queue .poll (), "Order should be maintained; expected 'First'" );
79+ assertEquals ("Second" , queue .poll (), "Order should be maintained; expected 'Second'" );
80+ assertEquals ("Third" , queue .poll (), "Order should be maintained; expected 'Third'" );
81+ }
82+
83+ @ Test
84+ void testVariousDataTypes () {
85+ GenericArrayListQueue <Double > queue = new GenericArrayListQueue <>();
86+ queue .add (1.1 );
87+ queue .add (2.2 );
88+
89+ assertEquals (1.1 , queue .peek (), "Queue should handle Double data type correctly" );
90+ assertEquals (1.1 , queue .poll (), "Poll should return correct Double value" );
91+ assertEquals (2.2 , queue .peek (), "Peek should show next Double value in the queue" );
92+ }
93+
94+ @ Test
95+ void testEmptyPollAndPeekBehavior () {
96+ GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
97+ assertNull (queue .peek (), "Peek on an empty queue should return null" );
98+ assertNull (queue .poll (), "Poll on an empty queue should return null" );
5499 }
55100}
0 commit comments