tdd-java-demo

tdd java demo with micro-commits

git clone https://9o.is/git/tdd-java-demo.git

commit b22a31489b6538fd152fc114d670decea940f470
parent ff1be8768c4ea9e99c89f10d5701bcf6a093d1e0
Author: Jul <jul@9o.is>
Date:   Thu,  1 Apr 2021 02:02:41 +0800

move item amount methods to CreateBasketView

Diffstat:
Msrc/main/java/takehome/CreateBasketView.java | 27+++++++++++++++++++++++++++
Msrc/main/java/takehome/Runner.java | 18+-----------------
2 files changed, 28 insertions(+), 17 deletions(-)

diff --git a/src/main/java/takehome/CreateBasketView.java b/src/main/java/takehome/CreateBasketView.java @@ -1,9 +1,36 @@ 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/Runner.java b/src/main/java/takehome/Runner.java @@ -26,8 +26,8 @@ public class Runner { Discount[] discounts = { APPLE_DISCOUNT, BREAD_DISCOUNT }; CreateBasketView createBasketView = new CreateBasketView(in, out); + Basket basket = createBasketView.apply(items); - Basket basket = new Basket(getItemAmounts(items)); basket.setPurchaseDate(LocalDate.now().plusDays(getPurchaseDay())); double total = basket.getTotal(discounts); @@ -35,22 +35,6 @@ public class Runner { out.println("Total: $" + df.format(total)); } - 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; - } - private int getPurchaseDay() { out.println("Purchase day (0 for today, 1 for tomorrow, etc): "); return in.nextInt();