Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 18a76b0350 | |||
| 55e5cbeb0f |
@@ -1,25 +1,16 @@
|
||||
package com.example;
|
||||
|
||||
import com.example.util.AddFunction;
|
||||
import com.example.util.CalcFunction;
|
||||
import com.example.util.DivideFunction;
|
||||
import com.example.util.MultiplyFunction;
|
||||
import com.example.util.PowerFunction;
|
||||
import com.example.util.SubtractFunction;
|
||||
import com.example.util.CalcFunctionFactory;
|
||||
import com.example.util.CalcOperation;
|
||||
|
||||
public class LoopTestApplication {
|
||||
|
||||
static void main() {
|
||||
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));
|
||||
CalcFunction multiply = new MultiplyFunction();
|
||||
System.out.println("MULTIPLICATION: " + multiply.calc(2, 5, 6));
|
||||
CalcFunction divide = new DivideFunction();
|
||||
System.out.println("DIVISION: " + divide.calc(2, 5, 6));
|
||||
CalcFunction power = new PowerFunction();
|
||||
System.out.println("POWER: " + power.calc(2, 5, 6));
|
||||
for (CalcOperation operation : CalcOperation.values()) {
|
||||
CalcFunction function = CalcFunctionFactory.create(operation);
|
||||
System.out.println(operation + ": " + function.calc(2, 5, 6));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.example.util;
|
||||
|
||||
public final class CalcFunctionFactory {
|
||||
|
||||
private CalcFunctionFactory() {
|
||||
}
|
||||
|
||||
public static CalcFunction create(CalcOperation operation) {
|
||||
if (operation == null) {
|
||||
throw new IllegalArgumentException("Operation must not be null");
|
||||
}
|
||||
return switch (operation) {
|
||||
case ADD -> new AddFunction();
|
||||
case SUBTRACT -> new SubtractFunction();
|
||||
case MULTIPLY -> new MultiplyFunction();
|
||||
case DIVIDE -> new DivideFunction();
|
||||
case POWER -> new PowerFunction();
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.example.util;
|
||||
|
||||
public enum CalcOperation {
|
||||
|
||||
ADD,
|
||||
SUBTRACT,
|
||||
MULTIPLY,
|
||||
DIVIDE,
|
||||
POWER
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.example.util;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
class CalcFunctionFactoryTest {
|
||||
|
||||
@Test
|
||||
void createsAddFunction() {
|
||||
assertInstanceOf(AddFunction.class, CalcFunctionFactory.create(CalcOperation.ADD));
|
||||
}
|
||||
|
||||
@Test
|
||||
void createsSubtractFunction() {
|
||||
assertInstanceOf(SubtractFunction.class, CalcFunctionFactory.create(CalcOperation.SUBTRACT));
|
||||
}
|
||||
|
||||
@Test
|
||||
void createsMultiplyFunction() {
|
||||
assertInstanceOf(MultiplyFunction.class, CalcFunctionFactory.create(CalcOperation.MULTIPLY));
|
||||
}
|
||||
|
||||
@Test
|
||||
void createsDivideFunction() {
|
||||
assertInstanceOf(DivideFunction.class, CalcFunctionFactory.create(CalcOperation.DIVIDE));
|
||||
}
|
||||
|
||||
@Test
|
||||
void createsPowerFunction() {
|
||||
assertInstanceOf(PowerFunction.class, CalcFunctionFactory.create(CalcOperation.POWER));
|
||||
}
|
||||
|
||||
@Test
|
||||
void createsFunctionForEveryOperation() {
|
||||
for (CalcOperation operation : CalcOperation.values()) {
|
||||
assertNotNull(CalcFunctionFactory.create(operation), "No function for " + operation);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void createdFunctionCalculates() {
|
||||
assertEquals(13.0, CalcFunctionFactory.create(CalcOperation.ADD).calc(2.0, 5.0, 6.0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsNullOperation() {
|
||||
assertThrows(IllegalArgumentException.class, () -> CalcFunctionFactory.create(null));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user