diff --git a/src/domain-model.md b/src/domain-model.md new file mode 100644 index 00000000..99e09149 --- /dev/null +++ b/src/domain-model.md @@ -0,0 +1,31 @@ +package com.boolean; + + +| Clasess | Members | Methods | Scenario | Output | +|---------|---------------------------------|-------------------------------------------|-------------------------|--------------------| +| Basket | HashMap bagels | add(String bagel) | Can add to list | return true | +| | | | | | + + +| Clasess | Members | Methods | Scenario | Output | +|---------|---------------------------------|----------------------|------------------|--------------| +| Basket | HashMap bagels | remove(String bagel) | Can add to list | return true | +| | | | Cant add to list | return false | + + +| Clasess | Members | Methods | Scenario | Output | +|---------|---------------------------------|---------------------|----------|--------------| +| Basket | HashMap bagels | isFull(int howMany) | Not full | return true | +| | int howMany | | Full | return false | + + +| Clasess | Members | Methods | Scenario | Output | +|---------|-------------|-----------------------------|----------------------------------|---------| +| Basket | int howMany | capacitySetter(int howMany) | Changed how many bagels capacity | changed | +| | | | | | + + +| Clasess | Members | Methods | Scenario | Output | +|---------|---------------------------------|----------------------|---------------------------|--------------| +| Basket | HashMap bagels | remove(String bagel) | Is existing can remove | return true | +| | | | Not existing can't remove
| return false | \ No newline at end of file diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..8644adf8 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,39 @@ package com.booleanuk.core; +import java.util.HashMap; + public class Basket { + public HashMap bagels; + int limit; + + + public Basket() { + this.limit = 4; + this.bagels = new HashMap<>(); + } + + public boolean add(String bagel, int i) { + + if (bagel.isBlank() || (this.bagels.size() + i) > limit) { + return false; + } else { + this.bagels.put(bagel, i); + } + return true; + } + + public boolean remove(String bagel, int i) { + if (!this.bagels.containsKey(bagel) || this.bagels.get(bagel) < i) { + return false; + } else { + this.bagels.remove(bagel); + } + return true; + } + + public void setLimit(int numberOf) { + + this.limit = numberOf; + } } diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..2a736f47 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -3,6 +3,77 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.ArrayList; + class BasketTest { + @Test + public void canAddBagelToEmpty() { + Basket basket = new Basket(); + Assertions.assertTrue(basket.add("Bagel", 1)); + + + } + + @Test + public void canAddSeveralBagelToEmpty() { + Basket basket = new Basket(); + Assertions.assertTrue(basket.add("Bagel", 0)); + Assertions.assertTrue(basket.add("B", 1)); + Assertions.assertTrue(basket.add("Bag", 2)); + + + } + + + @Test + public void cantAddEmptyBagel() { + Basket basket = new Basket(); + Assertions.assertFalse(basket.add("", 1)); + + + } + + + @Test + public void canRemoveBagel() { + Basket basket = new Basket(); + basket.add("Bagel", 1); + boolean result = basket.remove("Bagel", 1); + Assertions.assertTrue(result); + + } + + @Test + public void removeNonExistingBagel() { + Basket basket = new Basket(); + basket.bagels.put("Bagel", 1); + Assertions.assertFalse(basket.remove("Bag", 1)); + } + + @Test + public void isRemoved() { + Basket basket = new Basket(); + basket.bagels.put("Bagel", 1); + basket.remove("Bagel", 1); + Assertions.assertTrue(basket.bagels.isEmpty()); + } + + @Test + public void limitBagel() { + Basket basket = new Basket(); + basket.setLimit(5); + Assertions.assertEquals(5, basket.limit); + } + + @Test + public void limitBagelOneAddOneBagel() { + Basket basket = new Basket(); + basket.add("Bagel", 0); + basket.setLimit(2); + Assertions.assertTrue(basket.add("Bag", 1)); + + + } + }