tdd-java-demo

tdd java demo with micro-commits

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

commit 7dfd9dcd990c09d86580d295367f0a3eb596ecb5
parent 302bfd6215c83e1cb29ffb635ef86236b820d8b5
Author: Jul <jul@9o.is>
Date:   Wed, 31 Mar 2021 23:16:43 +0800

return Multiset in Basket.getAmount

Diffstat:
Msrc/main/java/takehome/Basket.java | 15+++++++++++++--
Msrc/main/java/takehome/Discount.java | 10+---------
Msrc/test/java/takehome/BasketTest.java | 9++++++++-
3 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/main/java/takehome/Basket.java b/src/main/java/takehome/Basket.java @@ -1,5 +1,8 @@ package takehome; +import com.google.common.collect.HashMultiset; +import com.google.common.collect.Multiset; + import java.util.Map; public class Basket { @@ -9,8 +12,8 @@ public class Basket { this.amounts = amounts; } - public Map<Item, Integer> getAmounts() { - return amounts; + public Multiset<Item> getAmounts() { + return toMultiset(amounts); } double getTotal() { @@ -33,4 +36,12 @@ public class Basket { } return total; } + + private Multiset<Item> toMultiset(Map<Item, Integer> map) { + Multiset<Item> multiset = HashMultiset.create(); + for (Item item : map.keySet()) { + multiset.add(item, map.get(item)); + } + return multiset; + } } diff --git a/src/main/java/takehome/Discount.java b/src/main/java/takehome/Discount.java @@ -28,7 +28,7 @@ public class Discount { @SuppressWarnings("UnstableApiUsage") double getDiscount(Basket basket) { - Multiset<Item> basketSet = toMultiset(basket.getAmounts()); + Multiset<Item> basketSet = basket.getAmounts(); int occurrences = 0; boolean occurrence = Multisets.containsOccurrences(basketSet, items); @@ -41,12 +41,4 @@ public class Discount { return amount * occurrences; } - - private Multiset<Item> toMultiset(Map<Item, Integer> map) { - Multiset<Item> multiset = HashMultiset.create(); - for (Item item : map.keySet()) { - multiset.add(item, map.get(item)); - } - return multiset; - } } diff --git a/src/test/java/takehome/BasketTest.java b/src/test/java/takehome/BasketTest.java @@ -1,7 +1,10 @@ package takehome; +import com.google.common.collect.HashMultiset; +import com.google.common.collect.Multiset; import org.junit.jupiter.api.Test; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -17,7 +20,7 @@ class BasketTest { public void getAmounts() { Map<Item, Integer> amounts = getItemAmounts(); Basket basket = new Basket(amounts); - assertThat(basket.getAmounts(), is(amounts)); + assertThat(basket.getAmounts(), is(items())); } @Test @@ -49,4 +52,8 @@ class BasketTest { return amounts; } + private Multiset<Item> items() { + return HashMultiset.create(Arrays.asList(SOUP, BREAD, BREAD)); + } + } \ No newline at end of file