tdd-java-demo
tdd java demo with micro-commits
git clone https://9o.is/git/tdd-java-demo.git
commit 07f14abe783086ffac90ea5d87a70d877c88cb08 parent 19c9a6cfafe67c9ee6e9594017b68b278b338b39 Author: Jul <jul@9o.is> Date: Thu, 1 Apr 2021 02:24:05 +0800 move views to view package Diffstat:
| M | src/main/java/takehome/Basket.java | | | 2 | +- |
| D | src/main/java/takehome/CreateBasketView.java | | | 36 | ------------------------------------ |
| D | src/main/java/takehome/PurchaseDayView.java | | | 26 | -------------------------- |
| M | src/main/java/takehome/Runner.java | | | 4 | ++++ |
| D | src/main/java/takehome/TotalView.java | | | 18 | ------------------ |
| A | src/main/java/takehome/view/CreateBasketView.java | | | 39 | +++++++++++++++++++++++++++++++++++++++ |
| A | src/main/java/takehome/view/PurchaseDayView.java | | | 28 | ++++++++++++++++++++++++++++ |
| A | src/main/java/takehome/view/TotalView.java | | | 21 | +++++++++++++++++++++ |
8 files changed, 93 insertions(+), 81 deletions(-)
diff --git a/src/main/java/takehome/Basket.java b/src/main/java/takehome/Basket.java @@ -32,7 +32,7 @@ public class Basket { return items.count(item); } - double getTotal(Discount[] discounts) { + public double getTotal(Discount[] discounts) { double total = getTotal(); for (Discount discount : discounts) { if (discount.isValid(purchaseDate)) { diff --git a/src/main/java/takehome/CreateBasketView.java b/src/main/java/takehome/CreateBasketView.java @@ -1,36 +0,0 @@ -package takehome; - -import java.io.PrintStream; -import java.util.HashMap; -import java.util.Map; -import java.util.Scanner; - -public class CreateBasketView { - private final Scanner in; - private final PrintStream out; - - public CreateBasketView(Scanner in, PrintStream out) { - this.in = in; - this.out = out; - } - - public Basket apply(Item[] items) { - return new Basket(getItemAmounts(items)); - } - - private Map<Item, Integer> getItemAmounts(Item[] items) { - Map<Item, Integer> amounts = new HashMap<>(); - for (Item item : items) { - int amount = getItemAmount(item); - amounts.put(item, amount); - } - return amounts; - } - - private int getItemAmount(Item item) { - out.print("How much " + item.getName() + "? "); - int amount = in.nextInt(); - out.println(); - return amount; - } -} diff --git a/src/main/java/takehome/PurchaseDayView.java b/src/main/java/takehome/PurchaseDayView.java @@ -1,26 +0,0 @@ -package takehome; - -import java.io.PrintStream; -import java.time.LocalDate; -import java.util.Scanner; - -public class PurchaseDayView { - private final Scanner in; - private final PrintStream out; - - public PurchaseDayView(Scanner in, PrintStream out) { - this.in = in; - this.out = out; - } - - public Basket apply(Basket basket) { - LocalDate date = LocalDate.now().plusDays(getPurchaseDay()); - basket.setPurchaseDate(date); - return basket; - } - - private int getPurchaseDay() { - out.println("Purchase day (0 for today, 1 for tomorrow, etc): "); - return in.nextInt(); - } -} diff --git a/src/main/java/takehome/Runner.java b/src/main/java/takehome/Runner.java @@ -1,5 +1,9 @@ package takehome; +import takehome.view.CreateBasketView; +import takehome.view.PurchaseDayView; +import takehome.view.TotalView; + import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; diff --git a/src/main/java/takehome/TotalView.java b/src/main/java/takehome/TotalView.java @@ -1,18 +0,0 @@ -package takehome; - -import java.io.PrintStream; -import java.text.DecimalFormat; - -public class TotalView { - private final PrintStream out; - - public TotalView(PrintStream out) { - this.out = out; - } - - public void apply(Basket basket, Discount[] discounts) { - double total = basket.getTotal(discounts); - DecimalFormat df = new DecimalFormat("0.00"); - out.println("Total: $" + df.format(total)); - } -} diff --git a/src/main/java/takehome/view/CreateBasketView.java b/src/main/java/takehome/view/CreateBasketView.java @@ -0,0 +1,39 @@ +package takehome.view; + +import takehome.Basket; +import takehome.Item; + +import java.io.PrintStream; +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +public class CreateBasketView { + private final Scanner in; + private final PrintStream out; + + public CreateBasketView(Scanner in, PrintStream out) { + this.in = in; + this.out = out; + } + + public Basket apply(Item[] items) { + return new Basket(getItemAmounts(items)); + } + + private Map<Item, Integer> getItemAmounts(Item[] items) { + Map<Item, Integer> amounts = new HashMap<>(); + for (Item item : items) { + int amount = getItemAmount(item); + amounts.put(item, amount); + } + return amounts; + } + + private int getItemAmount(Item item) { + out.print("How much " + item.getName() + "? "); + int amount = in.nextInt(); + out.println(); + return amount; + } +} diff --git a/src/main/java/takehome/view/PurchaseDayView.java b/src/main/java/takehome/view/PurchaseDayView.java @@ -0,0 +1,28 @@ +package takehome.view; + +import takehome.Basket; + +import java.io.PrintStream; +import java.time.LocalDate; +import java.util.Scanner; + +public class PurchaseDayView { + private final Scanner in; + private final PrintStream out; + + public PurchaseDayView(Scanner in, PrintStream out) { + this.in = in; + this.out = out; + } + + public Basket apply(Basket basket) { + LocalDate date = LocalDate.now().plusDays(getPurchaseDay()); + basket.setPurchaseDate(date); + return basket; + } + + private int getPurchaseDay() { + out.println("Purchase day (0 for today, 1 for tomorrow, etc): "); + return in.nextInt(); + } +} diff --git a/src/main/java/takehome/view/TotalView.java b/src/main/java/takehome/view/TotalView.java @@ -0,0 +1,21 @@ +package takehome.view; + +import takehome.Basket; +import takehome.Discount; + +import java.io.PrintStream; +import java.text.DecimalFormat; + +public class TotalView { + private final PrintStream out; + + public TotalView(PrintStream out) { + this.out = out; + } + + public void apply(Basket basket, Discount[] discounts) { + double total = basket.getTotal(discounts); + DecimalFormat df = new DecimalFormat("0.00"); + out.println("Total: $" + df.format(total)); + } +}