BAEL-4503
This commit is contained in:
parent
26c7ec551d
commit
9735c8c093
|
@ -0,0 +1,37 @@
|
||||||
|
package com.baeldung.constantspatterns;
|
||||||
|
|
||||||
|
public class Calculator {
|
||||||
|
public static final double PI = 3.14159265359;
|
||||||
|
private static final double UPPER_LIMIT = 0x1.fffffffffffffP+1023;
|
||||||
|
|
||||||
|
public enum Operation {
|
||||||
|
ADD, SUBTRACT, DIVIDE, MULTIPLY
|
||||||
|
}
|
||||||
|
|
||||||
|
public double operateOnTwoNumbers(double numberOne, double numberTwo, Operation operation) {
|
||||||
|
if (numberOne > UPPER_LIMIT) {
|
||||||
|
throw new IllegalArgumentException("'numberOne' is too large");
|
||||||
|
}
|
||||||
|
if (numberTwo > UPPER_LIMIT) {
|
||||||
|
throw new IllegalArgumentException("'numberTwo' is too large");
|
||||||
|
}
|
||||||
|
double answer = 0;
|
||||||
|
|
||||||
|
switch (operation) {
|
||||||
|
case ADD:
|
||||||
|
answer = numberOne + numberTwo;
|
||||||
|
break;
|
||||||
|
case SUBTRACT:
|
||||||
|
answer = numberOne - numberTwo;
|
||||||
|
break;
|
||||||
|
case DIVIDE:
|
||||||
|
answer = numberOne / numberTwo;
|
||||||
|
break;
|
||||||
|
case MULTIPLY:
|
||||||
|
answer = numberOne * numberTwo;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return answer;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package com.baeldung.constantspatterns;
|
||||||
|
|
||||||
|
public interface CalculatorConstants {
|
||||||
|
double PI = 3.14159265359;
|
||||||
|
double UPPER_LIMIT = 0x1.fffffffffffffP+1023;
|
||||||
|
|
||||||
|
enum Operation {
|
||||||
|
ADD, SUBTRACT, MULTIPLY, DIVIDE
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.baeldung.constantspatterns;
|
||||||
|
|
||||||
|
public class GeometryCalculator implements CalculatorConstants {
|
||||||
|
public static final double UPPER_LIMIT = 100000000000000000000.0;
|
||||||
|
|
||||||
|
public double operateOnTwoNumbers(double numberOne, double numberTwo, Operation operation) {
|
||||||
|
if (numberOne > UPPER_LIMIT) {
|
||||||
|
throw new IllegalArgumentException("'numberOne' is too large");
|
||||||
|
}
|
||||||
|
if (numberTwo > UPPER_LIMIT) {
|
||||||
|
throw new IllegalArgumentException("'numberTwo' is too large");
|
||||||
|
}
|
||||||
|
double answer = 0;
|
||||||
|
|
||||||
|
switch (operation) {
|
||||||
|
case ADD:
|
||||||
|
answer = numberOne + numberTwo;
|
||||||
|
break;
|
||||||
|
case SUBTRACT:
|
||||||
|
answer = numberOne - numberTwo;
|
||||||
|
break;
|
||||||
|
case DIVIDE:
|
||||||
|
answer = numberOne / numberTwo;
|
||||||
|
break;
|
||||||
|
case MULTIPLY:
|
||||||
|
answer = numberOne * numberTwo;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return answer;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.baeldung.constantspatterns.calculations;
|
||||||
|
|
||||||
|
public final class MathConstants {
|
||||||
|
public static final double PI = 3.14159265359;
|
||||||
|
public static final double GOLDEN_RATIO = 1.6180;
|
||||||
|
public static final double GRAVITATIONAL_ACCELERATION = 9.8;
|
||||||
|
public static final double EULERS_NUMBER = 2.7182818284590452353602874713527;
|
||||||
|
|
||||||
|
public enum Operation {
|
||||||
|
ADD, SUBTRACT, DIVIDE, MULTIPLY
|
||||||
|
}
|
||||||
|
|
||||||
|
private MathConstants() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.baeldung.constantspatterns;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class ConstantPatternUnitTest {
|
||||||
|
@Test
|
||||||
|
public void givenTwoNumbersAndAdd_whenCallingCalculatorOperatOneTwoNumbers_correctAnswerReturned() {
|
||||||
|
Calculator calculator = new Calculator();
|
||||||
|
double expected = 4;
|
||||||
|
double answer = calculator.operateOnTwoNumbers(2, 2, Calculator.Operation.ADD);
|
||||||
|
assertEquals(expected, answer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTwoNumbersAndAdd_whenCallingGeometryCalculatorOperatOneTwoNumbers_correctAnswerReturned() {
|
||||||
|
GeometryCalculator calculator = new GeometryCalculator();
|
||||||
|
double expected = 4;
|
||||||
|
double answer = calculator.operateOnTwoNumbers(2, 2, GeometryCalculator.Operation.ADD);
|
||||||
|
assertEquals(expected, answer);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue