From 44a1ec0195c5e92200f60fea26f1eb39ec73f716 Mon Sep 17 00:00:00 2001 From: ajay74984 <51405689+ajay74984@users.noreply.github.com> Date: Sun, 17 May 2020 05:27:15 +0200 Subject: [PATCH] OCP change (#9266) * OCP change * calculator unit test --- .../main/java/com/baeldung/o/Addition.java | 41 +++++++++++++++++ .../main/java/com/baeldung/o/Calculator.java | 14 ++++++ .../com/baeldung/o/CalculatorOperation.java | 7 +++ .../main/java/com/baeldung/o/Division.java | 43 ++++++++++++++++++ .../main/java/com/baeldung/o/Subtraction.java | 41 +++++++++++++++++ .../com/baeldung/o/CalculatorUnitTest.java | 44 +++++++++++++++++++ 6 files changed, 190 insertions(+) create mode 100644 patterns/solid/src/main/java/com/baeldung/o/Addition.java create mode 100644 patterns/solid/src/main/java/com/baeldung/o/Calculator.java create mode 100644 patterns/solid/src/main/java/com/baeldung/o/CalculatorOperation.java create mode 100644 patterns/solid/src/main/java/com/baeldung/o/Division.java create mode 100644 patterns/solid/src/main/java/com/baeldung/o/Subtraction.java create mode 100644 patterns/solid/src/main/test/com/baeldung/o/CalculatorUnitTest.java diff --git a/patterns/solid/src/main/java/com/baeldung/o/Addition.java b/patterns/solid/src/main/java/com/baeldung/o/Addition.java new file mode 100644 index 0000000000..6145b386d9 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/o/Addition.java @@ -0,0 +1,41 @@ +package com.baeldung.o; + +public class Addition implements CalculatorOperation { + private double number1; + private double number2; + private double result = 0.0; + + public Addition(double number1, double number2) { + this.number1 = number1; + this.number2 = number2; + } + + public double getNumber1() { + return number1; + } + + public void setNumber1(double number1) { + this.number1 = number1; + } + + public double getNumber2() { + return number2; + } + + public void setNumber2(double number2) { + this.number2 = number2; + } + + public double getResult() { + return result; + } + + public void setResult(double result) { + this.result = result; + } + + @Override + public void perform() { + result = number1 + number2; + } +} diff --git a/patterns/solid/src/main/java/com/baeldung/o/Calculator.java b/patterns/solid/src/main/java/com/baeldung/o/Calculator.java new file mode 100644 index 0000000000..11ace8eb20 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/o/Calculator.java @@ -0,0 +1,14 @@ +package com.baeldung.o; + +import java.security.InvalidParameterException; + +public class Calculator { + + public void calculate(CalculatorOperation operation) { + if (operation == null) { + throw new InvalidParameterException("Can not perform operation"); + } + + operation.perform(); + } +} diff --git a/patterns/solid/src/main/java/com/baeldung/o/CalculatorOperation.java b/patterns/solid/src/main/java/com/baeldung/o/CalculatorOperation.java new file mode 100644 index 0000000000..46648e25d8 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/o/CalculatorOperation.java @@ -0,0 +1,7 @@ +package com.baeldung.o; + +public interface CalculatorOperation { + + void perform(); + +} diff --git a/patterns/solid/src/main/java/com/baeldung/o/Division.java b/patterns/solid/src/main/java/com/baeldung/o/Division.java new file mode 100644 index 0000000000..24ab4355c2 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/o/Division.java @@ -0,0 +1,43 @@ +package com.baeldung.o; + +public class Division implements CalculatorOperation { + private double number1; + private double number2; + private double result = 0.0; + + public Division(double number1, double number2) { + this.number1 = number1; + this.number2 = number2; + } + + public double getNumber1() { + return number1; + } + + public void setNumber1(double number1) { + this.number1 = number1; + } + + public double getNumber2() { + return number2; + } + + public void setNumber2(double number2) { + this.number2 = number2; + } + + public double getResult() { + return result; + } + + public void setResult(double result) { + this.result = result; + } + + @Override + public void perform() { + if (number2 != 0) { + result = number1 / number2; + } + } +} diff --git a/patterns/solid/src/main/java/com/baeldung/o/Subtraction.java b/patterns/solid/src/main/java/com/baeldung/o/Subtraction.java new file mode 100644 index 0000000000..b74e0c5f73 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/o/Subtraction.java @@ -0,0 +1,41 @@ +package com.baeldung.o; + +public class Subtraction implements CalculatorOperation { + private double number1; + private double number2; + private double result = 0.0; + + public Subtraction(double number1, double number2) { + this.number1 = number1; + this.number2 = number2; + } + + public double getNumber1() { + return number1; + } + + public void setNumber1(double number1) { + this.number1 = number1; + } + + public double getNumber2() { + return number2; + } + + public void setNumber2(double number2) { + this.number2 = number2; + } + + public double getResult() { + return result; + } + + public void setResult(double result) { + this.result = result; + } + + @Override + public void perform() { + result = number1 - number2; + } +} diff --git a/patterns/solid/src/main/test/com/baeldung/o/CalculatorUnitTest.java b/patterns/solid/src/main/test/com/baeldung/o/CalculatorUnitTest.java new file mode 100644 index 0000000000..f372d450a7 --- /dev/null +++ b/patterns/solid/src/main/test/com/baeldung/o/CalculatorUnitTest.java @@ -0,0 +1,44 @@ +package com.baeldung.o; + +import static org.junit.Assert.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class CalculatorUnitTest { + + private static final double NUMBER_1 = 10.0; + private static final double NUMBER_2 = 20.0; + private static final double SUM = 30.0; + private static final double SUBTRACTION_RESULT = 10.0; + private static final double DIVISION_RESULT = 2.0; + + private Calculator calculator; + + @BeforeEach + public void setUp() { + calculator = new Calculator(); + } + + @Test + public void whenAddTwoNumber_returnSum() { + Addition addition = new Addition(NUMBER_1, NUMBER_2); + calculator.calculate(addition); + assertEquals(SUM, addition.getResult(), 0.0); + } + + @Test + public void whenSutractTwoNumber_returnCorrectResult() { + Subtraction subtraction = new Subtraction(NUMBER_2, NUMBER_1); + calculator.calculate(subtraction); + assertEquals(SUBTRACTION_RESULT, subtraction.getResult(), 0.0); + } + + @Test + public void whenDivideTwoNumber_returnCorrectResult() { + Division division = new Division(NUMBER_2, NUMBER_1); + calculator.calculate(division); + assertEquals(DIVISION_RESULT, division.getResult(), 0.0); + } + +}