From 7d88a96ae5a9c4f2a0f3403f2f155a58e9371a3c Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:04:00 +0200 Subject: [PATCH 01/10] Make domain model --- domain-model.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 domain-model.md diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 00000000..ff0a93b4 --- /dev/null +++ b/domain-model.md @@ -0,0 +1,11 @@ +## 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 | +| | `boolean isFull()` | | | +| | `void setCapacity(int newCapacity)` | | | From ea1d30a5910e16f0a38e13ded33593fee72eb207 Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:11:00 +0200 Subject: [PATCH 02/10] Add testAddBagel test case --- src/test/java/com/booleanuk/core/BasketTest.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..7f109805 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -4,5 +4,12 @@ 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); + } } From 04c4db996049ccfbf41aa17f61a6a442553d4e9c Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:15:09 +0200 Subject: [PATCH 03/10] Implement Basket::add --- src/main/java/com/booleanuk/core/Bagel.java | 8 ++++++++ src/main/java/com/booleanuk/core/Basket.java | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/main/java/com/booleanuk/core/Bagel.java 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..fe08e3a1 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,22 @@ package com.booleanuk.core; +import java.util.ArrayList; +import java.util.List; + public class Basket { + private int capacity = 5; + private List bagels = new ArrayList<>(); + + public int size() { + return bagels.size(); + } + + public boolean add(Bagel bagel) { + if (this.bagels.size() == this.capacity) + return false; + + this.bagels.add(bagel); + return true; + } } From bebc8e151fa2f76c1d17a4509da4b16301c1c0f5 Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:21:30 +0200 Subject: [PATCH 04/10] Update model with isFull test case, use in Basket --- domain-model.md | 15 +++++++-------- src/main/java/com/booleanuk/core/Basket.java | 6 +++++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/domain-model.md b/domain-model.md index ff0a93b4..bd69438e 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,11 +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 | -| | `boolean isFull()` | | | -| | `void setCapacity(int newCapacity)` | | | +| 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/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index fe08e3a1..d8dadb51 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -11,8 +11,12 @@ public int size() { return bagels.size(); } + private boolean isFull() { + return this.bagels.size() == this.capacity; + } + public boolean add(Bagel bagel) { - if (this.bagels.size() == this.capacity) + if (this.isFull()) return false; this.bagels.add(bagel); From 326e61a325ef24f5188e4bc5b88196416a544280 Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:26:49 +0200 Subject: [PATCH 05/10] Add test case for Basket::removeBagel --- src/test/java/com/booleanuk/core/BasketTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 7f109805..ed7a2422 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -12,4 +12,14 @@ public void testAddBagel() { basket.add(Bagel.Rainbow); Assertions.assertEquals(basket.size(), 2); } + + @Test + public void testRemoveBagel() { + Basket basket = new Basket(); + basket.add(Bagel.Plain); + basket.add(Bagel.Rainbow); + + Assertions.assertTrue(basket.remove(Bagel.Plain)); + Assertions.assertFalse(basket.remove(Bagel.Everything)); + } } From a3376b455d36c42766e5c11bc5aab550ef9db726 Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:28:08 +0200 Subject: [PATCH 06/10] Implement Basket::remove --- src/main/java/com/booleanuk/core/Basket.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index d8dadb51..4cf65b65 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -23,4 +23,11 @@ public boolean add(Bagel bagel) { return true; } + public boolean remove(Bagel bagel) { + if (!this.bagels.contains(bagel)) + return false; + + this.bagels.remove(bagel); + return true; + } } From 4d6619f28a7e4b8d0fe483a7ed5004e4353da998 Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:41:43 +0200 Subject: [PATCH 07/10] Add tests for add to full and set capacity --- .../java/com/booleanuk/core/BasketTest.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index ed7a2422..493545ac 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -13,6 +13,21 @@ public void testAddBagel() { Assertions.assertEquals(basket.size(), 2); } + @Test + public void testAddBagelToFullBasket() { + Basket basket = new Basket(); + Assertions.assertEquals(basket.capacity, 5); + + Assertions.assertTrue(basket.add(Bagel.Plain)); + Assertions.assertTrue(basket.add(Bagel.Rainbow)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + + Assertions.assertFalse(basket.add(Bagel.Egg)); + Assertions.assertEquals(basket.capacity, 5); + } + @Test public void testRemoveBagel() { Basket basket = new Basket(); @@ -22,4 +37,21 @@ public void testRemoveBagel() { Assertions.assertTrue(basket.remove(Bagel.Plain)); Assertions.assertFalse(basket.remove(Bagel.Everything)); } + + @Test + public void testSetCapacity() { + Basket basket = new Basket(); + Assertions.assertEquals(basket.capacity, 5); + basket.setCapacity(10); + Assertions.assertEquals(basket.capacity, 10); + + Assertions.assertTrue(basket.add(Bagel.Plain)); + Assertions.assertTrue(basket.add(Bagel.Rainbow)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertTrue(basket.add(Bagel.Rainbow)); + Assertions.assertTrue(basket.add(Bagel.Everything)); + Assertions.assertTrue(basket.add(Bagel.Egg)); + } } From a70fb26a0da00a6d291ba89cb0921def7e5378b4 Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:42:21 +0200 Subject: [PATCH 08/10] Implement setCapacity --- src/main/java/com/booleanuk/core/Basket.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index 4cf65b65..fce7c282 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -4,7 +4,7 @@ import java.util.List; public class Basket { - private int capacity = 5; + public int capacity = 5; private List bagels = new ArrayList<>(); public int size() { @@ -30,4 +30,8 @@ public boolean remove(Bagel bagel) { this.bagels.remove(bagel); return true; } + + public void setCapacity(int newCapacity) { + this.capacity = newCapacity; + } } From d37d009b13e9e92649f3f83ba89442b557cd2210 Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 13:52:37 +0200 Subject: [PATCH 09/10] Split testRemoveBagel into two tests --- src/test/java/com/booleanuk/core/BasketTest.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 493545ac..dab7380f 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -32,10 +32,19 @@ public void testAddBagelToFullBasket() { 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.assertFalse(basket.remove(Bagel.Everything)); + 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 From dfad730a7dcb80ba611817d990d949c2d8a783df Mon Sep 17 00:00:00 2001 From: gremble0 Date: Wed, 14 Aug 2024 14:23:27 +0200 Subject: [PATCH 10/10] Reduce basket capacity and expand capacity test --- src/main/java/com/booleanuk/core/Basket.java | 4 ++-- .../java/com/booleanuk/core/BasketTest.java | 20 +++++++++---------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index fce7c282..7e00a325 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -4,7 +4,7 @@ import java.util.List; public class Basket { - public int capacity = 5; + public int capacity = 3; private List bagels = new ArrayList<>(); public int size() { @@ -12,7 +12,7 @@ public int size() { } private boolean isFull() { - return this.bagels.size() == this.capacity; + return this.size() == this.capacity; } public boolean add(Bagel bagel) { diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index dab7380f..b2616618 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -16,16 +16,14 @@ public void testAddBagel() { @Test public void testAddBagelToFullBasket() { Basket basket = new Basket(); - Assertions.assertEquals(basket.capacity, 5); + Assertions.assertEquals(basket.capacity, 3); Assertions.assertTrue(basket.add(Bagel.Plain)); Assertions.assertTrue(basket.add(Bagel.Rainbow)); Assertions.assertTrue(basket.add(Bagel.Egg)); - Assertions.assertTrue(basket.add(Bagel.Egg)); - Assertions.assertTrue(basket.add(Bagel.Egg)); Assertions.assertFalse(basket.add(Bagel.Egg)); - Assertions.assertEquals(basket.capacity, 5); + Assertions.assertEquals(basket.capacity, 3); } @Test @@ -50,17 +48,17 @@ public void testRemoveNonExistingBagel() { @Test public void testSetCapacity() { Basket basket = new Basket(); - Assertions.assertEquals(basket.capacity, 5); - basket.setCapacity(10); - Assertions.assertEquals(basket.capacity, 10); - + 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.assertTrue(basket.add(Bagel.Rainbow)); - Assertions.assertTrue(basket.add(Bagel.Everything)); - Assertions.assertTrue(basket.add(Bagel.Egg)); + Assertions.assertFalse(basket.add(Bagel.Rainbow)); } }