File tree Expand file tree Collapse file tree 2 files changed +31
-1
lines changed
main/java/com/williamfiset/algorithms/datastructures/stack
test/java/com/williamfiset/algorithms/datastructures/stack Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -55,6 +55,6 @@ public int search(T elem) {
5555 // Allow users to iterate through the stack using an iterator
5656 @ Override
5757 public java .util .Iterator <T > iterator () {
58- return list .iterator ();
58+ return list .descendingIterator ();
5959 }
6060}
Original file line number Diff line number Diff line change 55
66import java .util .ArrayList ;
77import java .util .List ;
8+ import org .junit .jupiter .api .Test ;
89import org .junit .jupiter .params .ParameterizedTest ;
910import org .junit .jupiter .params .provider .MethodSource ;
1011
@@ -78,4 +79,33 @@ public void testExhaustively(Stack<Integer> stack) {
7879 assertThat (stack .size ()).isEqualTo (0 );
7980 assertThat (stack .isEmpty ()).isTrue ();
8081 }
82+
83+ @ Test
84+ public void testIteratorLifoOrder () {
85+ ListStack <Integer > stack = new ListStack <>();
86+ stack .push (1 );
87+ stack .push (2 );
88+ stack .push (3 );
89+
90+ List <Integer > iterated = new ArrayList <>();
91+ for (Integer v : stack ) iterated .add (v );
92+
93+ // Expect iteration from top (3) to bottom (1)
94+ assertThat (iterated ).containsExactly (3 , 2 , 1 ).inOrder ();
95+
96+ // Iterator should not have removed elements
97+ assertThat (stack .size ()).isEqualTo (3 );
98+ assertThat (stack .peek ()).isEqualTo (3 );
99+ }
100+
101+ @ Test
102+ public void testIteratorOnEmptyStack () {
103+ ListStack <Integer > stack = new ListStack <>();
104+
105+ List <Integer > iterated = new ArrayList <>();
106+ for (Integer v : stack ) iterated .add (v );
107+
108+ assertThat (iterated ).isEmpty ();
109+ assertThat (stack .isEmpty ()).isTrue ();
110+ }
81111}
You can’t perform that action at this time.
0 commit comments