From 34b66bb951f5b7dd6747768446e694bc18a3abb5 Mon Sep 17 00:00:00 2001 From: iliask796 Date: Mon, 11 Sep 2023 12:04:30 +0300 Subject: [PATCH 1/2] Exercise 1 --- Example.md | 26 ++++++++++++++++++++++++++ domain-model.md | 29 +++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 Example.md create mode 100644 domain-model.md diff --git a/Example.md b/Example.md new file mode 100644 index 0000000..95b9674 --- /dev/null +++ b/Example.md @@ -0,0 +1,26 @@ +# Example Domain Model + +## User Stories + +``` +As a user, +So I can find a specific cohort, +I want to search a list of all cohorts by cohort name. +``` + +## Domain Model + +| Classes | Methods | Scenario | Outputs | +|---------------|------------------------------------------------------|------------------------|---------| +| CohortManager | search(ArrayList cohorts, String cohortName) | If name is in list | true | +| | | If name is not in list | false | + + +### CohortManager Class + +| Methods | Member Variables | Scenario | Outputs | +|---------------------------|---------------------------|------------------------|---------| +| search(String cohortName) | ArrayList cohorts | If name is in list | True | +| | | If name is not in list | False | + + diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 0000000..f7df83b --- /dev/null +++ b/domain-model.md @@ -0,0 +1,29 @@ +# Exercise 1 +Translate the two following user stories into domain models. + +## User Story 1 +``` +As a supermarket shopper, +So that I can pay for products at checkout, +I'd like to be able to know the total cost of items in my basket. +``` + +### Domain Model Suggestion + +| Class | Method | Class Member | Result | +|---------|--------------------------------------------------|----------------------------------------|------------------| +| Basket | calculateCost(HashMap priceList) | HashMap itemQuantities | Total Cost (int) | + +## User Story 2 +``` +As an organised individual, +So that I can evaluate my shopping habits, +I'd like to see an itemised receipt that includes the name and price of the products +I bought as well as the quantity, and a total cost of my basket. +``` + +### Domain Model Suggestion + +| Class | Method | Class Member | Result | +|--------|---------------------------------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------| +| Basket | exportAnalysis(HashMap priceList) | HashMap itemQuantities | Itemised Receipt (HashMap where the int array contains one value for quantity and one value for price) | From 8f5102a64d98dab3ac06a1308630dc05430efb30 Mon Sep 17 00:00:00 2001 From: iliask796 Date: Mon, 11 Sep 2023 15:27:01 +0300 Subject: [PATCH 2/2] Exercise 2 --- src/main/java/com/booleanuk/core/Basket.java | 26 ++++++++++++++++ .../com/booleanuk/core/CohortManager.java | 15 ++++++++++ src/main/java/com/booleanuk/core/Speaker.java | 7 +++++ .../java/com/booleanuk/core/BasketTest.java | 30 +++++++++++++++++++ .../com/booleanuk/core/CohortManagerTest.java | 7 +++++ .../java/com/booleanuk/core/SpeakerTest.java | 18 +++++++++++ 6 files changed, 103 insertions(+) create mode 100644 src/main/java/com/booleanuk/core/Basket.java create mode 100644 src/main/java/com/booleanuk/core/Speaker.java create mode 100644 src/test/java/com/booleanuk/core/BasketTest.java create mode 100644 src/test/java/com/booleanuk/core/SpeakerTest.java diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java new file mode 100644 index 0000000..d1da91c --- /dev/null +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -0,0 +1,26 @@ +package com.booleanuk.core; + +import java.util.HashMap; +import java.util.Map; + +public class Basket { + HashMap items; + + public Basket(){ + this.items = new HashMap<>(); + } + + public boolean add (String product, int price){ + boolean flag = this.items.containsKey(product); + this.items.put(product,price); + return flag; + } + + public int total(){ + int sum = 0; + for (Map.Entry set: this.items.entrySet()) { + sum += set.getValue(); + } + return sum; + } +} diff --git a/src/main/java/com/booleanuk/core/CohortManager.java b/src/main/java/com/booleanuk/core/CohortManager.java index 48a1b26..d907826 100644 --- a/src/main/java/com/booleanuk/core/CohortManager.java +++ b/src/main/java/com/booleanuk/core/CohortManager.java @@ -1,5 +1,20 @@ package com.booleanuk.core; +import java.util.ArrayList; +import java.util.List; + public class CohortManager { + List cohorts; + + public CohortManager() { + this.cohorts = new ArrayList<>(); + this.cohorts.add("Experis C# 1"); + this.cohorts.add("Experis C# 2"); + this.cohorts.add("Experis Java 1"); + this.cohorts.add("Experis Java 2"); + } + public boolean search(String name) { + return this.cohorts.contains(name); + } } diff --git a/src/main/java/com/booleanuk/core/Speaker.java b/src/main/java/com/booleanuk/core/Speaker.java new file mode 100644 index 0000000..79076ca --- /dev/null +++ b/src/main/java/com/booleanuk/core/Speaker.java @@ -0,0 +1,7 @@ +package com.booleanuk.core; + +public class Speaker { + public String sayHello(String name){ + return "Hello, " + name + "!"; + } +} diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java new file mode 100644 index 0000000..481533e --- /dev/null +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -0,0 +1,30 @@ +package com.booleanuk.core; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class BasketTest { + @Test + public void shouldReturnFalse(){ + Basket cart = new Basket(); + Assertions.assertFalse(cart.add("tomato", 1)); + } + + @Test + public void shouldReturnTrue(){ + Basket cart = new Basket(); + cart.add("tomato", 1); + Assertions.assertTrue(cart.add("tomato",2)); + } + + @Test + public void shouldCalculateCorrectTotal(){ + Basket cart = new Basket(); + cart.add("tomato", 1); + cart.add("potato", 2); + cart.add("apple", 1); + cart.add("watermelon", 3); + cart.add("bananas", 2); + Assertions.assertEquals(9, cart.total()); + } +} diff --git a/src/test/java/com/booleanuk/core/CohortManagerTest.java b/src/test/java/com/booleanuk/core/CohortManagerTest.java index 5dea868..c2e6fd2 100644 --- a/src/test/java/com/booleanuk/core/CohortManagerTest.java +++ b/src/test/java/com/booleanuk/core/CohortManagerTest.java @@ -4,5 +4,12 @@ import org.junit.jupiter.api.Test; class CohortManagerTest { + @Test + public void searchWorksCorrectly() { + CohortManager cohortManager = new CohortManager(); + Assertions.assertTrue(cohortManager.search("Experis Java 2")); + Assertions.assertFalse(cohortManager.search("")); + Assertions.assertFalse(cohortManager.search("Cohort 11")); + } } diff --git a/src/test/java/com/booleanuk/core/SpeakerTest.java b/src/test/java/com/booleanuk/core/SpeakerTest.java new file mode 100644 index 0000000..ee2fd39 --- /dev/null +++ b/src/test/java/com/booleanuk/core/SpeakerTest.java @@ -0,0 +1,18 @@ +package com.booleanuk.core; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class SpeakerTest { + + @Test + public void shouldSayHelloCorrectly(){ + Speaker speaker = new Speaker(); + + String name = "Dave"; + String message = speaker.sayHello(name); + Assertions.assertEquals("Hello, Dave!", message); + + Assertions.assertEquals("Hello, Nathan!", speaker.sayHello("Nathan")); + } +}