diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 00000000..bd69438e --- /dev/null +++ b/domain-model.md @@ -0,0 +1,10 @@ +## Domain model Basket class +- NOTE: Bagel is an enum + +| Variables | Methods | Scenario | Output | +|-----------|-------------------------------------|------------------------------------------------|--------| +| | `boolean add(Bagel bagel)` | Basket is full | false | +| | | Basket is not full | true | +| | `boolean remove(Bagel bagel)` | Bagel is not in basket | false | +| | | Bagel is in basket | true | +| | `void setCapacity(int newCapacity)` | Manager wants to change the capacity of basket | | \ No newline at end of file diff --git a/src/main/java/com/booleanuk/core/Bagel.java b/src/main/java/com/booleanuk/core/Bagel.java new file mode 100644 index 00000000..e1e13ecf --- /dev/null +++ b/src/main/java/com/booleanuk/core/Bagel.java @@ -0,0 +1,8 @@ +package com.booleanuk.core; + +public enum Bagel { + Plain, + Everything, + Egg, + Rainbow, +} diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..7e00a325 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,37 @@ package com.booleanuk.core; +import java.util.ArrayList; +import java.util.List; + public class Basket { + public int capacity = 3; + private List bagels = new ArrayList<>(); + + public int size() { + return bagels.size(); + } + + private boolean isFull() { + return this.size() == this.capacity; + } + + public boolean add(Bagel bagel) { + if (this.isFull()) + return false; + + this.bagels.add(bagel); + return true; + } + + public boolean remove(Bagel bagel) { + if (!this.bagels.contains(bagel)) + return false; + + this.bagels.remove(bagel); + return true; + } + public void setCapacity(int newCapacity) { + this.capacity = newCapacity; + } } diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..b2616618 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -4,5 +4,61 @@ import org.junit.jupiter.api.Test; class BasketTest { + @Test + public void testAddBagel() { + Basket basket = new Basket(); + basket.add(Bagel.Plain); + Assertions.assertEquals(basket.size(), 1); + basket.add(Bagel.Rainbow); + Assertions.assertEquals(basket.size(), 2); + } + @Test + public void testAddBagelToFullBasket() { + Basket basket = new Basket(); + Assertions.assertEquals(basket.capacity, 3); + + Assertions.assertTrue(basket.add(Bagel.Plain)); + Assertions.assertTrue(basket.add(Bagel.Rainbow)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + + Assertions.assertFalse(basket.add(Bagel.Egg)); + Assertions.assertEquals(basket.capacity, 3); + } + + @Test + public void testRemoveBagel() { + Basket basket = new Basket(); + basket.add(Bagel.Plain); + basket.add(Bagel.Plain); + basket.add(Bagel.Rainbow); + + Assertions.assertTrue(basket.remove(Bagel.Plain)); + Assertions.assertTrue(basket.remove(Bagel.Plain)); + } + + @Test + public void testRemoveNonExistingBagel() { + Basket basket = new Basket(); + Assertions.assertFalse(basket.remove(Bagel.Plain)); + Assertions.assertFalse(basket.remove(Bagel.Rainbow)); + Assertions.assertFalse(basket.remove(Bagel.Egg)); + } + + @Test + public void testSetCapacity() { + Basket basket = new Basket(); + Assertions.assertEquals(basket.capacity, 3); + Assertions.assertTrue(basket.add(Bagel.Plain)); + Assertions.assertTrue(basket.add(Bagel.Rainbow)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertFalse(basket.add(Bagel.Egg)); + + basket.setCapacity(5); + Assertions.assertEquals(basket.capacity, 5); + + Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertFalse(basket.add(Bagel.Rainbow)); + } }