diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 00000000..047c7981 --- /dev/null +++ b/domain-model.md @@ -0,0 +1,18 @@ +# Domain model + +Assuming that: + +- A userType of 0 is a Bob Bagel's manager + - A userType of 1 is the public +- Bagels are unique; there cannot be two or more of the same bagels in the same basket + +| Classes | Methods | Scenario | Outputs | +|----------|-------------------------------------------------|------------------------------------------------|---------| +| `Basket` | `add(String bagel)` | Successfully added to basket | true | +| | | Failed to add to basket (e.g., already exists) | false | +| | `remove(String bagel)` | Successfully removed from basket | true | +| | | Failed to remove from basket | false | +| | `isFull()` | Basket is full | true | +| | | Basket is not full | false | +| | `changeCapacity(int newCapacity, int userType)` | Successfully changed capacity of baskets | true | +| | | Failed to change capacity of baskets | false | diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..c23d503b 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,40 @@ package com.booleanuk.core; +import java.util.ArrayList; + public class Basket { + private final int DEFAULT_CAPACITY = 10; // Assuming basket has capacity of 10 from beginning + + ArrayList bagels; + private int capacity; + + public Basket() { + this.bagels = new ArrayList<>(); + this.capacity = this.DEFAULT_CAPACITY; + } + + public boolean add(String bagel) { + if (this.bagels.contains(bagel) || this.bagels.size() == this.capacity) { + return false; + } + this.bagels.add(bagel); + return true; + } + + public boolean remove(String bagel) { + return this.bagels.remove(bagel); + } + + public boolean isFull() { + return this.bagels.size() == this.capacity; + } + + public boolean changeCapacity(int newCapcity, int userType) { + if (newCapcity < 0 || newCapcity < this.bagels.size() || userType != 0) return false; + + this.capacity = newCapcity; + return true; + } + } diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..753c1b52 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -5,4 +5,89 @@ class BasketTest { + public BasketTest() { + + } + + @Test + public void testAddBagel() { + Basket b = new Basket(); + Assertions.assertTrue(b.add("testBagel")); + } + + @Test + public void testRemoveBagel() { + Basket b = new Basket(); + b.add("test"); + Assertions.assertTrue(b.remove("test")); + } + + @Test + public void testRemoveBagelNotExisting() { + Basket b = new Basket(); + + Assertions.assertFalse(b.remove("test")); + } + + @Test + public void testIsBasketFull() { + Basket b = new Basket(); + b.add("test"); + b.add("test2"); + b.add("test3"); + b.add("test4"); + b.add("test5"); + b.add("test6"); + b.add("test7"); + b.add("test8"); + b.add("test9"); + b.add("test10"); + Assertions.assertTrue(b.isFull()); + } + + @Test + public void testChangeCapacity() { + Basket b = new Basket(); + b.add("test"); + b.add("test2"); + b.add("test3"); + b.add("test4"); + b.add("test5"); + b.add("test6"); + b.add("test7"); + b.add("test8"); + b.add("test9"); + b.add("test10"); + + Assertions.assertTrue(b.isFull()); + + b.changeCapacity(11, 0); + + Assertions.assertFalse(b.isFull()); + } + + @Test + public void testChangeCapacityInputNotNegative() { + Basket b = new Basket(); + + Assertions.assertFalse(b.changeCapacity(-1, 0)); + } + + @Test + public void testChangeCapacityNotLessThanBagelsInBasket() { + Basket b = new Basket(); + + b.add("test"); + b.add("test2"); + + Assertions.assertFalse(b.changeCapacity(1, 1)); + } + + @Test + public void testPublicCannotChangeBasketCapacity() { + Basket b = new Basket(); + + Assertions.assertFalse(b.changeCapacity(20, 1)); + } + }