tdd-java-demo

tdd java demo with micro-commits

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

commit 64abbb7ce7bc01b3355884a9375e79e88b2a0677
parent e362109194e2faf801b3da2367c7f73b80ad5602
Author: Jul <jul@9o.is>
Date:   Wed, 31 Mar 2021 20:08:38 +0800

apply multiple types of discounts to basket

Diffstat:
Msrc/main/java/takehome/Runner.java | 13++++++++++++-
Msrc/test/java/takehome/RunnerTest.java | 11+++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/main/java/takehome/Runner.java b/src/main/java/takehome/Runner.java @@ -25,10 +25,21 @@ public class Runner { new Item("apple", 0.10) }; + Map<Item, Integer> soupBreadRequirement = new HashMap<>(); + soupBreadRequirement.put(items[0], 2); + soupBreadRequirement.put(items[1], 1); + + Discount[] discounts = { + new Discount(0.01, items[3]), + new Discount(0.40, soupBreadRequirement) + }; + Basket basket = new Basket(getItemAmounts(items)); double total = basket.getTotal(); - total -= new Discount(0.01, items[3]).getDiscount(basket); + for (Discount discount : discounts) { + total -= discount.getDiscount(basket); + } DecimalFormat df = new DecimalFormat("0.00"); out.println("Total: $" + df.format(total)); diff --git a/src/test/java/takehome/RunnerTest.java b/src/test/java/takehome/RunnerTest.java @@ -23,6 +23,17 @@ class RunnerTest { )); } + @Test + public void exampleMultipleDiscounts() { + assertThat(output("2\r1\r1\r2"), contains( + "How much soup? ", + "How much bread? ", + "How much milk? ", + "How much apple? ", + "Total: $3.18" + )); + } + private List<String> output(String input) { ByteArrayInputStream in = new ByteArrayInputStream(input.getBytes()); ByteArrayOutputStream out = new ByteArrayOutputStream();