diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/stack/StackUnitTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/stack/StackUnitTest.java index 2b04617f36..6a2feff551 100644 --- a/core-java-modules/core-java/src/test/java/com/baeldung/stack/StackUnitTest.java +++ b/core-java-modules/core-java/src/test/java/com/baeldung/stack/StackUnitTest.java @@ -1,123 +1,153 @@ package com.baeldung.stack; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.junit.Assert.*; +import org.junit.Test; import java.util.Arrays; import java.util.List; import java.util.ListIterator; import java.util.Stack; +import java.util.stream.Collectors; -import org.junit.Test; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; public class StackUnitTest { @Test - public void whenStackIsCreated_thenItHasSize0() { - Stack intStack = new Stack(); + public void whenStackIsCreated_thenItHasSizeZero() { + Stack intStack = new Stack<>(); + assertEquals(0, intStack.size()); } @Test - public void givenEmptyStack_whenElementIsPushed_thenStackSizeisIncreased() { - Stack intStack = new Stack(); + public void whenElementIsPushed_thenStackSizeIsIncreased() { + Stack intStack = new Stack<>(); intStack.push(1); + assertEquals(1, intStack.size()); } @Test - public void givenEmptyStack_whenMultipleElementsArePushed_thenStackSizeisIncreased() { - Stack intStack = new Stack(); + public void whenMultipleElementsArePushed_thenStackSizeIsIncreased() { + Stack intStack = new Stack<>(); List intList = Arrays.asList(1, 2, 3, 4, 5, 6, 7); + boolean result = intStack.addAll(intList); + assertTrue(result); assertEquals(7, intList.size()); } @Test public void whenElementIsPoppedFromStack_thenElementIsRemovedAndSizeChanges() { - Stack intStack = new Stack(); + Stack intStack = new Stack<>(); intStack.push(5); - intStack.pop(); + + Integer element = intStack.pop(); + + assertEquals(Integer.valueOf(5), element); assertTrue(intStack.isEmpty()); } @Test public void whenElementIsPeeked_thenElementIsNotRemovedAndSizeDoesNotChange() { - Stack intStack = new Stack(); + Stack intStack = new Stack<>(); intStack.push(5); - intStack.peek(); + + Integer element = intStack.peek(); + + assertEquals(Integer.valueOf(5), element); assertEquals(1, intStack.search(5)); assertEquals(1, intStack.size()); } @Test public void whenElementIsOnStack_thenSearchReturnsItsDistanceFromTheTop() { - Stack intStack = new Stack(); + Stack intStack = new Stack<>(); intStack.push(5); - assertEquals(1, intStack.search(5)); + intStack.push(8); + + assertEquals(2, intStack.search(5)); } @Test public void whenElementIsOnStack_thenIndexOfReturnsItsIndex() { - Stack intStack = new Stack(); + Stack intStack = new Stack<>(); intStack.push(5); + int indexOf = intStack.indexOf(5); + assertEquals(0, indexOf); } @Test public void whenMultipleElementsAreOnStack_thenIndexOfReturnsLastElementIndex() { - Stack intStack = new Stack(); + Stack intStack = new Stack<>(); intStack.push(5); intStack.push(5); intStack.push(5); + int lastIndexOf = intStack.lastIndexOf(5); + assertEquals(2, lastIndexOf); } @Test - public void givenElementOnStack_whenRemoveElementIsInvoked_thenElementIsRemoved() { - Stack intStack = new Stack(); + public void whenRemoveElementIsInvoked_thenElementIsRemoved() { + Stack intStack = new Stack<>(); intStack.push(5); intStack.push(5); + intStack.removeElement(5); + assertEquals(1, intStack.size()); } @Test - public void givenElementOnStack_whenRemoveElementAtIsInvoked_thenElementIsRemoved() { - Stack intStack = new Stack(); + public void whenRemoveElementAtIsInvoked_thenElementIsRemoved() { + Stack intStack = new Stack<>(); intStack.push(5); intStack.push(7); + intStack.removeElementAt(1); + assertEquals(-1, intStack.search(7)); } @Test - public void givenElementsOnStack_whenRemoveAllElementsIsInvoked_thenAllElementsAreRemoved() { - Stack intStack = new Stack(); + public void whenRemoveAllElementsIsInvoked_thenAllElementsAreRemoved() { + Stack intStack = new Stack<>(); intStack.push(5); intStack.push(7); + intStack.removeAllElements(); + assertTrue(intStack.isEmpty()); } @Test public void givenElementsOnStack_whenRemoveAllIsInvoked_thenAllElementsFromCollectionAreRemoved() { - Stack intStack = new Stack(); + Stack intStack = new Stack<>(); List intList = Arrays.asList(1, 2, 3, 4, 5, 6, 7); intStack.addAll(intList); intStack.add(500); + intStack.removeAll(intList); + assertEquals(1, intStack.size()); + assertEquals(1, intStack.search(500)); } @Test - public void givenElementsOnStack_whenRemoveIfIsInvoked_thenAllElementsSatysfyingConditionAreRemoved() { - Stack intStack = new Stack(); + public void whenRemoveIfIsInvoked_thenAllElementsSatysfyingConditionAreRemoved() { + Stack intStack = new Stack<>(); List intList = Arrays.asList(1, 2, 3, 4, 5, 6, 7); intStack.addAll(intList); + intStack.removeIf(element -> element < 6); + assertEquals(2, intStack.size()); } @@ -126,12 +156,28 @@ public class StackUnitTest { Stack intStack = new Stack<>(); List intList = Arrays.asList(1, 2, 3, 4, 5, 6, 7); intStack.addAll(intList); + ListIterator it = intStack.listIterator(); - Stack result = new Stack(); + + Stack result = new Stack<>(); while(it.hasNext()) { result.push(it.next()); } assertThat(result, equalTo(intStack)); } + + @Test + public void whenStackIsFiltered_allElementsNotSatisfyingFilterConditionAreDiscarded() { + Stack intStack = new Stack<>(); + List inputIntList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 9, 10); + intStack.addAll(inputIntList); + + List filtered = intStack + .stream() + .filter(element -> element <= 3) + .collect(Collectors.toList()); + + assertEquals(3, filtered.size()); + } }