From 13ab09c212191dd99412ba769110e0e57c3bb3a6 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:00:46 +0200 Subject: [PATCH 01/16] Made domain-model.md --- 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..b5e844ff --- /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 | +| | | | 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 | +| | `List bagels` | `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 From fa86a6f5b316b6be447f04c2de15607c4675c2dc Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:01:22 +0200 Subject: [PATCH 02/16] RED: testAddingBagels added --- src/test/java/com/booleanuk/core/BasketTest.java | 7 ++++++- 1 file changed, 6 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..70b6152b 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -4,5 +4,10 @@ import org.junit.jupiter.api.Test; class BasketTest { - + @Test + public void testAddingBagels() { + Basket basket = new Basket(); + basket.addToBasket("plain", 1); + Assertions.assertEquals(1, basket.getBasket().size()); + } } From b35672b6bb26d34c12844a4bbb77cc9f9a952cb3 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:05:34 +0200 Subject: [PATCH 03/16] GREEN: test passes --- src/main/java/com/booleanuk/core/Basket.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..111cbae1 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,21 @@ package com.booleanuk.core; +import java.util.ArrayList; + public class Basket { + ArrayList bagels; + + public Basket() { + bagels = new ArrayList<>(); + } + + public void addToBasket(String bagelType, int amount) { + for (int i = 0; i < amount; i++) { + bagels.add(bagelType); + } + } + public ArrayList getBasket() { + return bagels; + } } From 27b0f09a7856d5384e81b020741318fb1ce872b8 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:13:51 +0200 Subject: [PATCH 04/16] RED: testAddingUnavailableType added --- src/test/java/com/booleanuk/core/BasketTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 70b6152b..be355dd0 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -10,4 +10,11 @@ public void testAddingBagels() { basket.addToBasket("plain", 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()); + } } From 9cc9143fe5e0de00c80604a1a49c1e72d87662a8 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:22:28 +0200 Subject: [PATCH 05/16] GREEN: test passed --- domain-model.md | 4 ++-- src/main/java/com/booleanuk/core/Basket.java | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/domain-model.md b/domain-model.md index b5e844ff..2f107b40 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,10 +1,10 @@ | Classes | Variables | Methods | Scenario | Outcome | |----------|-------------------------------------|--------------------------------------------|-----------------------------------------------------|------------------------------------------------| | `Basket` | `List bagels` | `addToBasket(String bagelType, int amount` | bagelType is available | bagelType is added amount times to bagels list | -| | | | bagelType not available | user notified that bagels not added | +| | `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 | -| | `List bagels` | `order()` | items in bagels | order sent to store | +| | | `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 | diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index 111cbae1..96fe87aa 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,15 +1,19 @@ package com.booleanuk.core; import java.util.ArrayList; +import java.util.Arrays; public class Basket { ArrayList bagels; + final String[] allowedTypes; public Basket() { bagels = new ArrayList<>(); + allowedTypes = new String[]{"everything", "whole_wheat", "chocolate_chip", "onion", "sesame", "poppy"}; } public void addToBasket(String bagelType, int amount) { + if (!Arrays.asList(allowedTypes).contains(bagelType)) return; for (int i = 0; i < amount; i++) { bagels.add(bagelType); } From 1d8ae6012c3e5a99123d4ffe50fa929cd8efea4c Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:23:35 +0200 Subject: [PATCH 06/16] REFACTOR: modified testAddingBagels() to comply with new logic --- src/test/java/com/booleanuk/core/BasketTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index be355dd0..59e8dca9 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -7,7 +7,7 @@ class BasketTest { @Test public void testAddingBagels() { Basket basket = new Basket(); - basket.addToBasket("plain", 1); + basket.addToBasket("everything", 1); Assertions.assertEquals(1, basket.getBasket().size()); } From 6be0c1486b25e22b384057105d4298ec378545bc Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:29:43 +0200 Subject: [PATCH 07/16] REFACTOR: added a test for adding 0 bagels, but cannot test that user is warned, therefore it passed right away --- src/test/java/com/booleanuk/core/BasketTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 59e8dca9..69fb6f64 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -17,4 +17,11 @@ public void testAddingUnavailableType() { 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()); + } } From 6ee4e13d50b84bce2c925075a8772c70437a08a3 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:31:49 +0200 Subject: [PATCH 08/16] RED: Added testAddingTooManyBagels --- src/test/java/com/booleanuk/core/BasketTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 69fb6f64..a481b29b 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -24,4 +24,13 @@ public void testAdding0Bagels() { 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()); + } } From 6dadcebf850cbead507dd5177ec74d0bb791b5cb Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:36:34 +0200 Subject: [PATCH 09/16] GREEN: You can now add too many bagels --- src/main/java/com/booleanuk/core/Basket.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index 96fe87aa..0417dee7 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -6,14 +6,22 @@ public class Basket { ArrayList bagels; final String[] allowedTypes; + int basketSize; public Basket() { bagels = new ArrayList<>(); allowedTypes = new String[]{"everything", "whole_wheat", "chocolate_chip", "onion", "sesame", "poppy"}; + basketSize = 10; // Default value + } + + public Basket(int basketSize) { + 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)) return; + if (!Arrays.asList(allowedTypes).contains(bagelType) || bagels.size() + amount > basketSize) return; for (int i = 0; i < amount; i++) { bagels.add(bagelType); } From 82afdb4bb2c0fd7050598cad0ce517f6ca66fbce Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 11:56:44 +0200 Subject: [PATCH 10/16] RED: test order. Testing a boolean was the best I could do, since I still don't know how to test output and don't have a server to get a response from when sending the order to the owner --- 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 a481b29b..509ebae7 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -3,6 +3,9 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + class BasketTest { @Test public void testAddingBagels() { @@ -33,4 +36,11 @@ public void testAddingTooManyBagels() { basket.addToBasket("everything", 1); Assertions.assertEquals(20, basket.getBasket().size()); } + + @Test + public void testOrder() { + Basket basket = new Basket(20); + basket.addToBasket("everything", 20); + Assertions.assertTrue(basket.order()); + } } From 7c6ff67e27be112a0dae021a8a2b4b63fb6edd12 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 12:01:31 +0200 Subject: [PATCH 11/16] RED: improved previous test to check if basket was emptied --- src/test/java/com/booleanuk/core/BasketTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 509ebae7..5637c0fa 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -42,5 +42,6 @@ public void testOrder() { Basket basket = new Basket(20); basket.addToBasket("everything", 20); Assertions.assertTrue(basket.order()); + Assertions.assertEquals(0, basket.getBasket().size()); } } From b9f2c49cff7b9fdee6b1ce27ac28aa0a068e6218 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 12:01:52 +0200 Subject: [PATCH 12/16] GREEN: testOrder passed --- src/main/java/com/booleanuk/core/Basket.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index 0417dee7..df223e97 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -30,4 +30,10 @@ public void addToBasket(String bagelType, int amount) { public ArrayList getBasket() { return bagels; } + + public boolean order() { + System.out.printf("Order of %d bagels sent", bagels.size()); + bagels = new ArrayList<>(); + return true; + } } From 78d929e50c6d1d9db8e8249710c06b1c491241c4 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 12:09:55 +0200 Subject: [PATCH 13/16] RED: testRemoveBagel written --- .../java/com/booleanuk/core/BasketTest.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 5637c0fa..830a81e8 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -3,9 +3,6 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; - class BasketTest { @Test public void testAddingBagels() { @@ -39,9 +36,23 @@ public void testAddingTooManyBagels() { @Test public void testOrder() { - Basket basket = new Basket(20); - basket.addToBasket("everything", 20); + 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")); + } + + } From 294c9bc0e4df9092301f86252cb81c1ff9820402 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 12:11:54 +0200 Subject: [PATCH 14/16] GREEN: testRemoveBagel passes --- src/main/java/com/booleanuk/core/Basket.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df223e97..5a8c2f42 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -36,4 +36,12 @@ public boolean order() { bagels = new ArrayList<>(); return true; } + + public boolean contains(String bagelType) { + return bagels.contains(bagelType); + } + + public void remove(String bagelType) { + bagels.remove(bagelType); + } } From cbfb6933adcbf7b2f5e3980dc30885eceaf2ef7e Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 12:14:50 +0200 Subject: [PATCH 15/16] RED: changeBasketSize test added --- src/test/java/com/booleanuk/core/BasketTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 830a81e8..5dc7ac68 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -54,5 +54,17 @@ public void testRemoveBagel() { 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()); + } + } From f71cd4ed51aa3281ff09a5cc225e8fc3cbadd453 Mon Sep 17 00:00:00 2001 From: Iris Flystam Date: Wed, 14 Aug 2024 12:20:41 +0200 Subject: [PATCH 16/16] GREEN: changeBasketSize test passes, and userIsBob parameter is added. --- src/main/java/com/booleanuk/core/Basket.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index 5a8c2f42..54a90775 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -7,14 +7,25 @@ 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 = 10; // Default value + 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; @@ -44,4 +55,11 @@ public boolean contains(String bagelType) { public void remove(String bagelType) { bagels.remove(bagelType); } + + public void setBasketSize(int basketSize) { + if (userIsBob) { + this.basketSize = basketSize; + standardBasketSize = basketSize; + } + } }