1
1
package com .thealgorithms .datastructures .queues ;
2
2
3
3
import static org .junit .jupiter .api .Assertions .assertEquals ;
4
+ import static org .junit .jupiter .api .Assertions .assertFalse ;
4
5
import static org .junit .jupiter .api .Assertions .assertNull ;
5
6
import static org .junit .jupiter .api .Assertions .assertTrue ;
6
7
@@ -13,43 +14,87 @@ void testAdd() {
13
14
GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
14
15
assertTrue (queue .add (10 ));
15
16
assertTrue (queue .add (20 ));
17
+ assertEquals (10 , queue .peek ()); // Ensure the first added element is at the front
16
18
}
17
19
18
20
@ Test
19
21
void testPeek () {
20
22
GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
21
- assertNull (queue .peek ());
23
+ assertNull (queue .peek (), "Peek should return null for an empty queue" );
22
24
23
25
queue .add (10 );
24
26
queue .add (20 );
25
27
26
- assertEquals (10 , queue .peek ());
28
+ assertEquals (10 , queue .peek (), "Peek should return the first element (10)" );
27
29
queue .poll ();
28
- assertEquals (20 , queue .peek ());
30
+ assertEquals (20 , queue .peek (), "Peek should return the next element (20) after poll" );
29
31
}
30
32
31
33
@ Test
32
34
void testPoll () {
33
35
GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
34
- assertNull (queue .poll ());
36
+ assertNull (queue .poll (), "Poll should return null for an empty queue" );
35
37
36
38
queue .add (10 );
37
39
queue .add (20 );
38
40
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" );
42
44
}
43
45
44
46
@ Test
45
47
void testIsEmpty () {
46
48
GenericArrayListQueue <Integer > queue = new GenericArrayListQueue <>();
47
- assertNull (queue .peek ());
48
- assertNull (queue .poll ());
49
+ assertTrue (queue .isEmpty (), "Queue should initially be empty" );
49
50
50
51
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" );
54
99
}
55
100
}
0 commit comments