Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions domain-model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
| Classes | Variables | Methods | Scenario | Outcome |
|----------|-------------------------------------|--------------------------------------------|-----------------------------------------------------|------------------------------------------------|
| `Basket` | `List<String> bagels` | `addToBasket(String bagelType, int amount` | bagelType is available | bagelType is added amount times to bagels list |
| | `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 |
| | | `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 | |
60 changes: 60 additions & 0 deletions src/main/java/com/booleanuk/core/Basket.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,65 @@
package com.booleanuk.core;

import java.util.ArrayList;
import java.util.Arrays;

public class Basket {
ArrayList<String> 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 = 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;
}

public void addToBasket(String bagelType, int amount) {
if (!Arrays.asList(allowedTypes).contains(bagelType) || bagels.size() + amount > basketSize) return;
for (int i = 0; i < amount; i++) {
bagels.add(bagelType);
}
}

public ArrayList<String> getBasket() {
return bagels;
}

public boolean order() {
System.out.printf("Order of %d bagels sent", bagels.size());
bagels = new ArrayList<>();
return true;
}

public boolean contains(String bagelType) {
return bagels.contains(bagelType);
}

public void remove(String bagelType) {
bagels.remove(bagelType);
}

public void setBasketSize(int basketSize) {
if (userIsBob) {
this.basketSize = basketSize;
standardBasketSize = basketSize;
}
}
}
62 changes: 62 additions & 0 deletions src/test/java/com/booleanuk/core/BasketTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,67 @@
import org.junit.jupiter.api.Test;

class BasketTest {
@Test
public void testAddingBagels() {
Basket basket = new Basket();
basket.addToBasket("everything", 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());
}

@Test
public void testAdding0Bagels() {
Basket basket = new Basket();
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());
}

@Test
public void testOrder() {
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"));
}

@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());
}


}