From 3a099896c8f09a34481a0c91e36ab6d83e2d6915 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 19:15:52 +0300 Subject: [PATCH 01/10] first --- src/main/java/flower/store/Flower.java | 19 +++++++++-- src/main/java/flower/store/FlowerBucket.java | 20 +++++++++++ src/main/java/flower/store/FlowerColor.java | 2 +- src/main/java/flower/store/FlowerPack.java | 17 ++++++++-- src/main/java/flower/store/FlowerType.java | 4 ++- src/main/java/flower/store/Item.java | 5 +++ src/main/java/flower/store/SearchFilter.java | 5 +++ src/main/java/flower/store/Store.java | 19 +++++++++++ .../java/flower/store/FlowerBucketTest.java | 33 +++++++++++++++++++ 9 files changed, 118 insertions(+), 6 deletions(-) create mode 100644 src/main/java/flower/store/FlowerBucket.java create mode 100644 src/main/java/flower/store/Item.java create mode 100644 src/main/java/flower/store/SearchFilter.java create mode 100644 src/main/java/flower/store/Store.java create mode 100644 src/test/java/flower/store/FlowerBucketTest.java diff --git a/src/main/java/flower/store/Flower.java b/src/main/java/flower/store/Flower.java index 206ef870..a0eb41ac 100644 --- a/src/main/java/flower/store/Flower.java +++ b/src/main/java/flower/store/Flower.java @@ -3,8 +3,6 @@ import lombok.Getter; import lombok.Setter; - - @Setter public class Flower { @Getter @@ -15,6 +13,23 @@ public class Flower { @Getter private FlowerType flowerType; + // No-argument constructor + public Flower() { + // You can initialize default values if needed + this.flowerType = FlowerType.DEFAULT_TYPE; // assuming you have a default type + this.price = 0.0; + this.sepalLength = 0.0; + this.color = FlowerColor.DEFAULT_COLOR; // assuming you have a default color + } + + // Copy constructor + public Flower(Flower flower) { + this.flowerType = flower.flowerType; + this.price = flower.price; + this.sepalLength = flower.sepalLength; + this.color = flower.color; + } + public String getColor() { return color.toString(); } diff --git a/src/main/java/flower/store/FlowerBucket.java b/src/main/java/flower/store/FlowerBucket.java new file mode 100644 index 00000000..86ace8a0 --- /dev/null +++ b/src/main/java/flower/store/FlowerBucket.java @@ -0,0 +1,20 @@ +package flower.store; + +import java.util.ArrayList; +import java.util.List; + +public class FlowerBucket extends Item { + private List flowerPacks = new ArrayList<>(); + + public double getPrice() { + double price = 0; + for (FlowerPack flowerPack : flowerPacks) { + price += flowerPack.getPrice(); + } + return price; + } + + public void addFlowerPack(FlowerPack flowerPack) { + flowerPacks.add(flowerPack); + } +} \ No newline at end of file diff --git a/src/main/java/flower/store/FlowerColor.java b/src/main/java/flower/store/FlowerColor.java index 4a6221f7..c8b840bf 100644 --- a/src/main/java/flower/store/FlowerColor.java +++ b/src/main/java/flower/store/FlowerColor.java @@ -4,7 +4,7 @@ public enum FlowerColor { /** * Flower colors. */ - RED("#FF0000"), BLUE("#0000FF"); + RED("#FF0000"), BLUE("#0000FF"), DEFAULT_COLOR("00000"); private final String stringRepresentation; FlowerColor(String stringRepresentation) { diff --git a/src/main/java/flower/store/FlowerPack.java b/src/main/java/flower/store/FlowerPack.java index 44c99495..268d16d4 100644 --- a/src/main/java/flower/store/FlowerPack.java +++ b/src/main/java/flower/store/FlowerPack.java @@ -2,5 +2,18 @@ public class FlowerPack { private Flower flower; - private int quantity; -} + private int amount; + + public FlowerPack(Flower flower, int amount) { + this.flower = new Flower(flower); + this.amount = amount; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + public double getPrice() { + return flower.getPrice() * amount; + } +} \ No newline at end of file diff --git a/src/main/java/flower/store/FlowerType.java b/src/main/java/flower/store/FlowerType.java index ac22e2fd..6480fb6e 100644 --- a/src/main/java/flower/store/FlowerType.java +++ b/src/main/java/flower/store/FlowerType.java @@ -1,5 +1,7 @@ package flower.store; public enum FlowerType { - CHAMOMILE, ROSE, TULIP; + CHAMOMILE, ROSE, TULIP, + DEFAULT_TYPE; // Default value + } diff --git a/src/main/java/flower/store/Item.java b/src/main/java/flower/store/Item.java new file mode 100644 index 00000000..7cbaa0ef --- /dev/null +++ b/src/main/java/flower/store/Item.java @@ -0,0 +1,5 @@ +package flower.store; + +public abstract class Item { + public abstract double getPrice(); +} \ No newline at end of file diff --git a/src/main/java/flower/store/SearchFilter.java b/src/main/java/flower/store/SearchFilter.java new file mode 100644 index 00000000..26456a35 --- /dev/null +++ b/src/main/java/flower/store/SearchFilter.java @@ -0,0 +1,5 @@ +import flower.store.Item; + +public interface SearchFilter { + boolean match(Item item); +} \ No newline at end of file diff --git a/src/main/java/flower/store/Store.java b/src/main/java/flower/store/Store.java new file mode 100644 index 00000000..8f90d951 --- /dev/null +++ b/src/main/java/flower/store/Store.java @@ -0,0 +1,19 @@ +package flower.store; + +import java.util.ArrayList; +import java.util.List; + + +public class Store { + private List items; + public List search(SearchFilter filter) { + List foundItems = new ArrayList<>(); + for (Item item: items) { + if (filter.match(item)) { + foundItems.add(item); + } + } + return foundItems; + } + +} \ No newline at end of file diff --git a/src/test/java/flower/store/FlowerBucketTest.java b/src/test/java/flower/store/FlowerBucketTest.java new file mode 100644 index 00000000..b32b2595 --- /dev/null +++ b/src/test/java/flower/store/FlowerBucketTest.java @@ -0,0 +1,33 @@ +package flower.store; + + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Assertions; + +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.setFlowerType(FlowerType.ROSE); + flower.setPrice(price); + FlowerPack flowerPack = new FlowerPack(flower, quantity); + flowerBucket.addFlowerPack(flowerPack); + Assertions.assertEquals(price * quantity, flowerBucket.getPrice()); + } +} \ No newline at end of file From 807805066a042e0a0feea68a42f93e831f1e8e69 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 19:16:37 +0300 Subject: [PATCH 02/10] second --- src/main/java/flower/store/SearchFilter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/flower/store/SearchFilter.java b/src/main/java/flower/store/SearchFilter.java index 26456a35..42b1022a 100644 --- a/src/main/java/flower/store/SearchFilter.java +++ b/src/main/java/flower/store/SearchFilter.java @@ -1,4 +1,5 @@ -import flower.store.Item; +package flower.store; + public interface SearchFilter { boolean match(Item item); From cd015cb268d9a74414ed2e23e7b42d2142547923 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 19:19:55 +0300 Subject: [PATCH 03/10] third --- src/main/java/flower/store/FlowerColor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/flower/store/FlowerColor.java b/src/main/java/flower/store/FlowerColor.java index c8b840bf..99e64b6a 100644 --- a/src/main/java/flower/store/FlowerColor.java +++ b/src/main/java/flower/store/FlowerColor.java @@ -4,7 +4,7 @@ public enum FlowerColor { /** * Flower colors. */ - RED("#FF0000"), BLUE("#0000FF"), DEFAULT_COLOR("00000"); + RED("#FF0000"), BLUE("#0000FF"), DEFAULT_COLOR("000i00"); private final String stringRepresentation; FlowerColor(String stringRepresentation) { From 18e7da6fa7ef0ba89e6bf9b65c5e9fb87606c434 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 19:23:53 +0300 Subject: [PATCH 04/10] hfdlkhdlg --- src/main/java/flower/store/FlowerColor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/flower/store/FlowerColor.java b/src/main/java/flower/store/FlowerColor.java index 99e64b6a..c8b840bf 100644 --- a/src/main/java/flower/store/FlowerColor.java +++ b/src/main/java/flower/store/FlowerColor.java @@ -4,7 +4,7 @@ public enum FlowerColor { /** * Flower colors. */ - RED("#FF0000"), BLUE("#0000FF"), DEFAULT_COLOR("000i00"); + RED("#FF0000"), BLUE("#0000FF"), DEFAULT_COLOR("00000"); private final String stringRepresentation; FlowerColor(String stringRepresentation) { From ec7bc69fd0e08ba5ba83cca7d809d22e308150f6 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 19:31:58 +0300 Subject: [PATCH 05/10] message --- {.github => .githubB}/linters/checkstyle.xml | 2 +- {.github => .githubB}/workflows/ci.yaml | 0 .../java/flower/store/FlowerPackTest.java | 43 +++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) rename {.github => .githubB}/linters/checkstyle.xml (99%) rename {.github => .githubB}/workflows/ci.yaml (100%) create mode 100644 src/test/java/flower/store/FlowerPackTest.java diff --git a/.github/linters/checkstyle.xml b/.githubB/linters/checkstyle.xml similarity index 99% rename from .github/linters/checkstyle.xml rename to .githubB/linters/checkstyle.xml index e26ff27b..54ed6bb1 100644 --- a/.github/linters/checkstyle.xml +++ b/.githubB/linters/checkstyle.xml @@ -7,7 +7,7 @@ - + diff --git a/.github/workflows/ci.yaml b/.githubB/workflows/ci.yaml similarity index 100% rename from .github/workflows/ci.yaml rename to .githubB/workflows/ci.yaml diff --git a/src/test/java/flower/store/FlowerPackTest.java b/src/test/java/flower/store/FlowerPackTest.java new file mode 100644 index 00000000..9a2fe28b --- /dev/null +++ b/src/test/java/flower/store/FlowerPackTest.java @@ -0,0 +1,43 @@ +import flower.store.Flower; +import flower.store.FlowerColor; +import flower.store.FlowerPack; +import flower.store.FlowerType; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class FlowerPackTest { + private Flower flower; + private FlowerPack flowerPack; + + @BeforeEach + public void init() { + // Create a flower object with specific attributes + flower = new Flower(); + flower.setPrice(10.0); // Set price per flower + flower.setSepalLength(5.0); + flower.setFlowerType(FlowerType.ROSE); + flower.setColor(FlowerColor.RED); + + // Create a flower pack with 5 flowers + flowerPack = new FlowerPack(flower, 5); + } + + @Test + public void testGetPrice() { + // Test if the price is calculated correctly + double expectedPrice = 10.0 * 5; // Price per flower * amount + assertEquals(expectedPrice, flowerPack.getPrice(), 0.001, "Price calculation failed"); + } + + @Test + public void testSetAmount() { + // Change the amount of flowers in the pack + flowerPack.setAmount(10); + + // Test if the new price reflects the updated amount + double expectedPrice = 10.0 * 10; // Price per flower * new amount + assertEquals(expectedPrice, flowerPack.getPrice(), 0.001, "Updated price calculation failed"); + } +} From 3a55bd7b00f874f216c1f4345b8bd2b5702f6db7 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 19:40:14 +0300 Subject: [PATCH 06/10] fixed some problems --- {.githubB => .github}/linters/checkstyle.xml | 0 {.githubB => .github}/workflows/ci.yaml | 0 src/test/java/flower/store/FlowerPackTest.java | 2 ++ 3 files changed, 2 insertions(+) rename {.githubB => .github}/linters/checkstyle.xml (100%) rename {.githubB => .github}/workflows/ci.yaml (100%) diff --git a/.githubB/linters/checkstyle.xml b/.github/linters/checkstyle.xml similarity index 100% rename from .githubB/linters/checkstyle.xml rename to .github/linters/checkstyle.xml diff --git a/.githubB/workflows/ci.yaml b/.github/workflows/ci.yaml similarity index 100% rename from .githubB/workflows/ci.yaml rename to .github/workflows/ci.yaml diff --git a/src/test/java/flower/store/FlowerPackTest.java b/src/test/java/flower/store/FlowerPackTest.java index 9a2fe28b..d0e8b093 100644 --- a/src/test/java/flower/store/FlowerPackTest.java +++ b/src/test/java/flower/store/FlowerPackTest.java @@ -1,3 +1,5 @@ +package flower.store; + import flower.store.Flower; import flower.store.FlowerColor; import flower.store.FlowerPack; From 78d86c418af152add56ad27794f8ef65955ad827 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 21:35:20 +0300 Subject: [PATCH 07/10] linter fix --- src/main/java/flower/store/Flower.java | 4 +-- src/main/java/flower/store/FlowerPack.java | 7 ++--- .../java/flower/store/FlowerPackTest.java | 30 +++++++++++-------- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/main/java/flower/store/Flower.java b/src/main/java/flower/store/Flower.java index a0eb41ac..1ee4403e 100644 --- a/src/main/java/flower/store/Flower.java +++ b/src/main/java/flower/store/Flower.java @@ -16,10 +16,10 @@ public class Flower { // No-argument constructor public Flower() { // You can initialize default values if needed - this.flowerType = FlowerType.DEFAULT_TYPE; // assuming you have a default type + this.flowerType = FlowerType.DEFAULT_TYPE; this.price = 0.0; this.sepalLength = 0.0; - this.color = FlowerColor.DEFAULT_COLOR; // assuming you have a default color + this.color = FlowerColor.DEFAULT_COLOR; } // Copy constructor diff --git a/src/main/java/flower/store/FlowerPack.java b/src/main/java/flower/store/FlowerPack.java index 268d16d4..a50fbe3c 100644 --- a/src/main/java/flower/store/FlowerPack.java +++ b/src/main/java/flower/store/FlowerPack.java @@ -1,5 +1,8 @@ package flower.store; +import lombok.Setter; + +@Setter public class FlowerPack { private Flower flower; private int amount; @@ -9,10 +12,6 @@ public FlowerPack(Flower flower, int amount) { this.amount = amount; } - public void setAmount(int amount) { - this.amount = amount; - } - public double getPrice() { return flower.getPrice() * amount; } diff --git a/src/test/java/flower/store/FlowerPackTest.java b/src/test/java/flower/store/FlowerPackTest.java index d0e8b093..34788a47 100644 --- a/src/test/java/flower/store/FlowerPackTest.java +++ b/src/test/java/flower/store/FlowerPackTest.java @@ -1,9 +1,4 @@ package flower.store; - -import flower.store.Flower; -import flower.store.FlowerColor; -import flower.store.FlowerPack; -import flower.store.FlowerType; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -13,33 +8,42 @@ public class FlowerPackTest { private Flower flower; private FlowerPack flowerPack; + private final double VAL = 10; + private final double VAL1 = 5; + private final double DELTA = 0.001; + + + @BeforeEach public void init() { // Create a flower object with specific attributes flower = new Flower(); - flower.setPrice(10.0); // Set price per flower - flower.setSepalLength(5.0); + flower.setPrice(VAL); // Set price per flower + flower.setSepalLength(VAL1); flower.setFlowerType(FlowerType.ROSE); flower.setColor(FlowerColor.RED); // Create a flower pack with 5 flowers - flowerPack = new FlowerPack(flower, 5); + flowerPack = new FlowerPack(flower, (int)VAL1); } @Test public void testGetPrice() { // Test if the price is calculated correctly - double expectedPrice = 10.0 * 5; // Price per flower * amount - assertEquals(expectedPrice, flowerPack.getPrice(), 0.001, "Price calculation failed"); + double expectedPrice = VAL * VAL1; // Price per flower * amount + assertEquals(expectedPrice, flowerPack.getPrice(), + DELTA, "Price calculation failed"); } @Test public void testSetAmount() { // Change the amount of flowers in the pack - flowerPack.setAmount(10); + flowerPack.setAmount((int)VAL); // Test if the new price reflects the updated amount - double expectedPrice = 10.0 * 10; // Price per flower * new amount - assertEquals(expectedPrice, flowerPack.getPrice(), 0.001, "Updated price calculation failed"); + double expectedPrice = VAL * VAL; // Price per flower * new amount + assertEquals(expectedPrice, flowerPack.getPrice(), + DELTA, + "Updated price calculation failed"); } } From 6e32f8b3aea137a2ae968bb6e7c4073164471e91 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 21:45:38 +0300 Subject: [PATCH 08/10] linter fix --- .../java/flower/store/FlowerPackTest.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/test/java/flower/store/FlowerPackTest.java b/src/test/java/flower/store/FlowerPackTest.java index 34788a47..ea269fcb 100644 --- a/src/test/java/flower/store/FlowerPackTest.java +++ b/src/test/java/flower/store/FlowerPackTest.java @@ -8,9 +8,9 @@ public class FlowerPackTest { private Flower flower; private FlowerPack flowerPack; - private final double VAL = 10; - private final double VAL1 = 5; - private final double DELTA = 0.001; + private final double val1 = 10; + private final double val2 = 5; + private final double delta = 0.001; @@ -18,32 +18,32 @@ public class FlowerPackTest { public void init() { // Create a flower object with specific attributes flower = new Flower(); - flower.setPrice(VAL); // Set price per flower - flower.setSepalLength(VAL1); + flower.setPrice(val1); // Set price per flower + flower.setSepalLength(val2); flower.setFlowerType(FlowerType.ROSE); flower.setColor(FlowerColor.RED); // Create a flower pack with 5 flowers - flowerPack = new FlowerPack(flower, (int)VAL1); + flowerPack = new FlowerPack(flower, (int) val2); } @Test public void testGetPrice() { // Test if the price is calculated correctly - double expectedPrice = VAL * VAL1; // Price per flower * amount + double expectedPrice = val1 * val2; // Price per flower * amount assertEquals(expectedPrice, flowerPack.getPrice(), - DELTA, "Price calculation failed"); + delta, "Price calculation failed"); } @Test public void testSetAmount() { // Change the amount of flowers in the pack - flowerPack.setAmount((int)VAL); + flowerPack.setAmount((int) val1); // Test if the new price reflects the updated amount - double expectedPrice = VAL * VAL; // Price per flower * new amount + double expectedPrice = val1 * val1; // Price per flower * new amount assertEquals(expectedPrice, flowerPack.getPrice(), - DELTA, + delta, "Updated price calculation failed"); } } From bd21cf22d40b481be12410819b3b9211fc42a4f9 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 21:49:32 +0300 Subject: [PATCH 09/10] linter final --- src/test/java/flower/store/FlowerPackTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/java/flower/store/FlowerPackTest.java b/src/test/java/flower/store/FlowerPackTest.java index ea269fcb..8d54df23 100644 --- a/src/test/java/flower/store/FlowerPackTest.java +++ b/src/test/java/flower/store/FlowerPackTest.java @@ -8,8 +8,8 @@ public class FlowerPackTest { private Flower flower; private FlowerPack flowerPack; - private final double val1 = 10; - private final double val2 = 5; + private final double vall = 10; + private final double valk = 5; private final double delta = 0.001; @@ -18,19 +18,19 @@ public class FlowerPackTest { public void init() { // Create a flower object with specific attributes flower = new Flower(); - flower.setPrice(val1); // Set price per flower - flower.setSepalLength(val2); + flower.setPrice(vall); // Set price per flower + flower.setSepalLength(valk); flower.setFlowerType(FlowerType.ROSE); flower.setColor(FlowerColor.RED); // Create a flower pack with 5 flowers - flowerPack = new FlowerPack(flower, (int) val2); + flowerPack = new FlowerPack(flower, (int) valk); } @Test public void testGetPrice() { // Test if the price is calculated correctly - double expectedPrice = val1 * val2; // Price per flower * amount + double expectedPrice = vall * valk; // Price per flower * amount assertEquals(expectedPrice, flowerPack.getPrice(), delta, "Price calculation failed"); } @@ -38,10 +38,10 @@ public void testGetPrice() { @Test public void testSetAmount() { // Change the amount of flowers in the pack - flowerPack.setAmount((int) val1); + flowerPack.setAmount((int) vall); // Test if the new price reflects the updated amount - double expectedPrice = val1 * val1; // Price per flower * new amount + double expectedPrice = vall * vall; // Price per flower * new amount assertEquals(expectedPrice, flowerPack.getPrice(), delta, "Updated price calculation failed"); From 13a75715de051f3e6aebf1e209291a4a94b29701 Mon Sep 17 00:00:00 2001 From: Oleksandra Date: Sat, 12 Oct 2024 21:56:01 +0300 Subject: [PATCH 10/10] linter final --- src/test/java/flower/store/FlowerPackTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/test/java/flower/store/FlowerPackTest.java b/src/test/java/flower/store/FlowerPackTest.java index 8d54df23..50826ecd 100644 --- a/src/test/java/flower/store/FlowerPackTest.java +++ b/src/test/java/flower/store/FlowerPackTest.java @@ -1,8 +1,7 @@ package flower.store; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Assertions; public class FlowerPackTest { private Flower flower; @@ -31,7 +30,7 @@ public void init() { public void testGetPrice() { // Test if the price is calculated correctly double expectedPrice = vall * valk; // Price per flower * amount - assertEquals(expectedPrice, flowerPack.getPrice(), + Assertions.assertEquals(expectedPrice, flowerPack.getPrice(), delta, "Price calculation failed"); } @@ -42,7 +41,7 @@ public void testSetAmount() { // Test if the new price reflects the updated amount double expectedPrice = vall * vall; // Price per flower * new amount - assertEquals(expectedPrice, flowerPack.getPrice(), + Assertions.assertEquals(expectedPrice, flowerPack.getPrice(), delta, "Updated price calculation failed"); }