X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2FSumBusinessLogicTest.java;h=ca8716ea200d18ef655bc904f6867f7b69651476;hb=06d7dacb51009e77147cd097adf0ea602bd82dd0;hp=e65ee83939c2532c10404ae6bc211506b7a69909;hpb=5592437b9ad0caa7c9dd28b6248cc786fae625d3;p=demos%2Fkafka%2Ftraining diff --git a/src/test/java/de/juplo/kafka/SumBusinessLogicTest.java b/src/test/java/de/juplo/kafka/SumBusinessLogicTest.java index e65ee83..ca8716e 100644 --- a/src/test/java/de/juplo/kafka/SumBusinessLogicTest.java +++ b/src/test/java/de/juplo/kafka/SumBusinessLogicTest.java @@ -2,6 +2,14 @@ package de.juplo.kafka; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.Arrays; +import java.util.stream.IntStream; +import java.util.stream.Stream; import static org.assertj.core.api.Assertions.*; @@ -10,7 +18,7 @@ public class SumBusinessLogicTest { @Test @DisplayName("A new sum can be started, if it does not exist") - public void testCanStartSumIfNotExists() + public void testStartSumPossibleIfNotExists() { SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); assertThatNoException().isThrownBy(() -> sumBusinessLogic.startSum("foo")); @@ -27,7 +35,7 @@ public class SumBusinessLogicTest @Test @DisplayName("An empty Optional should be returned, for a non-existing sum") - public void testEmptyOptionalForNonExistingSum() + public void testGetSumReturnsEmptyOptionalForNonExistingSum() { SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); assertThat(sumBusinessLogic.getSum("foo")).isEmpty(); @@ -35,7 +43,7 @@ public class SumBusinessLogicTest @Test @DisplayName("A non-empty Optional should be returned, for an existing sum") - public void testNonEmptyOptionalForExistingSum() + public void testGetSumReturnsNonEmptyOptionalForExistingSum() { SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); sumBusinessLogic.startSum("foo"); @@ -44,13 +52,23 @@ public class SumBusinessLogicTest @Test @DisplayName("A sum can be ended, if it does exist") - public void testCanEndIfSumExists() + public void testEndSumPossibleIfSumExists() { SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); sumBusinessLogic.startSum("foo"); assertThatNoException().isThrownBy(() -> sumBusinessLogic.endSum("foo")); } + @Test + @DisplayName("An existing sum is removed, if ended") + public void testEndSumRemovesSumIfSumExists() + { + SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); + sumBusinessLogic.startSum("foo"); + sumBusinessLogic.endSum("foo"); + assertThat(sumBusinessLogic.getSum("foo")).isEmpty(); + } + @Test @DisplayName("An existing Sum returns a non-null value, if ended") public void testEndSumReturnsNonNullValueIfSumExists() @@ -76,4 +94,59 @@ public class SumBusinessLogicTest SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); assertThatIllegalStateException().isThrownBy(() -> sumBusinessLogic.endSum("foo")); } + + @Test + @DisplayName("Adding to a non-existent sum causes an IllegalStateException") + public void testAddToSumCausesExceptionIfNotExists() + { + SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); + assertThatIllegalStateException().isThrownBy(() -> sumBusinessLogic.addToSum("foo", 1)); + } + + @Test + @DisplayName("Adding a null-value to an existing sum causes an IllegalArgumentException") + public void testAddSumWithNullValueToExistingSumCausesException() + { + SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); + sumBusinessLogic.startSum("foo"); + assertThatIllegalArgumentException().isThrownBy(() -> sumBusinessLogic.addToSum("foo", null)); + } + + @ParameterizedTest(name = "{index}: Adding {0}") + @DisplayName("Adding a non-positive value to an existing sum causes an IllegalArgumentException") + @ValueSource(ints = { 0, -1, -6, -66, Integer.MIN_VALUE }) + public void testAddSumWithNonPositiveValueToExistingSumCausesException(int value) + { + SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); + sumBusinessLogic.startSum("foo"); + assertThatIllegalArgumentException().isThrownBy(() -> sumBusinessLogic.addToSum("foo", value)); + } + + @Test + @DisplayName("Can add a positive value to an existing sum") + public void testAddSumWithPositiveValuePossibleIfSumExists() + { + SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); + sumBusinessLogic.startSum("foo"); + assertThatIllegalArgumentException().isThrownBy(() -> sumBusinessLogic.addToSum("foo", -1)); + } + + @ParameterizedTest(name = "{index}: Summing up {0}") + @DisplayName("Adds up numbers correctly") + @MethodSource("numbersProvider") + public void testAddSumAddsUpNumbersCorrectlyIfSumExists(int... numbers) + { + long expectedResult = Arrays.stream(numbers).sum(); + SumBusinessLogic sumBusinessLogic = new SumBusinessLogic(); + sumBusinessLogic.startSum("foo"); + Arrays.stream(numbers).forEach(number -> sumBusinessLogic.addToSum("foo", number)); + assertThat(sumBusinessLogic.endSum("foo")).isEqualTo(expectedResult); + } + + static Stream numbersProvider() { + return Stream.of( + Arguments.of((Object) IntStream.rangeClosed(1,9).toArray()), + Arguments.of((Object) IntStream.rangeClosed(1,19).toArray()), + Arguments.of((Object) IntStream.rangeClosed(1,66).toArray())); + } }