X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2FAdderBusinessLogicTest.java;fp=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2FAdderBusinessLogicTest.java;h=8e4926315e95d05eefd2dcd90bf1ab783db98e52;hb=17360fbf2f944f6818c748ed1235264b7d8d28a4;hp=0000000000000000000000000000000000000000;hpb=ae8d6e6f4144cdef108b8d13e005b0f869599a77;p=demos%2Fkafka%2Ftraining diff --git a/src/test/java/de/juplo/kafka/AdderBusinessLogicTest.java b/src/test/java/de/juplo/kafka/AdderBusinessLogicTest.java new file mode 100644 index 0000000..8e49263 --- /dev/null +++ b/src/test/java/de/juplo/kafka/AdderBusinessLogicTest.java @@ -0,0 +1,117 @@ +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.*; + + +public class AdderBusinessLogicTest +{ + @Test + @DisplayName("An empty Optional should be returned, for a non-existing sum") + public void testGetSumReturnsEmptyOptionalForNonExistingSum() + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + assertThat(adder.getSum("foo")).isEmpty(); + } + + @Test + @DisplayName("A non-empty Optional should be returned, for an existing sum") + public void testGetSumReturnsNonEmptyOptionalForExistingSum() + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + adder.addToSum("foo", 6); + assertThat(adder.getSum("foo")).isNotEmpty(); + } + + @Test + @DisplayName("A sum can be calculated, if it does exist") + public void testCalculatePossibleIfSumExists() + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + adder.addToSum("foo", 6); + assertThatNoException().isThrownBy(() -> adder.calculate("foo")); + } + + @Test + @DisplayName("An existing sum is removed, if ended") + public void testCalculateRemovesSumIfSumExists() + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + adder.addToSum("foo", 6); + adder.calculate("foo"); + assertThat(adder.getSum("foo")).isEmpty(); + } + + @Test + @DisplayName("An existing sum returns a non-null value, if calculated") + public void testCalculateReturnsNonNullValueIfSumExists() + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + adder.addToSum("foo", 6); + assertThat(adder.calculate("foo")).isNotNull(); + } + + @Test + @DisplayName("Ending a non-existing sum, causes an IllegalStateException") + public void testCalculateCausesExceptionIfNotExists() + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + assertThatIllegalStateException().isThrownBy(() -> adder.calculate("foo")); + } + + @Test + @DisplayName("Adding a null-value to a sum causes an IllegalArgumentException") + public void testAddToSumWithNullValueCausesException() + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + assertThatIllegalArgumentException().isThrownBy(() -> adder.addToSum("foo", null)); + } + + @ParameterizedTest(name = "{index}: Adding {0}") + @DisplayName("Adding a non-positive value to a sum causes an IllegalArgumentException") + @ValueSource(ints = { 0, -1, -6, -66, Integer.MIN_VALUE }) + public void testAddToSumWithNonPositiveValueCausesException(int value) + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + assertThatIllegalArgumentException().isThrownBy(() -> adder.addToSum("foo", value)); + } + + @ParameterizedTest(name = "{index}: Adding {0}") + @DisplayName("Can add a positive value to a sum") + @ValueSource(ints = { 1, 3, 6, 66, 7, 9 }) + public void testAddToSumWithPositiveValuePossible(int value) + { + AdderBusinessLogic adder = new AdderBusinessLogic(); + assertThatNoException().isThrownBy(() -> adder.addToSum("foo", value)); + } + + @ParameterizedTest(name = "{index}: Summing up {0}") + @DisplayName("Adds up numbers correctly") + @MethodSource("numbersProvider") + public void testAddToSumAddsUpNumbersCorrectlyIfSumExists(int... numbers) + { + long expectedResult = Arrays.stream(numbers).sum(); + AdderBusinessLogic adder = new AdderBusinessLogic(); + Arrays.stream(numbers).forEach(number -> adder.addToSum("foo", number)); + AdderResult result = adder.calculate("foo"); + assertThat(result.number).isEqualTo(numbers[numbers.length-1]); + assertThat(result.sum).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())); + } +}