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:
| M | src/main/java/takehome/Discount.java | | | 11 | ++++++++++- |
| M | src/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);