From dc32fb47cbdead0e7facd5aea02f987a6a940a5e Mon Sep 17 00:00:00 2001
From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de>
Date: Sat, 10 Oct 2020 15:40:28 +0200
Subject: [PATCH] Add constructor injection in franchise

---
 src/pizzeria/PizzaFranchise.java  | 13 +++++++++++
 src/pizzeria/PizzaTestDrive.java  | 38 ++++++++++---------------------
 src/pizzeria/TestCheesePizza.java | 12 ++++++++++
 src/pizzeria/TestPizzaStore.java  | 14 ++++++++++++
 src/pizzeria/TestVeggiePizza.java | 12 ++++++++++
 5 files changed, 63 insertions(+), 26 deletions(-)
 create mode 100644 src/pizzeria/PizzaFranchise.java
 create mode 100644 src/pizzeria/TestCheesePizza.java
 create mode 100644 src/pizzeria/TestPizzaStore.java
 create mode 100644 src/pizzeria/TestVeggiePizza.java

diff --git a/src/pizzeria/PizzaFranchise.java b/src/pizzeria/PizzaFranchise.java
new file mode 100644
index 0000000..cb98968
--- /dev/null
+++ b/src/pizzeria/PizzaFranchise.java
@@ -0,0 +1,13 @@
+package pizzeria;
+
+public class PizzaFranchise {
+	private PizzaStore store;
+	
+	public PizzaFranchise(PizzaStore store) {
+		this.store = store;
+	}
+	
+	public Pizza orderPizza(String type) {
+		return store.orderPizza(type);
+	}
+}
diff --git a/src/pizzeria/PizzaTestDrive.java b/src/pizzeria/PizzaTestDrive.java
index a4ce31a..575749a 100644
--- a/src/pizzeria/PizzaTestDrive.java
+++ b/src/pizzeria/PizzaTestDrive.java
@@ -3,31 +3,17 @@ package pizzeria;
 public class PizzaTestDrive {
  
 	public static void main(String[] args) {
-		PizzaStore nyStore = new NYPizzaStore();
-		PizzaStore chicagoStore = new ChicagoPizzaStore();
- 
-		Pizza pizza = nyStore.orderPizza("cheese");
-		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
- 
-		pizza = chicagoStore.orderPizza("cheese");
-		System.out.println("Joel ordered a " + pizza.getName() + "\n");
-
-		pizza = nyStore.orderPizza("clam");
-		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
- 
-		pizza = chicagoStore.orderPizza("clam");
-		System.out.println("Joel ordered a " + pizza.getName() + "\n");
-
-		pizza = nyStore.orderPizza("pepperoni");
-		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
- 
-		pizza = chicagoStore.orderPizza("pepperoni");
-		System.out.println("Joel ordered a " + pizza.getName() + "\n");
-
-		pizza = nyStore.orderPizza("veggie");
-		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
- 
-		pizza = chicagoStore.orderPizza("veggie");
-		System.out.println("Joel ordered a " + pizza.getName() + "\n");
+		PizzaStore[] storeList = {new TestPizzaStore(), new NYPizzaStore(), new ChicagoPizzaStore()};
+		String[] customerList = {"Ethan", "Joel", "Martha"}; 
+		String[] pizzaType = {"cheese", "veggie"};
+		
+		for (int i=0; i<storeList.length; i++) {
+			PizzaFranchise franchise = new PizzaFranchise(storeList[i]);
+				
+			for (int j=0; j<pizzaType.length; j++) {
+				Pizza pizza = franchise.orderPizza(pizzaType[j]);
+				System.out.println(customerList[i] + " ordered a " + pizza.getName() + "\n");
+			}
+		}
 	}
 }
diff --git a/src/pizzeria/TestCheesePizza.java b/src/pizzeria/TestCheesePizza.java
new file mode 100644
index 0000000..f1755ee
--- /dev/null
+++ b/src/pizzeria/TestCheesePizza.java
@@ -0,0 +1,12 @@
+package pizzeria;
+
+public class TestCheesePizza extends Pizza {
+
+	public TestCheesePizza() { 
+		name = "Test Cheese Pizza";
+		dough = "Test Dough";
+		sauce = "Test Sauce";
+ 
+		toppings.add("Testing cheese toppings");
+	}
+}
diff --git a/src/pizzeria/TestPizzaStore.java b/src/pizzeria/TestPizzaStore.java
new file mode 100644
index 0000000..83679eb
--- /dev/null
+++ b/src/pizzeria/TestPizzaStore.java
@@ -0,0 +1,14 @@
+package pizzeria;
+
+public class TestPizzaStore extends PizzaStore {
+
+	Pizza createPizza(String item) {
+		if (item.equals("cheese")) {
+			return new TestCheesePizza();
+		} else if (item.equals("veggie")) {
+			return new TestVeggiePizza();
+		} else return null;
+	}
+	
+	
+}
diff --git a/src/pizzeria/TestVeggiePizza.java b/src/pizzeria/TestVeggiePizza.java
new file mode 100644
index 0000000..ffc72cb
--- /dev/null
+++ b/src/pizzeria/TestVeggiePizza.java
@@ -0,0 +1,12 @@
+package pizzeria;
+
+public class TestVeggiePizza extends Pizza {
+
+	public TestVeggiePizza() {
+		name = "Test Veggie Pizza";
+		dough = "Test Dough";
+		sauce = "Test Sauce";
+ 
+		toppings.add("Testing veggie toppings");
+	}
+}
-- 
GitLab