From 43540d833ae429f2942f9878ef2b6b8cfcc439c3 Mon Sep 17 00:00:00 2001
From: John Tokhi <56596400+tokhij@users.noreply.github.com>
Date: Sun, 3 Nov 2019 15:40:14 -0500
Subject: [PATCH 1/7] first commit, not complete
---
pom.xml | 16 ++++++-
.../java/io/zipcoder/polymorphism/Bird.java | 13 +++++
.../java/io/zipcoder/polymorphism/Cat.java | 14 ++++++
.../io/zipcoder/polymorphism/Console.java | 28 +++++++++++
.../java/io/zipcoder/polymorphism/Dog.java | 12 +++++
.../polymorphism/MainApplication.java | 47 +++++++++++++++++++
.../java/io/zipcoder/polymorphism/Pet.java | 27 +++++++++++
7 files changed, 155 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/io/zipcoder/polymorphism/Bird.java
create mode 100644 src/main/java/io/zipcoder/polymorphism/Cat.java
create mode 100644 src/main/java/io/zipcoder/polymorphism/Console.java
create mode 100644 src/main/java/io/zipcoder/polymorphism/Dog.java
create mode 100644 src/main/java/io/zipcoder/polymorphism/Pet.java
diff --git a/pom.xml b/pom.xml
index 93036ba..6402c2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,9 +4,21 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- io.zipcoder
- polymorphism
+ com.zipcodewilmington
+ loop_labs
1.0-SNAPSHOT
+
+ 1.8
+ 1.8
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
\ No newline at end of file
diff --git a/src/main/java/io/zipcoder/polymorphism/Bird.java b/src/main/java/io/zipcoder/polymorphism/Bird.java
new file mode 100644
index 0000000..6662cd9
--- /dev/null
+++ b/src/main/java/io/zipcoder/polymorphism/Bird.java
@@ -0,0 +1,13 @@
+package io.zipcoder.polymorphism;
+
+public class Bird extends Pet {
+ public Bird(String name){
+ super(name);
+ }
+
+ @Override
+ public String speak() {
+ return "Chirp Chirp";
+ }
+
+}
diff --git a/src/main/java/io/zipcoder/polymorphism/Cat.java b/src/main/java/io/zipcoder/polymorphism/Cat.java
new file mode 100644
index 0000000..526c09e
--- /dev/null
+++ b/src/main/java/io/zipcoder/polymorphism/Cat.java
@@ -0,0 +1,14 @@
+package io.zipcoder.polymorphism;
+
+public class Cat extends Pet {
+ public Cat(String name){
+ super(name);
+ }
+
+ @Override
+ public String speak() {
+ return "Meow";
+ }
+
+
+}
diff --git a/src/main/java/io/zipcoder/polymorphism/Console.java b/src/main/java/io/zipcoder/polymorphism/Console.java
new file mode 100644
index 0000000..406d60a
--- /dev/null
+++ b/src/main/java/io/zipcoder/polymorphism/Console.java
@@ -0,0 +1,28 @@
+package io.zipcoder.polymorphism;
+
+import java.util.Scanner;
+
+public class Console {
+
+ public static void print(String output, Object... args) {
+ System.out.printf(output, args);
+ }
+
+ public static void println(String output, Object... args) {
+ print(output + "\n", args);
+ }
+
+ public static String getStringInput(String prompt) {
+ Scanner scanner = new Scanner(System.in);
+ print(prompt);
+ String userInput = scanner.nextLine();
+ return userInput;
+ }
+
+ public static Integer getIntegerInput(String prompt) {
+ Scanner scanner = new Scanner(System.in);
+ print(prompt);
+ Integer userInput = Integer.valueOf(scanner.nextLine());
+ return userInput;
+ }
+}
diff --git a/src/main/java/io/zipcoder/polymorphism/Dog.java b/src/main/java/io/zipcoder/polymorphism/Dog.java
new file mode 100644
index 0000000..ec4ed0f
--- /dev/null
+++ b/src/main/java/io/zipcoder/polymorphism/Dog.java
@@ -0,0 +1,12 @@
+package io.zipcoder.polymorphism;
+
+public class Dog extends Pet {
+ public Dog(String name){
+ super(name);
+ }
+
+ @Override
+ public String speak() {
+ return "Woof Woof";
+ }
+}
diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java
index ea9281e..4099af1 100644
--- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java
+++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java
@@ -1,7 +1,54 @@
package io.zipcoder.polymorphism;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Created by leon on 11/6/17.
*/
+
public class MainApplication {
+ public static void main(String[] args){
+ Boolean turnOn = true;
+
+ while(turnOn){
+
+ Integer prompt = Console.getIntegerInput("\nHow many pets do you have?");
+ ArrayList petsLog = new ArrayList();
+
+ if(prompt > 0){
+ for(int i = 0; i < prompt; i++){
+ String petValue = Console.getStringInput("What kind of animal is pet #" + (i + 1) + "?");
+ String nameValue = Console.getStringInput("What is your pet's name?");
+ switch (petValue){
+ case ("dog"):
+ Dog dog = new Dog(nameValue);
+ petsLog.add(dog);
+ System.out.println(dog);
+ break;
+ case ("cat"):
+ Cat cat = new Cat(nameValue);
+ petsLog.add(cat);
+ break;
+ case ("bluejay"):
+ Bird bluejay = new Bird(nameValue);
+ petsLog.add(bluejay);
+ break;
+ default:
+ System.out.println("Wow, that's a really cool pet...");
+ break;
+ }
+
+ }
+ System.out.println("\n Your pets: \n");
+ for(int i = 0; i < petsLog.size(); i++){
+ System.out.println(petsLog.get(i).getClass().getSimpleName() + " " + petsLog.get(i).getName() + " says: " + petsLog.get(i).speak());
+ }
+
+ }
+ turnOn = false;
+ }
+
+ }
+
}
diff --git a/src/main/java/io/zipcoder/polymorphism/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pet.java
new file mode 100644
index 0000000..be33745
--- /dev/null
+++ b/src/main/java/io/zipcoder/polymorphism/Pet.java
@@ -0,0 +1,27 @@
+package io.zipcoder.polymorphism;
+
+public class Pet {
+ private String name;
+
+ public Pet(String name){
+ this.name = name;
+ }
+
+ public String name(){
+ return name;
+ }
+
+ public String speak(){
+ return "";
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+}
From 380f9966abc7b838832a049cd8975bc28db682e7 Mon Sep 17 00:00:00 2001
From: John Tokhi <56596400+tokhij@users.noreply.github.com>
Date: Sun, 3 Nov 2019 15:43:40 -0500
Subject: [PATCH 2/7] fixed bird part
---
.../java/io/zipcoder/polymorphism/MainApplication.java | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java
index 4099af1..b1d4bf0 100644
--- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java
+++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java
@@ -13,7 +13,7 @@ public static void main(String[] args){
while(turnOn){
- Integer prompt = Console.getIntegerInput("\nHow many pets do you have?");
+ Integer prompt = Console.getIntegerInput("\nHow many pets do you have?\n");
ArrayList petsLog = new ArrayList();
if(prompt > 0){
@@ -24,15 +24,14 @@ public static void main(String[] args){
case ("dog"):
Dog dog = new Dog(nameValue);
petsLog.add(dog);
- System.out.println(dog);
break;
case ("cat"):
Cat cat = new Cat(nameValue);
petsLog.add(cat);
break;
- case ("bluejay"):
- Bird bluejay = new Bird(nameValue);
- petsLog.add(bluejay);
+ case ("bird"):
+ Bird bird = new Bird(nameValue);
+ petsLog.add(bird);
break;
default:
System.out.println("Wow, that's a really cool pet...");
From 2711ba31ede89a151210a1e3b2d28149675f6476 Mon Sep 17 00:00:00 2001
From: John Tokhi <56596400+tokhij@users.noreply.github.com>
Date: Sun, 3 Nov 2019 15:45:27 -0500
Subject: [PATCH 3/7] prompt to input
---
src/main/java/io/zipcoder/polymorphism/MainApplication.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java
index b1d4bf0..ea33759 100644
--- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java
+++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java
@@ -13,11 +13,11 @@ public static void main(String[] args){
while(turnOn){
- Integer prompt = Console.getIntegerInput("\nHow many pets do you have?\n");
+ Integer input = Console.getIntegerInput("\nHow many pets do you have?\n");
ArrayList petsLog = new ArrayList();
- if(prompt > 0){
- for(int i = 0; i < prompt; i++){
+ if(input > 0){
+ for(int i = 0; i < input; i++){
String petValue = Console.getStringInput("What kind of animal is pet #" + (i + 1) + "?");
String nameValue = Console.getStringInput("What is your pet's name?");
switch (petValue){
From 1c0f999997ab77059ae774fe44229ef24a6e866a Mon Sep 17 00:00:00 2001
From: val
Date: Sun, 3 Nov 2019 16:04:04 -0500
Subject: [PATCH 4/7] Wrote tests/All passing
---
.../io/zipcoder/polymorphism/BirdTest.java | 32 ++++++++++++++++++
.../io/zipcoder/polymorphism/CatTest.java | 32 ++++++++++++++++++
.../io/zipcoder/polymorphism/DogTest.java | 33 +++++++++++++++++++
3 files changed, 97 insertions(+)
create mode 100644 src/test/java/io/zipcoder/polymorphism/BirdTest.java
create mode 100644 src/test/java/io/zipcoder/polymorphism/CatTest.java
create mode 100644 src/test/java/io/zipcoder/polymorphism/DogTest.java
diff --git a/src/test/java/io/zipcoder/polymorphism/BirdTest.java b/src/test/java/io/zipcoder/polymorphism/BirdTest.java
new file mode 100644
index 0000000..c59b0a1
--- /dev/null
+++ b/src/test/java/io/zipcoder/polymorphism/BirdTest.java
@@ -0,0 +1,32 @@
+package io.zipcoder.polymorphism;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class BirdTest {
+ @Test
+ public void nameTest() {
+ // Given
+ Bird bird = new Bird("BlueJay");
+ String expected = "BlueJay";
+
+ // When
+ String actual = bird.name();
+
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void speakTest() {
+ // Given
+ Bird bird = new Bird("BlueJay");
+ String expected = "Chirp Chirp";
+
+ // When
+ String actual = bird.speak();
+
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+}
diff --git a/src/test/java/io/zipcoder/polymorphism/CatTest.java b/src/test/java/io/zipcoder/polymorphism/CatTest.java
new file mode 100644
index 0000000..2cdd76a
--- /dev/null
+++ b/src/test/java/io/zipcoder/polymorphism/CatTest.java
@@ -0,0 +1,32 @@
+package io.zipcoder.polymorphism;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CatTest {
+ @Test
+ public void nameTest() {
+ // Given
+ Cat cat = new Cat("Val");
+ String expected = "Val";
+
+ // When
+ String actual = cat.name();
+
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void speakTest() {
+ // Given
+ Cat cat = new Cat("Valerie");
+ String expected = "Meow";
+
+ // When
+ String actual = cat.speak();
+
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+}
diff --git a/src/test/java/io/zipcoder/polymorphism/DogTest.java b/src/test/java/io/zipcoder/polymorphism/DogTest.java
new file mode 100644
index 0000000..0fbbe39
--- /dev/null
+++ b/src/test/java/io/zipcoder/polymorphism/DogTest.java
@@ -0,0 +1,33 @@
+package io.zipcoder.polymorphism;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class DogTest {
+ public String name;
+ @Test
+ public void nameTest() {
+ // Given
+ Dog dog = new Dog("John");
+ String expected = "John";
+
+ // When
+ String actual = dog.name();
+
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void speakTest() {
+ // Given
+ Dog dog = new Dog("John");
+ String expected = "Woof Woof";
+
+ // When
+ String actual = dog.speak();
+
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+}
From 064aec48e96813a662bd660ae7a84e0257d33aca Mon Sep 17 00:00:00 2001
From: John Tokhi <56596400+tokhij@users.noreply.github.com>
Date: Sun, 3 Nov 2019 16:43:23 -0500
Subject: [PATCH 5/7] started comparable pets lab
---
src/main/java/io/zipcoder/polymorphism/Pet.java | 2 +-
.../java/io/zipcoder/polymorphism/PetComparator.java | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 src/main/java/io/zipcoder/polymorphism/PetComparator.java
diff --git a/src/main/java/io/zipcoder/polymorphism/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pet.java
index be33745..07ff44e 100644
--- a/src/main/java/io/zipcoder/polymorphism/Pet.java
+++ b/src/main/java/io/zipcoder/polymorphism/Pet.java
@@ -1,6 +1,6 @@
package io.zipcoder.polymorphism;
-public class Pet {
+public abstract class Pet implements Comparable{
private String name;
public Pet(String name){
diff --git a/src/main/java/io/zipcoder/polymorphism/PetComparator.java b/src/main/java/io/zipcoder/polymorphism/PetComparator.java
new file mode 100644
index 0000000..127647e
--- /dev/null
+++ b/src/main/java/io/zipcoder/polymorphism/PetComparator.java
@@ -0,0 +1,9 @@
+package io.zipcoder.polymorphism;
+
+public class PetComparator {
+
+
+
+
+
+}
From cc4d1deff5964a51d531d59d5e113f65c0d76af4 Mon Sep 17 00:00:00 2001
From: John Tokhi <56596400+tokhij@users.noreply.github.com>
Date: Tue, 5 Nov 2019 20:09:46 -0500
Subject: [PATCH 6/7] alost done, just do the same for other pets
---
.../java/io/zipcoder/polymorphism/Bird.java | 4 ++
.../java/io/zipcoder/polymorphism/Cat.java | 11 +++++
.../java/io/zipcoder/polymorphism/Dog.java | 5 +++
.../zipcoder/polymorphism/PetComparator.java | 13 +++++-
.../io/zipcoder/polymorphism/BirdTest.java | 27 ++++++++++++
.../io/zipcoder/polymorphism/CatTest.java | 27 ++++++++++++
.../zipcoder/polymorphism/ComparatorTest.java | 43 +++++++++++++++++++
.../io/zipcoder/polymorphism/DogTest.java | 27 ++++++++++++
8 files changed, 155 insertions(+), 2 deletions(-)
create mode 100644 src/test/java/io/zipcoder/polymorphism/ComparatorTest.java
diff --git a/src/main/java/io/zipcoder/polymorphism/Bird.java b/src/main/java/io/zipcoder/polymorphism/Bird.java
index 6662cd9..9016b72 100644
--- a/src/main/java/io/zipcoder/polymorphism/Bird.java
+++ b/src/main/java/io/zipcoder/polymorphism/Bird.java
@@ -10,4 +10,8 @@ public String speak() {
return "Chirp Chirp";
}
+ @Override
+ public int compareTo(Pet o) {
+ return this.getName().compareTo(o.getName());
+ }
}
diff --git a/src/main/java/io/zipcoder/polymorphism/Cat.java b/src/main/java/io/zipcoder/polymorphism/Cat.java
index 526c09e..da1e79d 100644
--- a/src/main/java/io/zipcoder/polymorphism/Cat.java
+++ b/src/main/java/io/zipcoder/polymorphism/Cat.java
@@ -10,5 +10,16 @@ public String speak() {
return "Meow";
}
+ @Override
+ public int compareTo(Pet o) {
+ // do this for remaining pets
+ if (this.getName().compareTo(o.getName()) == 0) {
+ this.getClass().getName(); // class name of this pet
+ o.getClass().getName(); // class name pet o
+ return this.getClass().getName().compareTo(o.getClass().getName());
+ } else {
+ return this.getName().compareTo(o.getName());
+ }
+ }
}
diff --git a/src/main/java/io/zipcoder/polymorphism/Dog.java b/src/main/java/io/zipcoder/polymorphism/Dog.java
index ec4ed0f..3335152 100644
--- a/src/main/java/io/zipcoder/polymorphism/Dog.java
+++ b/src/main/java/io/zipcoder/polymorphism/Dog.java
@@ -9,4 +9,9 @@ public Dog(String name){
public String speak() {
return "Woof Woof";
}
+
+ @Override
+ public int compareTo(Pet o) {
+ return this.getName().compareTo(o.getName());
+ }
}
diff --git a/src/main/java/io/zipcoder/polymorphism/PetComparator.java b/src/main/java/io/zipcoder/polymorphism/PetComparator.java
index 127647e..334cbfc 100644
--- a/src/main/java/io/zipcoder/polymorphism/PetComparator.java
+++ b/src/main/java/io/zipcoder/polymorphism/PetComparator.java
@@ -1,9 +1,18 @@
package io.zipcoder.polymorphism;
-public class PetComparator {
-
+import java.util.Comparator;
+public class PetComparator implements Comparator {
+ @Override
+ public int compare(Pet o1, Pet o2) {
+ // do this for remaining pets
+ if (o1.getClass().getName().compareTo(o2.getClass().getName()) == 0) {
+ return o1.getName().compareTo(o2.getName());
+ } else {
+ return o1.getClass().getName().compareTo(o2.getClass().getName());
+ }
+ }
}
diff --git a/src/test/java/io/zipcoder/polymorphism/BirdTest.java b/src/test/java/io/zipcoder/polymorphism/BirdTest.java
index c59b0a1..f973e71 100644
--- a/src/test/java/io/zipcoder/polymorphism/BirdTest.java
+++ b/src/test/java/io/zipcoder/polymorphism/BirdTest.java
@@ -29,4 +29,31 @@ public void speakTest() {
// Then
Assert.assertEquals(expected, actual);
}
+
+ @Test
+ public void compareToTest() {
+ // Given
+ Bird bird = new Bird("BlueJay");
+ Cat cat = new Cat("Tiger");
+
+ // When
+ Integer actual = bird.compareTo(cat);
+
+ // Then
+ Assert.assertTrue(actual<0);
+ }
+
+ @Test
+ public void compareToByNameTest() {
+ // Given
+ Bird bird = new Bird("BlueJay");
+ Dog dog = new Dog("BlueJay");
+
+ // When
+ Integer actual = bird.compareTo(dog);
+
+ // Then
+ Assert.assertTrue(actual<0);
+ }
+
}
diff --git a/src/test/java/io/zipcoder/polymorphism/CatTest.java b/src/test/java/io/zipcoder/polymorphism/CatTest.java
index 2cdd76a..31382e7 100644
--- a/src/test/java/io/zipcoder/polymorphism/CatTest.java
+++ b/src/test/java/io/zipcoder/polymorphism/CatTest.java
@@ -29,4 +29,31 @@ public void speakTest() {
// Then
Assert.assertEquals(expected, actual);
}
+
+ @Test
+ public void compareToTest() {
+ // Given
+ Cat cat = new Cat("Tiger");
+ Dog dog = new Dog("Bobby");
+
+ // When
+ Integer actual = cat.compareTo(dog);
+
+ // Then
+ Assert.assertTrue(actual>0);
+ }
+
+ @Test
+ public void compareToByNameTest() {
+ // Given
+ Cat cat = new Cat("Tiger");
+ Dog dog = new Dog("Tiger");
+
+ // When
+ Integer actual = cat.compareTo(dog);
+
+ // Then
+ Assert.assertTrue(actual<0);
+ }
+
}
diff --git a/src/test/java/io/zipcoder/polymorphism/ComparatorTest.java b/src/test/java/io/zipcoder/polymorphism/ComparatorTest.java
new file mode 100644
index 0000000..d863a25
--- /dev/null
+++ b/src/test/java/io/zipcoder/polymorphism/ComparatorTest.java
@@ -0,0 +1,43 @@
+package io.zipcoder.polymorphism;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ComparatorTest {
+
+ @Test
+ public void compareToTest() {
+ // Given
+ Cat cat = new Cat("Tiger");
+ Dog dog = new Dog("Bobby");
+
+ // When
+ PetComparator petComp = new PetComparator();
+ Integer actual = petComp.compare(cat, dog);
+
+ // Then
+ Assert.assertTrue(actual<0);
+ }
+
+ @Test
+ public void compareToTest2() {
+ // Given
+ Cat cat = new Cat("Tiger");
+ Cat cat2 = new Cat("Tiger");
+
+ // When
+ PetComparator petComp = new PetComparator();
+ Integer actual = petComp.compare(cat, cat2);
+
+ // Then
+ Assert.assertTrue(actual==0);
+ }
+
+
+
+
+
+
+
+
+}
diff --git a/src/test/java/io/zipcoder/polymorphism/DogTest.java b/src/test/java/io/zipcoder/polymorphism/DogTest.java
index 0fbbe39..b3cfeeb 100644
--- a/src/test/java/io/zipcoder/polymorphism/DogTest.java
+++ b/src/test/java/io/zipcoder/polymorphism/DogTest.java
@@ -30,4 +30,31 @@ public void speakTest() {
// Then
Assert.assertEquals(expected, actual);
}
+
+ @Test
+ public void compareToTest() {
+ // Given
+ Dog dog = new Dog("Bobby");
+ Cat cat = new Cat("Tiger");
+
+ // When
+ Integer actual = dog.compareTo(cat);
+
+ // Then
+ Assert.assertTrue(actual<0);
+ }
+
+ @Test
+ public void compareToByNameTest() {
+ // Given
+ Bird bird = new Bird("Bobby");
+ Dog dog = new Dog("Bobby");
+
+ // When
+ Integer actual = dog.compareTo(bird);
+
+ // Then
+ Assert.assertTrue(actual>0);
+ }
+
}
From ef54dc9779b8f955291493fab08e0fe1c7310014 Mon Sep 17 00:00:00 2001
From: John Tokhi <56596400+tokhij@users.noreply.github.com>
Date: Tue, 5 Nov 2019 21:06:08 -0500
Subject: [PATCH 7/7] done
---
src/main/java/io/zipcoder/polymorphism/Bird.java | 9 ++++++++-
src/main/java/io/zipcoder/polymorphism/Dog.java | 9 ++++++++-
.../io/zipcoder/polymorphism/PetComparator.java | 3 +--
.../io/zipcoder/polymorphism/ComparatorTest.java | 14 +++++++++++---
.../zipcoder/polymorphism/MainApplicationTest.java | 2 ++
5 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/src/main/java/io/zipcoder/polymorphism/Bird.java b/src/main/java/io/zipcoder/polymorphism/Bird.java
index 9016b72..0a4ef52 100644
--- a/src/main/java/io/zipcoder/polymorphism/Bird.java
+++ b/src/main/java/io/zipcoder/polymorphism/Bird.java
@@ -12,6 +12,13 @@ public String speak() {
@Override
public int compareTo(Pet o) {
- return this.getName().compareTo(o.getName());
+ // do this for remaining pets
+ if (this.getName().compareTo(o.getName()) == 0) {
+ this.getClass().getName(); // class name of this pet
+ o.getClass().getName(); // class name pet o
+ return this.getClass().getName().compareTo(o.getClass().getName());
+ } else {
+ return this.getName().compareTo(o.getName());
+ }
}
}
diff --git a/src/main/java/io/zipcoder/polymorphism/Dog.java b/src/main/java/io/zipcoder/polymorphism/Dog.java
index 3335152..f55e372 100644
--- a/src/main/java/io/zipcoder/polymorphism/Dog.java
+++ b/src/main/java/io/zipcoder/polymorphism/Dog.java
@@ -12,6 +12,13 @@ public String speak() {
@Override
public int compareTo(Pet o) {
- return this.getName().compareTo(o.getName());
+ // do this for remaining pets
+ if (this.getName().compareTo(o.getName()) == 0) {
+ this.getClass().getName(); // class name of this pet
+ o.getClass().getName(); // class name pet o
+ return this.getClass().getName().compareTo(o.getClass().getName());
+ } else {
+ return this.getName().compareTo(o.getName());
+ }
}
}
diff --git a/src/main/java/io/zipcoder/polymorphism/PetComparator.java b/src/main/java/io/zipcoder/polymorphism/PetComparator.java
index 334cbfc..61c8d9c 100644
--- a/src/main/java/io/zipcoder/polymorphism/PetComparator.java
+++ b/src/main/java/io/zipcoder/polymorphism/PetComparator.java
@@ -7,12 +7,11 @@ public class PetComparator implements Comparator {
@Override
public int compare(Pet o1, Pet o2) {
- // do this for remaining pets
+ // do this for remaining pets?
if (o1.getClass().getName().compareTo(o2.getClass().getName()) == 0) {
return o1.getName().compareTo(o2.getName());
} else {
return o1.getClass().getName().compareTo(o2.getClass().getName());
}
-
}
}
diff --git a/src/test/java/io/zipcoder/polymorphism/ComparatorTest.java b/src/test/java/io/zipcoder/polymorphism/ComparatorTest.java
index d863a25..084eefb 100644
--- a/src/test/java/io/zipcoder/polymorphism/ComparatorTest.java
+++ b/src/test/java/io/zipcoder/polymorphism/ComparatorTest.java
@@ -33,11 +33,19 @@ public void compareToTest2() {
Assert.assertTrue(actual==0);
}
+ @Test
+ public void compareToTest3() {
+ // Given
+ Bird bird = new Bird("BlueJay");
+ Dog dog = new Dog("Bobby");
+ // When
+ PetComparator petComp = new PetComparator();
+ Integer actual = petComp.compare(bird, dog);
-
-
-
+ // Then
+ Assert.assertTrue(actual<0);
+ }
}
diff --git a/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java b/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java
index 7181623..64a6d8e 100644
--- a/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java
+++ b/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java
@@ -4,4 +4,6 @@
* Created by leon on 11/6/17.
*/
public class MainApplicationTest {
+
+
}