From b22618f9c0eedddfc3008c5bba823277a6f0fae9 Mon Sep 17 00:00:00 2001 From: Anna Piaskovska Date: Wed, 9 Oct 2024 15:23:05 +0300 Subject: [PATCH 1/3] change classes --- src/main/java/flower/store/Flower.java | 21 +++++++++++++++------ src/main/java/flower/store/FlowerColor.java | 18 +++++++----------- src/main/java/flower/store/FlowerType.java | 2 +- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/main/java/flower/store/Flower.java b/src/main/java/flower/store/Flower.java index 206ef870..b90263e2 100644 --- a/src/main/java/flower/store/Flower.java +++ b/src/main/java/flower/store/Flower.java @@ -1,21 +1,30 @@ package flower.store; +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; - - +@Getter @Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString public class Flower { - @Getter private double sepalLength; private FlowerColor color; - @Getter private double price; - @Getter private FlowerType flowerType; + public Flower(Flower flower) { + this.color = flower.color; + this.flowerType = flower.flowerType; + this.price = flower.price; + this.sepalLength = flower.sepalLength; + } + public String getColor() { - return color.toString(); + return color.getCode(); } } diff --git a/src/main/java/flower/store/FlowerColor.java b/src/main/java/flower/store/FlowerColor.java index 4a6221f7..a01c0268 100644 --- a/src/main/java/flower/store/FlowerColor.java +++ b/src/main/java/flower/store/FlowerColor.java @@ -1,18 +1,14 @@ package flower.store; +import lombok.Getter; + +@Getter public enum FlowerColor { - /** - * Flower colors. - */ - RED("#FF0000"), BLUE("#0000FF"); - private final String stringRepresentation; - FlowerColor(String stringRepresentation) { - this.stringRepresentation = stringRepresentation; - } + RED("#FF0000"), WHITE("#FFFFFF"), YELLOW("#FFFF00"); + private String code; - @Override - public String toString() { - return stringRepresentation; + FlowerColor(String code) { + this.code = code; } } diff --git a/src/main/java/flower/store/FlowerType.java b/src/main/java/flower/store/FlowerType.java index ac22e2fd..49e3ca54 100644 --- a/src/main/java/flower/store/FlowerType.java +++ b/src/main/java/flower/store/FlowerType.java @@ -1,5 +1,5 @@ package flower.store; public enum FlowerType { - CHAMOMILE, ROSE, TULIP; + ROSE, CHAMOMILE, TULIP; } From 651545dba82b29046acbcd9aabfd18de6ce49b51 Mon Sep 17 00:00:00 2001 From: Anna Piaskovska Date: Wed, 9 Oct 2024 15:28:48 +0300 Subject: [PATCH 2/3] flower-bucket classes --- src/main/java/flower/store/FlowerBucket.java | 31 ++++++++++++++++++++ src/main/java/flower/store/FlowerPack.java | 15 +++++++++- src/main/java/flower/store/Store.java | 26 ++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 src/main/java/flower/store/FlowerBucket.java create mode 100644 src/main/java/flower/store/Store.java diff --git a/src/main/java/flower/store/FlowerBucket.java b/src/main/java/flower/store/FlowerBucket.java new file mode 100644 index 00000000..dbed4982 --- /dev/null +++ b/src/main/java/flower/store/FlowerBucket.java @@ -0,0 +1,31 @@ +package flower.store; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class FlowerBucket { + private List flowerPacks; + + public FlowerBucket() { + flowerPacks = new ArrayList<>(); + } + + public void add(FlowerPack flowerPack) { + flowerPacks.add(flowerPack); + } + + public double getPrice() { + double price = 0.; + + for (FlowerPack flowerPack : flowerPacks) { + price += flowerPack.getCount() * flowerPack.getFlower().getPrice(); + } + + return price; + } +} \ No newline at end of file diff --git a/src/main/java/flower/store/FlowerPack.java b/src/main/java/flower/store/FlowerPack.java index 44c99495..5bd84e75 100644 --- a/src/main/java/flower/store/FlowerPack.java +++ b/src/main/java/flower/store/FlowerPack.java @@ -1,6 +1,19 @@ package flower.store; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor + public class FlowerPack { private Flower flower; - private int quantity; + private int count; + public FlowerPack(Flower flower, int count) { + this.flower = flower; + this.count = count; + } + } diff --git a/src/main/java/flower/store/Store.java b/src/main/java/flower/store/Store.java new file mode 100644 index 00000000..7035c0f5 --- /dev/null +++ b/src/main/java/flower/store/Store.java @@ -0,0 +1,26 @@ +package flower.store; + +import java.util.ArrayList; +import java.util.List; + +public class Store { + private List flowers; + + public Store() { + flowers = new ArrayList<>(); + } + + public void addFlower(Flower flower) { + flowers.add(flower); + } + + public List search(FlowerType flowerType, FlowerColor flowerColor) { + List result = new ArrayList<>(); + for (Flower flower : flowers) { + if (flower.getFlowerType() == flowerType && flower.getColor().equals(flowerColor.getCode())) { + result.add(flower); + } + } + return result; + } +} From bd00d5dd3517e6ceceeba5cf9e86e16da38f3f54 Mon Sep 17 00:00:00 2001 From: Anna Piaskovska Date: Wed, 9 Oct 2024 15:29:05 +0300 Subject: [PATCH 3/3] test class --- .../java/flower/store/FlowerBucketTest.java | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/test/java/flower/store/FlowerBucketTest.java diff --git a/src/test/java/flower/store/FlowerBucketTest.java b/src/test/java/flower/store/FlowerBucketTest.java new file mode 100644 index 00000000..fdc5ecfe --- /dev/null +++ b/src/test/java/flower/store/FlowerBucketTest.java @@ -0,0 +1,80 @@ +package flower.store; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import org.junit.jupiter.api.Assertions; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.Random; + +public class FlowerBucketTest { + private static final Random RANDOM_GENERATOR = new Random(); + private static final int MAX_QUANTITY = 1000; + private static final int MAX_PRICE = 100; + + private FlowerBucket flowerBucket; + + @BeforeEach + public void init() { + flowerBucket = new FlowerBucket(); + } + + @Test + public void testPrice() { + int price = RANDOM_GENERATOR.nextInt(MAX_PRICE); + int quantity = RANDOM_GENERATOR.nextInt(MAX_QUANTITY); + Flower flower = new Flower(); + flower.setPrice(price); + FlowerPack flowerPack = new FlowerPack(flower, quantity); + flowerBucket.add(flowerPack); + Assertions.assertEquals(price * quantity, flowerBucket.getPrice()); + } + + private Store store; + + @BeforeEach + public void setUp() { + store = new Store(); + } + + @Test + public void testAddFlower() { + Flower flower = new Flower(5.0, FlowerColor.RED, 10.0, FlowerType.ROSE); + store.addFlower(flower); + List flowers = store.search(FlowerType.ROSE, FlowerColor.RED); + assertEquals(1, flowers.size()); + assertEquals(flower, flowers.get(0)); + } + + @Test + public void testSearchByTypeAndColor() { + Flower flower1 = new Flower(5.0, FlowerColor.RED, 10.0, FlowerType.ROSE); + Flower flower2 = new Flower(6.0, FlowerColor.WHITE, 12.0, FlowerType.CHAMOMILE); + Flower flower3 = new Flower(4.5, FlowerColor.YELLOW, 8.0, FlowerType.ROSE); + store.addFlower(flower1); + store.addFlower(flower2); + store.addFlower(flower3); + + List result = store.search(FlowerType.ROSE, FlowerColor.RED); + assertEquals(1, result.size()); + assertEquals(flower1, result.get(0)); + + result = store.search(FlowerType.CHAMOMILE, FlowerColor.WHITE); + assertEquals(1, result.size()); + assertEquals(flower2, result.get(0)); + + result = store.search(FlowerType.ROSE, FlowerColor.YELLOW); + assertEquals(1, result.size()); + assertEquals(flower3, result.get(0)); + } + + @Test + public void testSearchNoResults() { + List result = store.search(FlowerType.ROSE, FlowerColor.WHITE); + assertTrue(result.isEmpty()); + } +}