diff --git a/src/main/java/com/example/LoopTestApplication.java b/src/main/java/com/example/LoopTestApplication.java index 72e5e45..3b551c4 100644 --- a/src/main/java/com/example/LoopTestApplication.java +++ b/src/main/java/com/example/LoopTestApplication.java @@ -2,6 +2,7 @@ package com.example; import com.example.util.AddFunction; import com.example.util.CalcFunction; +import com.example.util.SubtractFunction; public class LoopTestApplication { @@ -9,5 +10,7 @@ public class LoopTestApplication { System.out.println("============== Calculator ============="); CalcFunction add = new AddFunction(); System.out.println("ADDITION: " + add.calc(2, 5, 6)); + CalcFunction subtract = new SubtractFunction(); + System.out.println("SUBTRACTION: " + subtract.calc(2, 5, 6)); } } diff --git a/src/main/java/com/example/util/SubtractFunction.java b/src/main/java/com/example/util/SubtractFunction.java new file mode 100644 index 0000000..318f942 --- /dev/null +++ b/src/main/java/com/example/util/SubtractFunction.java @@ -0,0 +1,15 @@ +package com.example.util; + +public class SubtractFunction implements CalcFunction { + + public double calc(double... input) { + if (input.length == 0) { + return 0; + } + double result = input[0]; + for (int i = 1; i < input.length; i++) { + result -= input[i]; + } + return result; + } +} diff --git a/src/test/java/com/example/util/SubtractFunctionTest.java b/src/test/java/com/example/util/SubtractFunctionTest.java new file mode 100644 index 0000000..e8a8342 --- /dev/null +++ b/src/test/java/com/example/util/SubtractFunctionTest.java @@ -0,0 +1,30 @@ +package com.example.util; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class SubtractFunctionTest { + + private final SubtractFunction subtractFunction = new SubtractFunction(); + + @Test + void subtractsMultipleValues() { + assertEquals(1.0, subtractFunction.calc(6.0, 2.0, 3.0)); + } + + @Test + void returnsSingleValue() { + assertEquals(5.0, subtractFunction.calc(5.0)); + } + + @Test + void returnsZeroForNoInput() { + assertEquals(0.0, subtractFunction.calc()); + } + + @Test + void subtractsNegativeValues() { + assertEquals(3.0, subtractFunction.calc(1.0, -2.0)); + } +}