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 src/main/java/flower/store/Chamomile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package flower.store;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Chamomile extends Flower {
public Chamomile() {
this.setFlowerType(FlowerType.CHAMOMILE);
}
}
12 changes: 11 additions & 1 deletion src/main/java/flower/store/Flower.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,14 @@ public class Flower {
public String getColor() {
return color.toString();
}
}

public void setPrice(double price) {
this.price = price;
}

public double getPrice() {
return price;
}


}
24 changes: 24 additions & 0 deletions src/main/java/flower/store/FlowerBucket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package flower.store;

import java.util.ArrayList;
import java.util.List;

public class FlowerBucket {
private List<FlowerPack> flowerPacks = new ArrayList<>();

public void add(FlowerPack flowerPack) {
flowerPacks.add(flowerPack);
}

public double getPrice() {
double totalPrice = 0.0;
for (FlowerPack pack : flowerPacks) {
totalPrice += pack.getPrice();
}
return totalPrice;
}

public List<FlowerPack> getFlowerPacks() {
return flowerPacks;
}
}
16 changes: 14 additions & 2 deletions src/main/java/flower/store/FlowerPack.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
package flower.store;

public class FlowerPack {
private Flower flower;
private int quantity;
}

public FlowerPack(Flower flower, int quantity) {
this.flower = flower;
this.quantity = quantity;
}

public double getPrice() {
return flower.getPrice() * quantity;
}

public Flower getFlower() {
return flower;
}
}
12 changes: 12 additions & 0 deletions src/main/java/flower/store/Rose.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package flower.store;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Rose extends Flower {
public Rose() {
this.setFlowerType(FlowerType.ROSE);
}
}
20 changes: 20 additions & 0 deletions src/main/java/flower/store/Store.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package flower.store;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Store {
private List<FlowerBucket> buckets = new ArrayList<>();

public void addBucket(FlowerBucket bucket) {
buckets.add(bucket);
}

public List<FlowerBucket> search(FlowerType flowerType) {
return buckets.stream()
.filter(bucket -> bucket.getFlowerPacks().stream()
.anyMatch(pack -> pack.getFlower().getFlowerType() == flowerType))
.collect(Collectors.toList());
}
}
11 changes: 11 additions & 0 deletions src/main/java/flower/store/Tulip.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package flower.store;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Tulip extends Flower {
public Tulip() {
this.setFlowerType(FlowerType.TULIP);
}
}
35 changes: 35 additions & 0 deletions src/test/java/flower/store/FlowerBucketTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
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 = 10;
int quantity = RANDOM_GENERATOR.nextInt(MAX_QUANTITY);
Flower flower = new Rose();
flower.setPrice(price);
FlowerPack flowerPack = new FlowerPack(flower, quantity);
flowerBucket.add(flowerPack);
int expectedPrice = price * quantity;
Assertions.assertEquals(expectedPrice, flowerBucket.getPrice());
}



}