diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 00000000..2f107b40 --- /dev/null +++ b/domain-model.md @@ -0,0 +1,11 @@ +| Classes | Variables | Methods | Scenario | Outcome | +|----------|-------------------------------------|--------------------------------------------|-----------------------------------------------------|------------------------------------------------| +| `Basket` | `List bagels` | `addToBasket(String bagelType, int amount` | bagelType is available | bagelType is added amount times to bagels list | +| | `String[] allowedTypes` | | bagelType not available | user notified that bagels not added | +| | | | amount is <1 | user warned that amount is insufficient | +| | `int basketSize` | | basket overfull (bagels.size()+amount > basketSize) | bagels not added, user warned of full basket | +| | | `order()` | items in bagels | order sent to store | +| | | | bagels list empty | warning given | +| | | `removeBagel(String bagelType)` | bagel of bagelType in bagels list | one bagel of bagelType is removed | +| | | | no bagel of bagelType in bagels list | no bagel removed, user warned | +| | `int basketSize, boolean userIsBob` | `setBasketSize(int newSize)` | basketSize set to newSize | | \ 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..54a90775 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,65 @@ package com.booleanuk.core; +import java.util.ArrayList; +import java.util.Arrays; + public class Basket { + ArrayList bagels; + final String[] allowedTypes; + int basketSize; + int standardBasketSize = 10; + boolean userIsBob; + + public Basket() { + userIsBob = false; + bagels = new ArrayList<>(); + allowedTypes = new String[]{"everything", "whole_wheat", "chocolate_chip", "onion", "sesame", "poppy"}; + basketSize = standardBasketSize; + } + + public Basket(int basketSize) { + userIsBob = false; + bagels = new ArrayList<>(); + allowedTypes = new String[]{"everything", "whole_wheat", "chocolate_chip", "onion", "sesame", "poppy"}; + this.basketSize = basketSize; + } + + public Basket(int basketSize, boolean userIsBob) { + this.userIsBob = userIsBob; + bagels = new ArrayList<>(); + allowedTypes = new String[]{"everything", "whole_wheat", "chocolate_chip", "onion", "sesame", "poppy"}; + this.basketSize = basketSize; + } + + public void addToBasket(String bagelType, int amount) { + if (!Arrays.asList(allowedTypes).contains(bagelType) || bagels.size() + amount > basketSize) return; + for (int i = 0; i < amount; i++) { + bagels.add(bagelType); + } + } + + public ArrayList getBasket() { + return bagels; + } + + public boolean order() { + System.out.printf("Order of %d bagels sent", bagels.size()); + bagels = new ArrayList<>(); + return true; + } + + public boolean contains(String bagelType) { + return bagels.contains(bagelType); + } + + public void remove(String bagelType) { + bagels.remove(bagelType); + } + public void setBasketSize(int basketSize) { + if (userIsBob) { + this.basketSize = basketSize; + standardBasketSize = basketSize; + } + } } diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..5dc7ac68 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -4,5 +4,67 @@ import org.junit.jupiter.api.Test; class BasketTest { + @Test + public void testAddingBagels() { + Basket basket = new Basket(); + basket.addToBasket("everything", 1); + Assertions.assertEquals(1, basket.getBasket().size()); + } + + @Test + public void testAddingUnavailableType() { + Basket basket = new Basket(); + basket.addToBasket("plain", 1); + Assertions.assertEquals(0, basket.getBasket().size()); + } + + @Test + public void testAdding0Bagels() { + Basket basket = new Basket(); + basket.addToBasket("everything", 0); + Assertions.assertEquals(0, basket.getBasket().size()); + } + + @Test + public void testAddingTooManyBagels() { + Basket basket = new Basket(20); + basket.addToBasket("everything", 20); + Assertions.assertEquals(20, basket.getBasket().size()); + basket.addToBasket("everything", 1); + Assertions.assertEquals(20, basket.getBasket().size()); + } + + @Test + public void testOrder() { + Basket basket = new Basket(); + basket.addToBasket("everything", 1); + Assertions.assertTrue(basket.order()); + Assertions.assertEquals(0, basket.getBasket().size()); + } + + @Test + public void testRemoveBagel() { + Basket basket = new Basket(); + basket.addToBasket("everything", 1); + basket.addToBasket("sesame", 2); + Assertions.assertEquals(3, basket.getBasket().size()); + basket.remove("sesame"); + Assertions.assertEquals(2, basket.getBasket().size()); + Assertions.assertTrue(basket.contains("everything")); + Assertions.assertTrue(basket.contains("sesame")); + } + + @Test + public void changeBasketSize() { + Basket basket = new Basket(10, true); + basket.addToBasket("everything", 3); + Assertions.assertEquals(3, basket.getBasket().size()); + basket.addToBasket("everything", 10); + Assertions.assertEquals(3, basket.getBasket().size()); + basket.setBasketSize(20); + basket.addToBasket("everything", 10); + Assertions.assertEquals(13, basket.getBasket().size()); + } + }