From 1106f8ebaad432afb76be2c64529128a04bc69ef Mon Sep 17 00:00:00 2001 From: Connor Stokes Date: Wed, 14 Aug 2024 12:07:30 +0100 Subject: [PATCH 1/6] First test add bagel --- src/main/java/com/booleanuk/core/DomainModel.md | 12 ++++++++++++ src/test/java/com/booleanuk/core/BasketTest.java | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/booleanuk/core/DomainModel.md diff --git a/src/main/java/com/booleanuk/core/DomainModel.md b/src/main/java/com/booleanuk/core/DomainModel.md new file mode 100644 index 00000000..4ac7a917 --- /dev/null +++ b/src/main/java/com/booleanuk/core/DomainModel.md @@ -0,0 +1,12 @@ +| class | method | scenario | output | +|--------|--------------------------|:---------------------------------------------------------------------------------|-------------| +| Basket | add bagel(basket, bagel) | | | +| Basket | remove bagel | if exists in basket then remove else alert("This bagel doesn't exist in basket") | | +| Basket | getBasketLimit | | basketLimit | +| Basket | setBasketLimit | | | + +| Variables | +|------------------------------| +| Map basket; | +| String[] bagels; | + diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..37187000 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 testAddBagel(){ + Basket basket = new Basket(); + basket.addBagel("Poppy Seed"); + Assertions.assertEquals("Poppy Seed", basket.basket()); + } } From 1191136545b7994500415cf790304dafd77c0305 Mon Sep 17 00:00:00 2001 From: Connor Stokes Date: Wed, 14 Aug 2024 13:18:52 +0100 Subject: [PATCH 2/6] First test add bagel now passes and addBadel method is built --- src/main/java/com/booleanuk/core/Basket.java | 17 +++++++++++++++++ .../java/com/booleanuk/core/DomainModel.md | 16 +++++++++------- .../java/com/booleanuk/core/BasketTest.java | 18 ++++++++++++++++-- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..d64e0bd8 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.HashMap; +import java.util.Map; + public class Basket { + Map basketItems = new HashMap<>(); + private int basketLimit = 20; + + public void addBagel (String bagelName, int quantity){ + if(basketItems.containsKey(bagelName)){ + basketItems.put(bagelName, basketItems.get(bagelName)+quantity); + }else{ + basketItems.put(bagelName, quantity); + } + + } + + + } diff --git a/src/main/java/com/booleanuk/core/DomainModel.md b/src/main/java/com/booleanuk/core/DomainModel.md index 4ac7a917..fc5282fb 100644 --- a/src/main/java/com/booleanuk/core/DomainModel.md +++ b/src/main/java/com/booleanuk/core/DomainModel.md @@ -1,12 +1,14 @@ -| class | method | scenario | output | -|--------|--------------------------|:---------------------------------------------------------------------------------|-------------| -| Basket | add bagel(basket, bagel) | | | -| Basket | remove bagel | if exists in basket then remove else alert("This bagel doesn't exist in basket") | | -| Basket | getBasketLimit | | basketLimit | -| Basket | setBasketLimit | | | +| class | method | scenario | output | +|--------|-------------------------------------------|:---------------------------------------------------------------------------------|-------------| +| Basket | addBagel( String bagelName, int quantity) | | | +| Basket | remove bagel | if exists in basket then remove else alert("This bagel doesn't exist in basket") | | +| Basket | getBasketLimit | | basketLimit | +| Basket | setBasketLimit(int basketLimit) | | | +| Basket | getBasket | | basket map | | Variables | |------------------------------| -| Map basket; | +| Map basketItems; | | String[] bagels; | +| int basketLimit | diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 37187000..59849fac 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -3,11 +3,25 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + class BasketTest { @Test public void testAddBagel(){ Basket basket = new Basket(); - basket.addBagel("Poppy Seed"); - Assertions.assertEquals("Poppy Seed", basket.basket()); + basket.addBagel("Poppy Seed", 5); + basket.addBagel("Cinnamon", 12); + basket.addBagel("Honey", 4); + basket.addBagel("Cheese", 5); + basket.addBagel("Garlic", 6); + Map expectedMap = new HashMap<>(); + expectedMap.put("Poppy Seed", 5); + expectedMap.put("Cinnamon", 12); + expectedMap.put("Honey", 4); + expectedMap.put("Cheese", 5); + expectedMap.put("Garlic", 6); + Assertions.assertEquals(expectedMap, basket.basketItems); } } From eb7c6a10ee8d85bedd7a16ff155c22ba676059a6 Mon Sep 17 00:00:00 2001 From: Connor Stokes Date: Wed, 14 Aug 2024 13:48:51 +0100 Subject: [PATCH 3/6] Second test for testExceededBasketLimit() added and failed --- src/main/java/com/booleanuk/core/Basket.java | 6 ++++-- src/main/java/com/booleanuk/core/DomainModel.md | 1 - src/test/java/com/booleanuk/core/BasketTest.java | 8 ++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index d64e0bd8..430c2695 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -7,14 +7,16 @@ public class Basket { Map basketItems = new HashMap<>(); private int basketLimit = 20; - + int basketTotal = 0; public void addBagel (String bagelName, int quantity){ + if(basketItems.containsKey(bagelName)){ basketItems.put(bagelName, basketItems.get(bagelName)+quantity); + basketTotal = basketItems.values().stream().reduce(0, Integer::sum); }else{ basketItems.put(bagelName, quantity); + basketTotal = basketItems.values().stream().reduce(0, Integer::sum); } - } diff --git a/src/main/java/com/booleanuk/core/DomainModel.md b/src/main/java/com/booleanuk/core/DomainModel.md index fc5282fb..fc316b71 100644 --- a/src/main/java/com/booleanuk/core/DomainModel.md +++ b/src/main/java/com/booleanuk/core/DomainModel.md @@ -2,7 +2,6 @@ |--------|-------------------------------------------|:---------------------------------------------------------------------------------|-------------| | Basket | addBagel( String bagelName, int quantity) | | | | Basket | remove bagel | if exists in basket then remove else alert("This bagel doesn't exist in basket") | | -| Basket | getBasketLimit | | basketLimit | | Basket | setBasketLimit(int basketLimit) | | | | Basket | getBasket | | basket map | diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 59849fac..0679b55b 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -24,4 +24,12 @@ public void testAddBagel(){ expectedMap.put("Garlic", 6); Assertions.assertEquals(expectedMap, basket.basketItems); } + @Test + public void testExceededBasketLimit(){ + Basket basket = new Basket(); + Assertions.assertEquals(basket.exceededBasketLimit(3, 5), true); + Assertions.assertEquals(basket.exceededBasketLimit(10, 7), false); + + + } } From 34ad972bde6652be486cc7f7943aa65063f20c70 Mon Sep 17 00:00:00 2001 From: Connor Stokes Date: Wed, 14 Aug 2024 15:00:01 +0100 Subject: [PATCH 4/6] exceededBasketLimit() added and passed test --- src/main/java/com/booleanuk/core/Basket.java | 27 ++++++++++++++----- .../java/com/booleanuk/core/BasketTest.java | 6 +++-- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index 430c2695..f6140178 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -9,16 +9,29 @@ public class Basket { private int basketLimit = 20; int basketTotal = 0; public void addBagel (String bagelName, int quantity){ - - if(basketItems.containsKey(bagelName)){ - basketItems.put(bagelName, basketItems.get(bagelName)+quantity); - basketTotal = basketItems.values().stream().reduce(0, Integer::sum); - }else{ - basketItems.put(bagelName, quantity); - basketTotal = basketItems.values().stream().reduce(0, Integer::sum); + if(!exceededBasketLimit(getBasketLimit(),basketTotal+quantity )){ + if(basketItems.containsKey(bagelName)){ + basketItems.put(bagelName, basketItems.get(bagelName)+quantity); + basketTotal = basketItems.values().stream().reduce(0, Integer::sum); + }else{ + basketItems.put(bagelName, quantity); + basketTotal = basketItems.values().stream().reduce(0, Integer::sum); + } + }else { + int limitExceededBy = (basketTotal + quantity) - getBasketLimit(); + System.out.println("The quantity of bagels you are adding to your basket exceeds the basket limit by " + limitExceededBy +". Please reduce the quantity of bagels by this amount."); } } + public boolean exceededBasketLimit(int basketLimit, int basketTotalAfterAddBagel){ + return basketTotalAfterAddBagel > basketLimit; + } + public int getBasketLimit() { + return basketLimit; + } + public void setBasketLimit(int basketLimit) { + this.basketLimit = basketLimit; + } } diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 0679b55b..859907b7 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -27,8 +27,10 @@ public void testAddBagel(){ @Test public void testExceededBasketLimit(){ Basket basket = new Basket(); - Assertions.assertEquals(basket.exceededBasketLimit(3, 5), true); - Assertions.assertEquals(basket.exceededBasketLimit(10, 7), false); + basket.setBasketLimit(3); + Assertions.assertEquals(basket.exceededBasketLimit(basket.getBasketLimit(), 5), true); + basket.setBasketLimit(10); + Assertions.assertEquals(basket.exceededBasketLimit(basket.getBasketLimit(), 7), false); } From f65bf3ecd6c58281db8e156504e7185485e9c919 Mon Sep 17 00:00:00 2001 From: Connor Stokes Date: Wed, 14 Aug 2024 15:24:53 +0100 Subject: [PATCH 5/6] testRemoveBagel() added and passed failed --- 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 859907b7..1349fea7 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -31,7 +31,14 @@ public void testExceededBasketLimit(){ Assertions.assertEquals(basket.exceededBasketLimit(basket.getBasketLimit(), 5), true); basket.setBasketLimit(10); Assertions.assertEquals(basket.exceededBasketLimit(basket.getBasketLimit(), 7), false); - + } + @Test + public void testRemoveBagel(){ + Basket basket = new Basket(); + basket.addBagel("Poppy Seed", 5); + basket.removeBagel("Poppy Seed", 5); + Assertions.assertEquals(basket.containsKey("Poppy Seed"), false); } + } From f67e56d40a682ad308dc803dfdaf625336db1632 Mon Sep 17 00:00:00 2001 From: Connor Stokes Date: Wed, 14 Aug 2024 15:43:22 +0100 Subject: [PATCH 6/6] added removeBagel()and passed tests. Refactored code in test, cleaned up writing in DomainModel. --- src/main/java/com/booleanuk/core/Basket.java | 14 +++++++++++++ .../java/com/booleanuk/core/DomainModel.md | 21 +++++++++---------- .../java/com/booleanuk/core/BasketTest.java | 15 +++++++------ 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index f6140178..fbaccc77 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -34,4 +34,18 @@ public int getBasketLimit() { public void setBasketLimit(int basketLimit) { this.basketLimit = basketLimit; } + + public void removeBagel(String bagelName, int quantity){ + if(!basketItems.containsKey(bagelName)){ + System.out.println("This bagel isn't in your basket."); + } + else{ + if(basketItems.get(bagelName) <= quantity){ + basketItems.remove(bagelName); + }else{ + int newQuantity = basketItems.get(bagelName) - quantity; + basketItems.put(bagelName, newQuantity ); + } + } + } } diff --git a/src/main/java/com/booleanuk/core/DomainModel.md b/src/main/java/com/booleanuk/core/DomainModel.md index fc316b71..07961c09 100644 --- a/src/main/java/com/booleanuk/core/DomainModel.md +++ b/src/main/java/com/booleanuk/core/DomainModel.md @@ -1,13 +1,12 @@ -| class | method | scenario | output | -|--------|-------------------------------------------|:---------------------------------------------------------------------------------|-------------| -| Basket | addBagel( String bagelName, int quantity) | | | -| Basket | remove bagel | if exists in basket then remove else alert("This bagel doesn't exist in basket") | | -| Basket | setBasketLimit(int basketLimit) | | | -| Basket | getBasket | | basket map | +| class | method | scenario | output | +|--------|----------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| +| Basket | addBagel( String bagelName, int quantity) | add bagelName and Quantity. If basketTotal + quantity isnt not larger than basket limit then If it already exists put += to existing key else create key value. | | +| Basket | remove bagel(String bagelName, int quantity) | if exists in basket then remove else alert("This bagel doesn't exist in basket") | | +| Basket | setBasketLimit(int basketLimit) | Increase/Reduce basket limit | | -| Variables | -|------------------------------| -| Map basketItems; | -| String[] bagels; | -| int basketLimit | +| Variables | | +|-----------------------------------|---| +| Map basketItems; | | +| int basketLimit | | +| int basketTotal | | diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 1349fea7..325ff841 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -11,14 +11,14 @@ class BasketTest { @Test public void testAddBagel(){ Basket basket = new Basket(); - basket.addBagel("Poppy Seed", 5); - basket.addBagel("Cinnamon", 12); + basket.addBagel("Poppy Seed", 2); + basket.addBagel("Cinnamon", 3); basket.addBagel("Honey", 4); basket.addBagel("Cheese", 5); basket.addBagel("Garlic", 6); Map expectedMap = new HashMap<>(); - expectedMap.put("Poppy Seed", 5); - expectedMap.put("Cinnamon", 12); + expectedMap.put("Poppy Seed", 2); + expectedMap.put("Cinnamon", 3); expectedMap.put("Honey", 4); expectedMap.put("Cheese", 5); expectedMap.put("Garlic", 6); @@ -37,8 +37,11 @@ public void testRemoveBagel(){ Basket basket = new Basket(); basket.addBagel("Poppy Seed", 5); basket.removeBagel("Poppy Seed", 5); - Assertions.assertEquals(basket.containsKey("Poppy Seed"), false); - + Assertions.assertEquals(basket.basketItems.containsKey("Poppy Seed"), false); + basket.addBagel("Poppy Seed", 5); + basket.removeBagel("Poppy Seed", 3); + Assertions.assertEquals(basket.basketItems.containsKey("Poppy Seed"), true); + Assertions.assertEquals(basket.basketItems.get("Poppy Seed"), 2); } }