diff --git a/task-1/com/pizzacompany/Main.java b/task-1/com/pizzacompany/Main.java index 5c380fa..0c09f30 100644 --- a/task-1/com/pizzacompany/Main.java +++ b/task-1/com/pizzacompany/Main.java @@ -1,7 +1,39 @@ package com.pizzacompany; + +import com.pizzacompany.enums.Size; +import com.pizzacompany.enums.Topping; +import com.pizzacompany.model.Order; +import com.pizzacompany.model.Pizza; + +import java.util.ArrayList; +import java.util.List; + public class Main { public static void main(String[] args) { - System.out.println("Hello Pizza!"); + Order order = new Order(); + + List toppingsFirstPizza = new ArrayList<>(); + toppingsFirstPizza.add(Topping.CHEESE); + toppingsFirstPizza.add(Topping.MUSHROOMS); + + Pizza pizza1 = new Pizza(Size.MEDIUM, toppingsFirstPizza); + order.addPizza(pizza1); + + List toppingsSecondPizza = new ArrayList<>(); + toppingsSecondPizza.add(Topping.PINEAPPLE); + toppingsSecondPizza.add(Topping.OLIVES); + toppingsSecondPizza.add(Topping.CHEESE); + + Pizza pizza2 = new Pizza(Size.LARGE, toppingsSecondPizza); + order.addPizza(pizza2); + + List toppingsThirdPizza = new ArrayList<>(); + toppingsThirdPizza.add(Topping.PINEAPPLE); + + Pizza pizza3 = new Pizza(Size.SMALL, toppingsThirdPizza); + order.addPizza(pizza3); + + order.printReceipt(); } } \ No newline at end of file diff --git a/task-1/com/pizzacompany/enums/Size.java b/task-1/com/pizzacompany/enums/Size.java new file mode 100644 index 0000000..92d9472 --- /dev/null +++ b/task-1/com/pizzacompany/enums/Size.java @@ -0,0 +1,18 @@ +package com.pizzacompany.enums; + +public enum Size { + SMALL(6), + MEDIUM(9), + LARGE(12) + ; + + private final Integer price; + + Size(int price) { + this.price = price; + } + + public Integer getBasePrice(){ + return price; + } +} diff --git a/task-1/com/pizzacompany/enums/Topping.java b/task-1/com/pizzacompany/enums/Topping.java new file mode 100644 index 0000000..97540fa --- /dev/null +++ b/task-1/com/pizzacompany/enums/Topping.java @@ -0,0 +1,19 @@ +package com.pizzacompany.enums; + +public enum Topping { + CHEESE(1.00), + MUSHROOMS(1.50), + PEPPERONI(2.00), + OLIVES(1.00), + PINEAPPLE(1.50); + + private final double price; + + Topping(double price) { + this.price = price; + } + + public double getPrice() { + return price; + } +} diff --git a/task-1/com/pizzacompany/model/Order.java b/task-1/com/pizzacompany/model/Order.java new file mode 100644 index 0000000..0d64aba --- /dev/null +++ b/task-1/com/pizzacompany/model/Order.java @@ -0,0 +1,35 @@ +package com.pizzacompany.model; + +import java.util.ArrayList; +import java.util.List; + +public class Order { + List pizzas; + + public Order() { + this.pizzas = new ArrayList<>(); + } + + public void addPizza(Pizza pizza) { + pizzas.add(pizza); + } + + public double getTotalPrice() { + double total = 0; + for (Pizza pizza : pizzas) { + total += pizza.getTotalPrice(); + } + return total; + } + + public void printReceipt(){ + System.out.println("=== Receipt ==="); + + for (Pizza pizza : pizzas) { + System.out.println(pizza); + } + + System.out.println("---------------"); + System.out.println("Total: €" + String.format("€%.2f", getTotalPrice())); + } +} diff --git a/task-1/com/pizzacompany/model/Pizza.java b/task-1/com/pizzacompany/model/Pizza.java new file mode 100644 index 0000000..6d31e84 --- /dev/null +++ b/task-1/com/pizzacompany/model/Pizza.java @@ -0,0 +1,41 @@ +package com.pizzacompany.model; + +import com.pizzacompany.enums.Size; +import com.pizzacompany.enums.Topping; + +import java.util.ArrayList; +import java.util.List; + +public class Pizza { + private final Size size; + private List toppingList = new ArrayList<>(); + + public Pizza(Size size, List toppingList) { + this.size = size; + this.toppingList = toppingList; + } + + public List getToppingList() { + return toppingList; + } + + public Size getSize() { + return size; + } + + public double getTotalPrice(){ + double totalPrice = 0; + for (Topping topping : toppingList) { + totalPrice += topping.getPrice(); + } + totalPrice += size.getBasePrice(); + return totalPrice; + } + + @Override + public String toString() { + // MEDIUM pizza with [CHEESE, MUSHROOMS] - €11.50 + return size + " pizza with " + toppingList + " - €" + String.format(" - €%.2f", getTotalPrice()); + } + +} diff --git a/task-2/src/main/java/org/my/cache/Cache.java b/task-2/src/main/java/org/my/cache/Cache.java index 3804372..a6895fd 100644 --- a/task-2/src/main/java/org/my/cache/Cache.java +++ b/task-2/src/main/java/org/my/cache/Cache.java @@ -1,24 +1,30 @@ package org.my.cache; +import java.util.HashMap; +import java.util.Map; + class Cache { + + private Map cash = new HashMap<>(); + public void put(String key, T value) { - throw new UnsupportedOperationException("Not implemented yet"); + cash.put(key, value); } public T get(String key) { - throw new UnsupportedOperationException("Not implemented yet"); + return cash.get(key); } public T remove(String key) { - throw new UnsupportedOperationException("Not implemented yet"); + return cash.remove(key); } public int size() { - throw new UnsupportedOperationException("Not implemented yet"); + return cash.size(); } public void clear() { - throw new UnsupportedOperationException("Not implemented yet"); + cash.clear(); } } diff --git a/task-2/src/main/java/org/my/cache/Main.java b/task-2/src/main/java/org/my/cache/Main.java index 38c023b..2ae895a 100644 --- a/task-2/src/main/java/org/my/cache/Main.java +++ b/task-2/src/main/java/org/my/cache/Main.java @@ -2,6 +2,18 @@ public class Main { public static void main(String[] args) { - System.out.println("Hello Cache!"); + Cache stringCache = new Cache(); + stringCache.put("name", "HackYourFuture"); + System.out.println(stringCache.get("name")); // -> "HackYourFuture" + System.out.println(stringCache.get("city")); // -> null + + Cache numberCache = new Cache(); + numberCache.put("c1", 15.25); + numberCache.put("c2", 20.25); + numberCache.put("c3", 31.77); + System.out.println(numberCache.size()); // -> 3 + System.out.println(numberCache.get("c1")); // -> 15.25 + numberCache.remove("c1"); + System.out.println(numberCache.get("c1")); // -> null } } \ No newline at end of file diff --git a/task-2/src/test/java/org/my/cache/CacheTests.java b/task-2/src/test/java/org/my/cache/CacheTests.java index 3afbee4..2f1b585 100644 --- a/task-2/src/test/java/org/my/cache/CacheTests.java +++ b/task-2/src/test/java/org/my/cache/CacheTests.java @@ -1,12 +1,68 @@ package org.my.cache; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class CacheTests { + // Arrange + private Cache cache; + @BeforeEach + void setUp() { + cache = new Cache(); + } + + + @Test + void putIncreasesSize() { + // Act + cache.put("name", "Salem"); + + // Assert + assertEquals(1, cache.size()); + } + + @Test - void simpleTest() { - assertEquals(2, 1 + 1); + void getItemNotExist() { + // Act + cache.put("City", "Amsterdam"); + + // Assert + assertNull(cache.get("Age")); } + + + @Test + void removeItem() { + // Act + cache.put("City", "Amsterdam"); + cache.remove("City"); + + // Assert + assertEquals(0, cache.size()); + } + + + @Test + void returnSizeArray() { + // Act + cache.put("City", "Amsterdam"); + cache.put("Name", "Ali"); + + // Assert + assertEquals(2, cache.size()); + } + + @Test + void emptyArray() { + // Act + cache.put("City", "Amsterdam"); + cache.put("Name", "Ali"); + cache.clear(); + // Assert + assertEquals(0, cache.size()); + } + }