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..0a4ef52 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Bird.java @@ -0,0 +1,24 @@ +package io.zipcoder.polymorphism; + +public class Bird extends Pet { + public Bird(String name){ + super(name); + } + + @Override + public String speak() { + return "Chirp Chirp"; + } + + @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/Cat.java b/src/main/java/io/zipcoder/polymorphism/Cat.java new file mode 100644 index 0000000..da1e79d --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Cat.java @@ -0,0 +1,25 @@ +package io.zipcoder.polymorphism; + +public class Cat extends Pet { + public Cat(String name){ + super(name); + } + + @Override + 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/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..f55e372 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Dog.java @@ -0,0 +1,24 @@ +package io.zipcoder.polymorphism; + +public class Dog extends Pet { + public Dog(String name){ + super(name); + } + + @Override + public String speak() { + return "Woof Woof"; + } + + @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/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index ea9281e..ea33759 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -1,7 +1,53 @@ 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 input = Console.getIntegerInput("\nHow many pets do you have?\n"); + ArrayList petsLog = new ArrayList(); + + 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){ + case ("dog"): + Dog dog = new Dog(nameValue); + petsLog.add(dog); + break; + case ("cat"): + Cat cat = new Cat(nameValue); + petsLog.add(cat); + break; + case ("bird"): + Bird bird = new Bird(nameValue); + petsLog.add(bird); + 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..07ff44e --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Pet.java @@ -0,0 +1,27 @@ +package io.zipcoder.polymorphism; + +public abstract class Pet implements Comparable{ + 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; + } + + +} 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..61c8d9c --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/PetComparator.java @@ -0,0 +1,17 @@ +package io.zipcoder.polymorphism; + +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 new file mode 100644 index 0000000..f973e71 --- /dev/null +++ b/src/test/java/io/zipcoder/polymorphism/BirdTest.java @@ -0,0 +1,59 @@ +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); + } + + @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 new file mode 100644 index 0000000..31382e7 --- /dev/null +++ b/src/test/java/io/zipcoder/polymorphism/CatTest.java @@ -0,0 +1,59 @@ +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); + } + + @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..084eefb --- /dev/null +++ b/src/test/java/io/zipcoder/polymorphism/ComparatorTest.java @@ -0,0 +1,51 @@ +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); + } + + @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/DogTest.java b/src/test/java/io/zipcoder/polymorphism/DogTest.java new file mode 100644 index 0000000..b3cfeeb --- /dev/null +++ b/src/test/java/io/zipcoder/polymorphism/DogTest.java @@ -0,0 +1,60 @@ +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); + } + + @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); + } + +} 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 { + + }