tdd-java-demo

tdd java demo with micro-commits

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

commit ac80f9b8c7239b9c616b5903c5e8ccd3ea9c8181
parent 82c94ef24ac95e9b93b2416f6e7b77d60505dd13
Author: Jul <jul@9o.is>
Date:   Wed, 31 Mar 2021 19:46:16 +0800

apply multiple discounts when multiple items are met

Diffstat:
Msrc/main/java/takehome/Discount.java | 11++++++++++-
Msrc/test/java/takehome/DiscountTest.java | 6++++++
2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/main/java/takehome/Discount.java b/src/main/java/takehome/Discount.java @@ -28,7 +28,16 @@ public class Discount { } double getDiscount(Basket basket) { - return amount * basket.getAmount(getSingleItem()); + Map<Item, Integer> frequencies = new HashMap<>(); + + for (Item item : items.keySet()) { + frequencies.put(item, basket.getAmount(item)); + } + + int frequency = frequencies.values() + .stream().reduce(Math::min).orElse(0); + + return amount * frequency; } private Item getSingleItem() { diff --git a/src/test/java/takehome/DiscountTest.java b/src/test/java/takehome/DiscountTest.java @@ -57,6 +57,12 @@ class DiscountTest { assertThat(SOUP_BREAD_DISCOUNT.getDiscount(basket), is(0.40)); } + @Test + void multipleItemsMultipleDiscounts() { + Basket basket = createBasketWithSoupBread(4, 2); + assertThat(SOUP_BREAD_DISCOUNT.getDiscount(basket), is(0.80)); + } + private Basket createBasketWithApples(int amount) { Map<Item, Integer> amounts = new HashMap<>(); amounts.put(APPLE, amount);