diff --git a/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/Discount.java b/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/Discount.java new file mode 100644 index 00000000..693c811c --- /dev/null +++ b/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/Discount.java @@ -0,0 +1,20 @@ +package com.example.refactoring._06_mutable_data._21_replace_derived_variable_with_query; + +public class Discount { + + private double discount; + + private double baseTotal; + + public Discount(double baseTotal) { + this.baseTotal = baseTotal; + } + + public double getDiscountedTotal() { + return this.baseTotal - this.discount; + } + + public void setDiscount(double number) { + this.discount = number; + } +} diff --git a/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/ProductionPlan.java b/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/ProductionPlan.java new file mode 100644 index 00000000..1f16ef6a --- /dev/null +++ b/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/ProductionPlan.java @@ -0,0 +1,17 @@ +package com.example.refactoring._06_mutable_data._21_replace_derived_variable_with_query; + +import java.util.ArrayList; +import java.util.List; + +public class ProductionPlan { + + private List adjustments = new ArrayList<>(); + + public void applyAdjustment(double adjustment) { + this.adjustments.add(adjustment); + } + + public double getProduction() { + return this.adjustments.stream().mapToDouble(Double::valueOf).sum(); + } +} diff --git a/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/before/Discount.java b/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/before/Discount.java new file mode 100644 index 00000000..ea5a6393 --- /dev/null +++ b/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/before/Discount.java @@ -0,0 +1,22 @@ +package com.example.refactoring._06_mutable_data._21_replace_derived_variable_with_query.before; + +public class Discount { + + private double discountedTotal; + private double discount; + + private double baseTotal; + + public Discount(double baseTotal) { + this.baseTotal = baseTotal; + } + + public double getDiscountedTotal() { + return this.discountedTotal; + } + + public void setDiscount(double number) { + this.discount = number; + this.discountedTotal = this.baseTotal - this.discount; + } +} diff --git a/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/before/ProductionPlan.java b/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/before/ProductionPlan.java new file mode 100644 index 00000000..c7fb30aa --- /dev/null +++ b/refactoring/src/main/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/before/ProductionPlan.java @@ -0,0 +1,19 @@ +package com.example.refactoring._06_mutable_data._21_replace_derived_variable_with_query.before; + +import java.util.ArrayList; +import java.util.List; + +public class ProductionPlan { + + private double production; + private List adjustments = new ArrayList<>(); + + public void applyAdjustment(double adjustment) { + this.adjustments.add(adjustment); + this.production += adjustment; + } + + public double getProduction() { + return this.production; + } +} diff --git a/refactoring/src/test/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/DiscountTest.java b/refactoring/src/test/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/DiscountTest.java new file mode 100644 index 00000000..75c6bd4d --- /dev/null +++ b/refactoring/src/test/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/DiscountTest.java @@ -0,0 +1,18 @@ +package com.example.refactoring._06_mutable_data._21_replace_derived_variable_with_query; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class DiscountTest { + + @Test + void discount() { + Discount discount = new Discount(100); + assertEquals(100, discount.getDiscountedTotal()); + + discount.setDiscount(10); + assertEquals(90, discount.getDiscountedTotal()); + } + +} \ No newline at end of file diff --git a/refactoring/src/test/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/ProductionPlanTest.java b/refactoring/src/test/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/ProductionPlanTest.java new file mode 100644 index 00000000..e7de8ef5 --- /dev/null +++ b/refactoring/src/test/java/com/example/refactoring/_06_mutable_data/_21_replace_derived_variable_with_query/ProductionPlanTest.java @@ -0,0 +1,17 @@ +package com.example.refactoring._06_mutable_data._21_replace_derived_variable_with_query; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ProductionPlanTest { + + @Test + void production() { + ProductionPlan productionPlan = new ProductionPlan(); + productionPlan.applyAdjustment(10); + productionPlan.applyAdjustment(20); + assertEquals(30, productionPlan.getProduction()); + } + +} \ No newline at end of file