From f1501ba64c01c87677467f9df262ca9fd77d4e29 Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 12 Nov 2019 13:49:45 -0500 Subject: [PATCH 1/8] part1 --- interfaces-1.iml | 16 ++++++++++++++ .../java/io/zipcoder/interfaces/Person.java | 19 +++++++++++++++++ .../io/zipcoder/interfaces/TestPerson.java | 21 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 interfaces-1.iml diff --git a/interfaces-1.iml b/interfaces-1.iml new file mode 100644 index 00000000..0ddf51c1 --- /dev/null +++ b/interfaces-1.iml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/io/zipcoder/interfaces/Person.java b/src/main/java/io/zipcoder/interfaces/Person.java index fc6a3ffe..f8bee5a0 100644 --- a/src/main/java/io/zipcoder/interfaces/Person.java +++ b/src/main/java/io/zipcoder/interfaces/Person.java @@ -1,5 +1,24 @@ package io.zipcoder.interfaces; public class Person { + private final long id; + private String name; + + public Person(long id, String name) { + this.id = id; + this.name = name; + } + + public Long getId() { + return this.id; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/src/test/java/io/zipcoder/interfaces/TestPerson.java b/src/test/java/io/zipcoder/interfaces/TestPerson.java index d64cd2f0..4459707b 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPerson.java +++ b/src/test/java/io/zipcoder/interfaces/TestPerson.java @@ -1,5 +1,26 @@ package io.zipcoder.interfaces; +import org.junit.Assert; +import org.junit.Test; + public class TestPerson { + @Test + public void testConstructor() { + Long expectedId = Long.valueOf(5); + String expectedName = "Wes"; + Person person = new Person(expectedId, expectedName); + Long actualId = person.getId(); + String actualName = person.getName(); + Assert.assertEquals(expectedId, actualId); + Assert.assertEquals(expectedName, actualName); + } + @Test + public void testSetName() { + Long expectedId = Long.valueOf(5); + String expectedName = "Wes"; + Person person = new Person(expectedId, expectedName); + person.setName("newname"); + Assert.assertEquals("newname", person.getName()); + } } From aac8a113f606ea71c0edf471017b384e701bb8d0 Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 12 Nov 2019 13:57:35 -0500 Subject: [PATCH 2/8] part3 --- .../java/io/zipcoder/interfaces/Learner.java | 8 ++++++ .../java/io/zipcoder/interfaces/Student.java | 18 +++++++++++++ .../io/zipcoder/interfaces/TestStudent.java | 27 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 src/main/java/io/zipcoder/interfaces/Learner.java create mode 100644 src/main/java/io/zipcoder/interfaces/Student.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestStudent.java diff --git a/src/main/java/io/zipcoder/interfaces/Learner.java b/src/main/java/io/zipcoder/interfaces/Learner.java new file mode 100644 index 00000000..72b6e416 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Learner.java @@ -0,0 +1,8 @@ +package io.zipcoder.interfaces; + +public interface Learner { + public void learn(Double numberOfHours); + + public Double getTotalStudyTime(); + +} diff --git a/src/main/java/io/zipcoder/interfaces/Student.java b/src/main/java/io/zipcoder/interfaces/Student.java new file mode 100644 index 00000000..1ad373d9 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Student.java @@ -0,0 +1,18 @@ +package io.zipcoder.interfaces; + +public class Student extends Person implements Learner { + private Double totalStudyTime; + + public Student(Long id, String name) { + super(id, name); + this.totalStudyTime = 0.0; + } + + public void learn(Double numberOfHours) { + this.totalStudyTime += numberOfHours; + } + + public Double getTotalStudyTime() { + return this.totalStudyTime; + } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestStudent.java b/src/test/java/io/zipcoder/interfaces/TestStudent.java new file mode 100644 index 00000000..636a8790 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudent.java @@ -0,0 +1,27 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestStudent { + @Test + public void testImplementation() { + Student student = new Student(Long.valueOf(4), "Wes"); + Assert.assertTrue(student instanceof Learner); + } + + @Test + public void testInheritance() { + Student student = new Student(Long.valueOf(4), "Wes"); + Assert.assertTrue(student instanceof Person); + } + + @Test + public void testLearn() { + Student student = new Student(Long.valueOf(4), "Wes"); + student.learn(80.5); + Double actual = student.getTotalStudyTime(); + Double expected = 80.5; + Assert.assertEquals(expected, actual); + } +} From cf0543056ab50c6b040f7de21b17cf9a0d9ace48 Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 12 Nov 2019 14:10:44 -0500 Subject: [PATCH 3/8] part5 --- .../io/zipcoder/interfaces/Instructor.java | 19 +++++++++ .../java/io/zipcoder/interfaces/Teacher.java | 6 +++ .../zipcoder/interfaces/TestInstructor.java | 42 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 src/main/java/io/zipcoder/interfaces/Instructor.java create mode 100644 src/main/java/io/zipcoder/interfaces/Teacher.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestInstructor.java diff --git a/src/main/java/io/zipcoder/interfaces/Instructor.java b/src/main/java/io/zipcoder/interfaces/Instructor.java new file mode 100644 index 00000000..6a2f3ab2 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Instructor.java @@ -0,0 +1,19 @@ +package io.zipcoder.interfaces; + +public class Instructor extends Person implements Teacher { + + public Instructor(Long id, String name) { + super(id, name); + + } + public void teach(Learner learner, Double numberOfHours) { + learner.learn(numberOfHours); + } + + public void lecture(Learner[] learners, Double numberOfHours) { + Double numberOfHoursPerLearner = numberOfHours / learners.length; + for (Learner learner: learners) { + learner.learn(numberOfHoursPerLearner); + } + } +} diff --git a/src/main/java/io/zipcoder/interfaces/Teacher.java b/src/main/java/io/zipcoder/interfaces/Teacher.java new file mode 100644 index 00000000..3136a06c --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Teacher.java @@ -0,0 +1,6 @@ +package io.zipcoder.interfaces; + +public interface Teacher { + public void teach(Learner learner, Double numberOfHours); + public void lecture(Learner[] learners, Double numberOfHours); +} diff --git a/src/test/java/io/zipcoder/interfaces/TestInstructor.java b/src/test/java/io/zipcoder/interfaces/TestInstructor.java new file mode 100644 index 00000000..9a8c22bc --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructor.java @@ -0,0 +1,42 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructor { + @Test + public void testImplementation() { + Instructor instructor = new Instructor(Long.valueOf(3), "github"); + Assert.assertTrue(instructor instanceof Teacher); + } + + @Test + public void testInheritance() { + Instructor instructor = new Instructor(Long.valueOf(3), "github"); + Assert.assertTrue(instructor instanceof Person); + } + + @Test + public void testTeach() { + Instructor instructor = new Instructor(Long.valueOf(3), "github"); + Student student1 = new Student(Long.valueOf(5), "Wes"); + instructor.teach(student1, 45.4); + Double actual = student1.getTotalStudyTime(); + Double expected = 45.4; + Assert.assertEquals(expected, actual, 2); + } + + @Test + public void testLecture() { + Instructor instructor = new Instructor(Long.valueOf(3), "github"); + Student student1 = new Student(Long.valueOf(5), "Wes"); + Student student2 = new Student(Long.valueOf(8), "Table"); + Student student3 = new Student(Long.valueOf(33), "Book"); + Student[] students = {student1, student2, student3}; + + instructor.lecture(students, 48.0); + for (Student student: students) { + Assert.assertEquals(student.getTotalStudyTime(), 16.0, 2); + } + } +} From 004ac836fddc1c0760ee692a5358fa56345b1b0a Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 12 Nov 2019 14:58:29 -0500 Subject: [PATCH 4/8] part6 --- .../java/io/zipcoder/interfaces/People.java | 71 +++++++++++++++ .../java/io/zipcoder/interfaces/Students.java | 11 +++ .../io/zipcoder/interfaces/TestPeople.java | 87 +++++++++++++++++++ 3 files changed, 169 insertions(+) create mode 100644 src/main/java/io/zipcoder/interfaces/People.java create mode 100644 src/main/java/io/zipcoder/interfaces/Students.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestPeople.java diff --git a/src/main/java/io/zipcoder/interfaces/People.java b/src/main/java/io/zipcoder/interfaces/People.java new file mode 100644 index 00000000..32fa0854 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/People.java @@ -0,0 +1,71 @@ +package io.zipcoder.interfaces; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class People implements Iterable { + private List personList; + + public People() { + this.personList = new ArrayList(); + } + + public void add(Person person) { + this.personList.add(person); + } + + public Person findById(Long id) { + Person target = null; + for (Person person: this.personList) { + if (person.getId().equals(id)) { + target = person; + break; + } + } + return target; + } + + public Boolean contains(Person person) { + Boolean exists = false; + for (Person eachperson: this.personList) { + if (eachperson.getName().equals(person.getName()) + && eachperson.getId().equals(person.getId())) { + exists = true; + break; + } + } + return exists; + } + + public void remove(Person person) { + if (this.contains(person)) { + this.personList.remove(person); + } + } + + public void remove(Long id) { + Person personToRemove = this.findById(id); + this.remove(personToRemove); + } + + public void removeAll() { + this.personList = new ArrayList(); + } + + public Integer count() { + return this.personList.size(); + } + + public Person[] toArray() { + Person[] personArray = new Person[this.count()]; + for (int i = 0; i < this.count(); i++) { + personArray[i] = this.personList.get(i); + } + return personArray; + } + + public Iterator iterator() { + return personList.iterator(); + } +} diff --git a/src/main/java/io/zipcoder/interfaces/Students.java b/src/main/java/io/zipcoder/interfaces/Students.java new file mode 100644 index 00000000..a46b7c02 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Students.java @@ -0,0 +1,11 @@ +package io.zipcoder.interfaces; + +public final class Students extends People { + private static final Students INSTANCE = new Students(); + + private Students() {} + + public static Students getInstance() { + return INSTANCE; + } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestPeople.java b/src/test/java/io/zipcoder/interfaces/TestPeople.java new file mode 100644 index 00000000..62a14a65 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java @@ -0,0 +1,87 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestPeople { + @Test + public void testAdd1() { + Person person1 = new Person(Long.valueOf(3), "rake"); + Person person2 = new Person(Long.valueOf(2), "ferb"); + People people = new People(); + people.add(person1); + people.add(person2); + Assert.assertTrue(people.contains(person1)); + } + + @Test + public void testAdd2() { + Person person1 = new Person(Long.valueOf(3), "rake"); + Person person2 = new Person(Long.valueOf(2), "ferb"); + People people = new People(); + people.add(person1); + people.add(person2); + Assert.assertTrue(people.contains(person2)); + } + + @Test + public void testRemove() { + Person person1 = new Person(Long.valueOf(3), "rake"); + Person person2 = new Person(Long.valueOf(2), "ferb"); + People people = new People(); + people.add(person1); + people.add(person2); + Assert.assertTrue(people.contains(person2)); + people.remove(person2); + Assert.assertFalse(people.contains(person2)); + } + + @Test + public void testRemoveById() { + Person person1 = new Person(Long.valueOf(3), "rake"); + Person person2 = new Person(Long.valueOf(2), "ferb"); + People people = new People(); + people.add(person1); + people.add(person2); + Assert.assertTrue(people.contains(person2)); + people.remove(Long.valueOf(2)); + Assert.assertFalse(people.contains(person2)); + } + + @Test + public void testRemoveAll() { + Person person1 = new Person(Long.valueOf(3), "rake"); + Person person2 = new Person(Long.valueOf(2), "ferb"); + People people = new People(); + people.add(person1); + people.add(person2); + Assert.assertTrue(people.contains(person2)); + people.removeAll(); + Integer actual = people.count(); + Integer expected = 0; + Assert.assertEquals(expected, actual); + } + + @Test + public void testFindById() { + Person person1 = new Person(Long.valueOf(3), "rake"); + Person person2 = new Person(Long.valueOf(2), "ferb"); + People people = new People(); + people.add(person1); + people.add(person2); + Person actual = people.findById(Long.valueOf(3)); + Person expected = person1; + Assert.assertEquals(expected, actual); + } + + @Test + public void testToArray() { + Person person1 = new Person(Long.valueOf(3), "rake"); + Person person2 = new Person(Long.valueOf(2), "ferb"); + People people = new People(); + people.add(person1); + people.add(person2); + Person[] personArr = people.toArray(); + Assert.assertEquals(2, personArr.length); + } +} From 61cd201a8fd828818373d8595ed2c5b8b283a1b9 Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 12 Nov 2019 18:05:17 -0500 Subject: [PATCH 5/8] i think i'm getting the hang of these singletons? --- .../zipcoder/interfaces/ConcretePeople.java | 12 ++++ .../io/zipcoder/interfaces/Instructors.java | 25 +++++++++ .../java/io/zipcoder/interfaces/People.java | 46 +++++++--------- .../java/io/zipcoder/interfaces/Students.java | 20 ++++++- .../interfaces/ZipCodeWilmington.java | 39 +++++++++++++ .../zipcoder/interfaces/TestInstructors.java | 18 ++++++ .../io/zipcoder/interfaces/TestPeople.java | 14 ++--- .../io/zipcoder/interfaces/TestStudents.java | 14 +++++ .../interfaces/TestZipCodeWilmington.java | 55 +++++++++++++++++++ 9 files changed, 208 insertions(+), 35 deletions(-) create mode 100644 src/main/java/io/zipcoder/interfaces/ConcretePeople.java create mode 100644 src/main/java/io/zipcoder/interfaces/Instructors.java create mode 100644 src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestInstructors.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestStudents.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java diff --git a/src/main/java/io/zipcoder/interfaces/ConcretePeople.java b/src/main/java/io/zipcoder/interfaces/ConcretePeople.java new file mode 100644 index 00000000..3b0bf7cf --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/ConcretePeople.java @@ -0,0 +1,12 @@ +package io.zipcoder.interfaces; + +public class ConcretePeople extends People { + + public Person[] toArray() { + Person[] personArray = new Person[this.count()]; + for (int i = 0; i < this.count(); i++) { + personArray[i] = this.personList.get(i); + } + return personArray; + } +} diff --git a/src/main/java/io/zipcoder/interfaces/Instructors.java b/src/main/java/io/zipcoder/interfaces/Instructors.java new file mode 100644 index 00000000..d5a359c6 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Instructors.java @@ -0,0 +1,25 @@ +package io.zipcoder.interfaces; + +public class Instructors extends People { + private static final Instructors INSTANCE; + + private Instructors() {} + + public static Instructors getInstance() { + if (INSTANCE == null) { + INSTANCE.add(new Instructor(Long.valueOf(3), "Wes")); + } + return INSTANCE; + } + + static { + INSTANCE = new Instructors(); + for (int i = 0; i < 5; i++) { + INSTANCE.add(new Instructor(Long.valueOf(i+1), "instructor"+i)); + } + } + + public Instructor[] toArray() { + return personList.toArray(new Instructor[personList.size()]); + } +} diff --git a/src/main/java/io/zipcoder/interfaces/People.java b/src/main/java/io/zipcoder/interfaces/People.java index 32fa0854..7fd63d7c 100644 --- a/src/main/java/io/zipcoder/interfaces/People.java +++ b/src/main/java/io/zipcoder/interfaces/People.java @@ -4,20 +4,16 @@ import java.util.Iterator; import java.util.List; -public class People implements Iterable { - private List personList; +public abstract class People implements Iterable { + List personList = new ArrayList(); - public People() { - this.personList = new ArrayList(); - } - - public void add(Person person) { + public void add(E person) { this.personList.add(person); } - public Person findById(Long id) { - Person target = null; - for (Person person: this.personList) { + public E findById(Long id) { + E target = null; + for (E person: this.personList) { if (person.getId().equals(id)) { target = person; break; @@ -26,11 +22,11 @@ public Person findById(Long id) { return target; } - public Boolean contains(Person person) { + public Boolean contains(E person) { Boolean exists = false; - for (Person eachperson: this.personList) { - if (eachperson.getName().equals(person.getName()) - && eachperson.getId().equals(person.getId())) { + for (E eachPerson: this.personList) { + if (eachPerson.getName().equals(person.getName()) + && eachPerson.getId().equals(person.getId())) { exists = true; break; } @@ -38,34 +34,34 @@ public Boolean contains(Person person) { return exists; } - public void remove(Person person) { + public void remove(E person) { if (this.contains(person)) { this.personList.remove(person); } } public void remove(Long id) { - Person personToRemove = this.findById(id); + E personToRemove = this.findById(id); this.remove(personToRemove); } public void removeAll() { - this.personList = new ArrayList(); + this.personList = new ArrayList(); } public Integer count() { return this.personList.size(); } - public Person[] toArray() { - Person[] personArray = new Person[this.count()]; - for (int i = 0; i < this.count(); i++) { - personArray[i] = this.personList.get(i); - } - return personArray; - } + public abstract E[] toArray(); +// Person[] personArray = new Person[this.count()]; +// for (int i = 0; i < this.count(); i++) { +// personArray[i] = this.personList.get(i); +// } +// return personArray; +// } - public Iterator iterator() { + public Iterator iterator() { return personList.iterator(); } } diff --git a/src/main/java/io/zipcoder/interfaces/Students.java b/src/main/java/io/zipcoder/interfaces/Students.java index a46b7c02..97a711a4 100644 --- a/src/main/java/io/zipcoder/interfaces/Students.java +++ b/src/main/java/io/zipcoder/interfaces/Students.java @@ -1,11 +1,25 @@ package io.zipcoder.interfaces; -public final class Students extends People { - private static final Students INSTANCE = new Students(); +public class Students extends People { + private static final Students INSTANCE; private Students() {} public static Students getInstance() { + if (INSTANCE == null) { + INSTANCE.add(new Student(Long.valueOf(3), "Wes")); + } return INSTANCE; } -} + + static { + INSTANCE = new Students(); + for (int i = 0; i < 35; i++) { + INSTANCE.add(new Student(Long.valueOf(i+1), "student"+i)); + } + } + + public Student[] toArray() { + return personList.toArray(new Student[personList.size()]); + } +} \ No newline at end of file diff --git a/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java new file mode 100644 index 00000000..32d8c8ad --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java @@ -0,0 +1,39 @@ +package io.zipcoder.interfaces; + +import java.util.HashMap; +import java.util.Map; + +public class ZipCodeWilmington { + private static final ZipCodeWilmington INSTANCE = new ZipCodeWilmington(); + + private static final Students students = Students.getInstance(); + private static final Instructors instructors = Instructors.getInstance(); + + public static ZipCodeWilmington getInstance() { + return INSTANCE; + } + + public static void hostLecture (Teacher teacher, Double numberOfHours) { + teacher.lecture((Student[]) students.toArray(), numberOfHours); + } + + public static void hostLecture (Long id, Double numberOfHours) { + Teacher teacher = (Instructor) instructors.findById(id); + + teacher.lecture((Student[]) students.toArray(), numberOfHours); + } + + public static Map getStudyMap() { + Map map = new HashMap(); + for (Student student: students) { + map.put(student, student.getTotalStudyTime()); + } + return map; + } + +// static { +// INSTANCE = new ZipCodeWilmington(); +// students = Students.getInstance(); +// instructors = Instructors.getInstance(); +// } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestInstructors.java b/src/test/java/io/zipcoder/interfaces/TestInstructors.java new file mode 100644 index 00000000..e99b068b --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructors.java @@ -0,0 +1,18 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructors { + @Test + public void testSingleton() { +// People people = new People(); +// for (int i = 0; i < 5; i++) { +// people.add(new Student(Long.valueOf(i+1), "name"+i)); +// } + Instructors instructors = Instructors.getInstance(); + Integer expected = 5; + Integer actual = instructors.count(); + Assert.assertEquals(expected, actual); + } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestPeople.java b/src/test/java/io/zipcoder/interfaces/TestPeople.java index 62a14a65..459719d5 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPeople.java +++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java @@ -8,7 +8,7 @@ public class TestPeople { public void testAdd1() { Person person1 = new Person(Long.valueOf(3), "rake"); Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new People(); + People people = new ConcretePeople(); people.add(person1); people.add(person2); Assert.assertTrue(people.contains(person1)); @@ -18,7 +18,7 @@ public void testAdd1() { public void testAdd2() { Person person1 = new Person(Long.valueOf(3), "rake"); Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new People(); + People people = new ConcretePeople(); people.add(person1); people.add(person2); Assert.assertTrue(people.contains(person2)); @@ -28,7 +28,7 @@ public void testAdd2() { public void testRemove() { Person person1 = new Person(Long.valueOf(3), "rake"); Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new People(); + People people = new ConcretePeople(); people.add(person1); people.add(person2); Assert.assertTrue(people.contains(person2)); @@ -40,7 +40,7 @@ public void testRemove() { public void testRemoveById() { Person person1 = new Person(Long.valueOf(3), "rake"); Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new People(); + People people = new ConcretePeople(); people.add(person1); people.add(person2); Assert.assertTrue(people.contains(person2)); @@ -52,7 +52,7 @@ public void testRemoveById() { public void testRemoveAll() { Person person1 = new Person(Long.valueOf(3), "rake"); Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new People(); + People people = new ConcretePeople(); people.add(person1); people.add(person2); Assert.assertTrue(people.contains(person2)); @@ -66,7 +66,7 @@ public void testRemoveAll() { public void testFindById() { Person person1 = new Person(Long.valueOf(3), "rake"); Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new People(); + People people = new ConcretePeople(); people.add(person1); people.add(person2); Person actual = people.findById(Long.valueOf(3)); @@ -78,7 +78,7 @@ public void testFindById() { public void testToArray() { Person person1 = new Person(Long.valueOf(3), "rake"); Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new People(); + People people = new ConcretePeople(); people.add(person1); people.add(person2); Person[] personArr = people.toArray(); diff --git a/src/test/java/io/zipcoder/interfaces/TestStudents.java b/src/test/java/io/zipcoder/interfaces/TestStudents.java new file mode 100644 index 00000000..52415979 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudents.java @@ -0,0 +1,14 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestStudents { + @Test + public void testSingleton() { + Students students = Students.getInstance(); + Integer expected = 35; + Integer actual = students.count(); + Assert.assertEquals(expected, actual); + } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java new file mode 100644 index 00000000..36f7fc10 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java @@ -0,0 +1,55 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Map; + +public class TestZipCodeWilmington { + @Test + public void testSingleton() { + ZipCodeWilmington.hostLecture(Long.valueOf(1), 350.0); + Map map = ZipCodeWilmington.getStudyMap(); + StringBuilder output = new StringBuilder(); + for (Student student: map.keySet()) { + output.append(String.format("%s\t%s\n",student.getName(), map.get(student))); + } + String actual = output.toString(); + String expected = "student31\t10.0\n" + + "student17\t10.0\n" + + "student27\t10.0\n" + + "student8\t10.0\n" + + "student34\t10.0\n" + + "student4\t10.0\n" + + "student10\t10.0\n" + + "student20\t10.0\n" + + "student29\t10.0\n" + + "student28\t10.0\n" + + "student21\t10.0\n" + + "student32\t10.0\n" + + "student0\t10.0\n" + + "student25\t10.0\n" + + "student2\t10.0\n" + + "student15\t10.0\n" + + "student13\t10.0\n" + + "student22\t10.0\n" + + "student3\t10.0\n" + + "student1\t10.0\n" + + "student24\t10.0\n" + + "student11\t10.0\n" + + "student9\t10.0\n" + + "student23\t10.0\n" + + "student16\t10.0\n" + + "student7\t10.0\n" + + "student14\t10.0\n" + + "student30\t10.0\n" + + "student6\t10.0\n" + + "student12\t10.0\n" + + "student26\t10.0\n" + + "student33\t10.0\n" + + "student19\t10.0\n" + + "student18\t10.0\n" + + "student5\t10.0\n"; + Assert.assertEquals(expected, actual); + } +} From 4cf3c666fb4b0138ac234b8a161b1ed631a7fe4b Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 12 Nov 2019 18:15:06 -0500 Subject: [PATCH 6/8] remove intermediate casting tricks --- .../interfaces/ZipCodeWilmington.java | 13 ++- .../interfaces/TestZipCodeWilmington.java | 100 +++++++++++++----- 2 files changed, 82 insertions(+), 31 deletions(-) diff --git a/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java index 32d8c8ad..29fc84ce 100644 --- a/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java +++ b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java @@ -1,7 +1,6 @@ package io.zipcoder.interfaces; -import java.util.HashMap; -import java.util.Map; +import java.util.LinkedHashMap; public class ZipCodeWilmington { private static final ZipCodeWilmington INSTANCE = new ZipCodeWilmington(); @@ -14,17 +13,17 @@ public static ZipCodeWilmington getInstance() { } public static void hostLecture (Teacher teacher, Double numberOfHours) { - teacher.lecture((Student[]) students.toArray(), numberOfHours); + teacher.lecture(students.toArray(), numberOfHours); } public static void hostLecture (Long id, Double numberOfHours) { - Teacher teacher = (Instructor) instructors.findById(id); + Teacher teacher = instructors.findById(id); - teacher.lecture((Student[]) students.toArray(), numberOfHours); + teacher.lecture(students.toArray(), numberOfHours); } - public static Map getStudyMap() { - Map map = new HashMap(); + public static LinkedHashMap getStudyMap() { + LinkedHashMap map = new LinkedHashMap(); for (Student student: students) { map.put(student, student.getTotalStudyTime()); } diff --git a/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java index 36f7fc10..655fa31f 100644 --- a/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java +++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java @@ -8,6 +8,7 @@ public class TestZipCodeWilmington { @Test public void testSingleton() { + Instructors.getInstance().findById(Long.valueOf(1)); ZipCodeWilmington.hostLecture(Long.valueOf(1), 350.0); Map map = ZipCodeWilmington.getStudyMap(); StringBuilder output = new StringBuilder(); @@ -15,41 +16,92 @@ public void testSingleton() { output.append(String.format("%s\t%s\n",student.getName(), map.get(student))); } String actual = output.toString(); - String expected = "student31\t10.0\n" + - "student17\t10.0\n" + - "student27\t10.0\n" + - "student8\t10.0\n" + - "student34\t10.0\n" + + String expected = "student0\t10.0\n" + + "student1\t10.0\n" + + "student2\t10.0\n" + + "student3\t10.0\n" + "student4\t10.0\n" + + "student5\t10.0\n" + + "student6\t10.0\n" + + "student7\t10.0\n" + + "student8\t10.0\n" + + "student9\t10.0\n" + "student10\t10.0\n" + + "student11\t10.0\n" + + "student12\t10.0\n" + + "student13\t10.0\n" + + "student14\t10.0\n" + + "student15\t10.0\n" + + "student16\t10.0\n" + + "student17\t10.0\n" + + "student18\t10.0\n" + + "student19\t10.0\n" + "student20\t10.0\n" + - "student29\t10.0\n" + - "student28\t10.0\n" + "student21\t10.0\n" + - "student32\t10.0\n" + - "student0\t10.0\n" + - "student25\t10.0\n" + - "student2\t10.0\n" + - "student15\t10.0\n" + - "student13\t10.0\n" + "student22\t10.0\n" + - "student3\t10.0\n" + - "student1\t10.0\n" + - "student24\t10.0\n" + - "student11\t10.0\n" + - "student9\t10.0\n" + "student23\t10.0\n" + - "student16\t10.0\n" + - "student7\t10.0\n" + - "student14\t10.0\n" + + "student24\t10.0\n" + + "student25\t10.0\n" + + "student26\t10.0\n" + + "student27\t10.0\n" + + "student28\t10.0\n" + + "student29\t10.0\n" + "student30\t10.0\n" + + "student31\t10.0\n" + + "student32\t10.0\n" + + "student33\t10.0\n" + + "student34\t10.0\n"; + Assert.assertEquals(expected, actual); + ZipCodeWilmington.hostLecture(Long.valueOf(1), -350.0); + + } + + @Test + public void testHostLecture() { + Instructor instructor = Instructors.getInstance().findById(Long.valueOf(1)); + ZipCodeWilmington.hostLecture(instructor, 350.0); + Map map = ZipCodeWilmington.getStudyMap(); + StringBuilder output = new StringBuilder(); + for (Student student: map.keySet()) { + output.append(String.format("%s\t%s\n",student.getName(), map.get(student))); + } + String actual = output.toString(); + String expected = "student0\t10.0\n" + + "student1\t10.0\n" + + "student2\t10.0\n" + + "student3\t10.0\n" + + "student4\t10.0\n" + + "student5\t10.0\n" + "student6\t10.0\n" + + "student7\t10.0\n" + + "student8\t10.0\n" + + "student9\t10.0\n" + + "student10\t10.0\n" + + "student11\t10.0\n" + "student12\t10.0\n" + + "student13\t10.0\n" + + "student14\t10.0\n" + + "student15\t10.0\n" + + "student16\t10.0\n" + + "student17\t10.0\n" + + "student18\t10.0\n" + + "student19\t10.0\n" + + "student20\t10.0\n" + + "student21\t10.0\n" + + "student22\t10.0\n" + + "student23\t10.0\n" + + "student24\t10.0\n" + + "student25\t10.0\n" + "student26\t10.0\n" + + "student27\t10.0\n" + + "student28\t10.0\n" + + "student29\t10.0\n" + + "student30\t10.0\n" + + "student31\t10.0\n" + + "student32\t10.0\n" + "student33\t10.0\n" + - "student19\t10.0\n" + - "student18\t10.0\n" + - "student5\t10.0\n"; + "student34\t10.0\n"; Assert.assertEquals(expected, actual); + } } From 0095d5e63055a14feca303b596b41c91e7aef88b Mon Sep 17 00:00:00 2001 From: wes Date: Wed, 13 Nov 2019 13:22:50 -0500 Subject: [PATCH 7/8] add Educator tests --- .../java/io/zipcoder/interfaces/Educator.java | 30 ++++++++++++++ .../io/zipcoder/interfaces/Instructors.java | 1 + .../io/zipcoder/interfaces/TestEducator.java | 39 +++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 src/main/java/io/zipcoder/interfaces/Educator.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestEducator.java diff --git a/src/main/java/io/zipcoder/interfaces/Educator.java b/src/main/java/io/zipcoder/interfaces/Educator.java new file mode 100644 index 00000000..cfe86d18 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Educator.java @@ -0,0 +1,30 @@ +package io.zipcoder.interfaces; + +public enum Educator implements Teacher { + INSTRUCTOR0(Long.valueOf(1), "instructor0"), INSTRUCTOR1(Long.valueOf(2), "instructor1"), INSTRUCTOR2(Long.valueOf(3), "instructor2"), INSTRUCTOR3(Long.valueOf(4), "instructor3"), INSTRUCTOR4(Long.valueOf(5), "instructor4"); + + private Instructor instructor; + private Double timeWorked = 0.0; + + Educator (Long id, String name) { + this.instructor = new Instructor(id, name); + } + + public void teach(Learner learner, Double numberOfHours) { + timeWorked += numberOfHours; + learner.learn(numberOfHours); + } + + public void lecture(Learner[] learners, Double numberOfHours) { + Double numberOfHoursPerLearner = numberOfHours / learners.length; + for (Learner learner : learners) { + teach(learner, numberOfHoursPerLearner); + } + } + + public Double getTimeWorked() { + return timeWorked; + } + + +} \ No newline at end of file diff --git a/src/main/java/io/zipcoder/interfaces/Instructors.java b/src/main/java/io/zipcoder/interfaces/Instructors.java index d5a359c6..6ffcfe2b 100644 --- a/src/main/java/io/zipcoder/interfaces/Instructors.java +++ b/src/main/java/io/zipcoder/interfaces/Instructors.java @@ -17,6 +17,7 @@ public static Instructors getInstance() { for (int i = 0; i < 5; i++) { INSTANCE.add(new Instructor(Long.valueOf(i+1), "instructor"+i)); } + } public Instructor[] toArray() { diff --git a/src/test/java/io/zipcoder/interfaces/TestEducator.java b/src/test/java/io/zipcoder/interfaces/TestEducator.java new file mode 100644 index 00000000..c2144041 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestEducator.java @@ -0,0 +1,39 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class TestEducator { + + @Test + public void testTeach() { + Student stu = new Student(Long.valueOf(56), "Stu"); + Educator.INSTRUCTOR1.teach(stu, 5000.0); + Assert.assertEquals(stu.getTotalStudyTime(), Educator.INSTRUCTOR1.getTimeWorked(), 2); + } + + @Test + public void testLecture() { + Student stu1 = new Student(Long.valueOf(344), "Stu"); + Student stu3 = new Student(Long.valueOf(5623), "Stu"); + Student stu2 = new Student(Long.valueOf(56123), "Stu"); + Student[] stus = {stu1, stu2, stu3}; + Educator.INSTRUCTOR2.lecture(stus, 6000.0); + Double expected = 2000.0; + for (Student stu : stus) { + Double actual = stu.getTotalStudyTime(); + Assert.assertEquals(expected, actual, 2); + } + } + + @Test + public void testGetTimeWorked() { + Student stu = new Student(Long.valueOf(333), "Stu"); + Educator.INSTRUCTOR0.teach(stu, 5000.0); + Double actual = Educator.INSTRUCTOR0.getTimeWorked(); + Double expected = 5000.0; + Assert.assertEquals(expected, actual, 2); + } +} \ No newline at end of file From 0d1a4636468cbb9831765cbedf259833383f8bfb Mon Sep 17 00:00:00 2001 From: wes Date: Thu, 14 Nov 2019 20:09:50 -0500 Subject: [PATCH 8/8] add Educator tests --- .../io/zipcoder/interfaces/Instructors.java | 2 +- .../java/io/zipcoder/interfaces/Learner.java | 4 +- .../java/io/zipcoder/interfaces/Students.java | 10 ++-- .../java/io/zipcoder/interfaces/Teacher.java | 4 +- .../io/zipcoder/interfaces/TestPeople.java | 58 +++++++------------ .../interfaces/TestZipCodeWilmington.java | 3 + 6 files changed, 33 insertions(+), 48 deletions(-) diff --git a/src/main/java/io/zipcoder/interfaces/Instructors.java b/src/main/java/io/zipcoder/interfaces/Instructors.java index 6ffcfe2b..eb6a4db4 100644 --- a/src/main/java/io/zipcoder/interfaces/Instructors.java +++ b/src/main/java/io/zipcoder/interfaces/Instructors.java @@ -21,6 +21,6 @@ public static Instructors getInstance() { } public Instructor[] toArray() { - return personList.toArray(new Instructor[personList.size()]); + return personList.toArray(new Instructor[0]); } } diff --git a/src/main/java/io/zipcoder/interfaces/Learner.java b/src/main/java/io/zipcoder/interfaces/Learner.java index 72b6e416..b58b3882 100644 --- a/src/main/java/io/zipcoder/interfaces/Learner.java +++ b/src/main/java/io/zipcoder/interfaces/Learner.java @@ -1,8 +1,8 @@ package io.zipcoder.interfaces; public interface Learner { - public void learn(Double numberOfHours); + void learn(Double numberOfHours); - public Double getTotalStudyTime(); + Double getTotalStudyTime(); } diff --git a/src/main/java/io/zipcoder/interfaces/Students.java b/src/main/java/io/zipcoder/interfaces/Students.java index 97a711a4..035e3b72 100644 --- a/src/main/java/io/zipcoder/interfaces/Students.java +++ b/src/main/java/io/zipcoder/interfaces/Students.java @@ -5,21 +5,21 @@ public class Students extends People { private Students() {} - public static Students getInstance() { + static Students getInstance() { if (INSTANCE == null) { - INSTANCE.add(new Student(Long.valueOf(3), "Wes")); + INSTANCE.add(new Student(3L, "Wes")); } return INSTANCE; } static { INSTANCE = new Students(); - for (int i = 0; i < 35; i++) { - INSTANCE.add(new Student(Long.valueOf(i+1), "student"+i)); + for (long i = 0; i < 35; i++) { + INSTANCE.add(new Student(i+1L, "student"+i)); } } public Student[] toArray() { - return personList.toArray(new Student[personList.size()]); + return personList.toArray(new Student[0]); } } \ No newline at end of file diff --git a/src/main/java/io/zipcoder/interfaces/Teacher.java b/src/main/java/io/zipcoder/interfaces/Teacher.java index 3136a06c..fe62cb8c 100644 --- a/src/main/java/io/zipcoder/interfaces/Teacher.java +++ b/src/main/java/io/zipcoder/interfaces/Teacher.java @@ -1,6 +1,6 @@ package io.zipcoder.interfaces; public interface Teacher { - public void teach(Learner learner, Double numberOfHours); - public void lecture(Learner[] learners, Double numberOfHours); + void teach(Learner learner, Double numberOfHours); + void lecture(Learner[] learners, Double numberOfHours); } diff --git a/src/test/java/io/zipcoder/interfaces/TestPeople.java b/src/test/java/io/zipcoder/interfaces/TestPeople.java index 459719d5..d5a3c156 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPeople.java +++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java @@ -1,36 +1,38 @@ package io.zipcoder.interfaces; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; public class TestPeople { - @Test - public void testAdd1() { - Person person1 = new Person(Long.valueOf(3), "rake"); - Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new ConcretePeople(); + People people; + Person person1, person2, person3; + + @Before + public void setUp() { + people = new ConcretePeople(); + person1 = new Person(3L, "rake"); + person2 = new Person(2L, "ferb"); + person3 = new Person(5L, "jimothy"); people.add(person1); people.add(person2); - Assert.assertTrue(people.contains(person1)); + } + + @Test + public void testAdd1() { + people.add(person3); + Assert.assertTrue(people.contains(person3)); } @Test public void testAdd2() { - Person person1 = new Person(Long.valueOf(3), "rake"); - Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new ConcretePeople(); - people.add(person1); - people.add(person2); - Assert.assertTrue(people.contains(person2)); + Person person4 = new Person(6L, "lump"); + people.add(person4); + Assert.assertTrue(people.contains(person4)); } @Test public void testRemove() { - Person person1 = new Person(Long.valueOf(3), "rake"); - Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new ConcretePeople(); - people.add(person1); - people.add(person2); Assert.assertTrue(people.contains(person2)); people.remove(person2); Assert.assertFalse(people.contains(person2)); @@ -38,11 +40,6 @@ public void testRemove() { @Test public void testRemoveById() { - Person person1 = new Person(Long.valueOf(3), "rake"); - Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new ConcretePeople(); - people.add(person1); - people.add(person2); Assert.assertTrue(people.contains(person2)); people.remove(Long.valueOf(2)); Assert.assertFalse(people.contains(person2)); @@ -50,11 +47,6 @@ public void testRemoveById() { @Test public void testRemoveAll() { - Person person1 = new Person(Long.valueOf(3), "rake"); - Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new ConcretePeople(); - people.add(person1); - people.add(person2); Assert.assertTrue(people.contains(person2)); people.removeAll(); Integer actual = people.count(); @@ -64,23 +56,13 @@ public void testRemoveAll() { @Test public void testFindById() { - Person person1 = new Person(Long.valueOf(3), "rake"); - Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new ConcretePeople(); - people.add(person1); - people.add(person2); - Person actual = people.findById(Long.valueOf(3)); + Person actual = people.findById(3L); Person expected = person1; Assert.assertEquals(expected, actual); } @Test public void testToArray() { - Person person1 = new Person(Long.valueOf(3), "rake"); - Person person2 = new Person(Long.valueOf(2), "ferb"); - People people = new ConcretePeople(); - people.add(person1); - people.add(person2); Person[] personArr = people.toArray(); Assert.assertEquals(2, personArr.length); } diff --git a/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java index 655fa31f..86d5cc24 100644 --- a/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java +++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java @@ -59,8 +59,11 @@ public void testSingleton() { @Test public void testHostLecture() { Instructor instructor = Instructors.getInstance().findById(Long.valueOf(1)); + ZipCodeWilmington.hostLecture(instructor, 350.0); + Map map = ZipCodeWilmington.getStudyMap(); + StringBuilder output = new StringBuilder(); for (Student student: map.keySet()) { output.append(String.format("%s\t%s\n",student.getName(), map.get(student)));