diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 00000000..b9b34643
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 00000000..63e90019
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 00000000..712ab9d9
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml
new file mode 100644
index 00000000..d4110417
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_12.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 00000000..f58bbc11
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..b2e4a345
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..711b3a53
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/interfaces-1.iml b/interfaces-1.iml
new file mode 100644
index 00000000..415829e4
--- /dev/null
+++ b/interfaces-1.iml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f0effe12..0371e0b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,19 @@
io.zipcoder
interfaces-1
0.0.1-SNAPSHOT
- jar
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 7
+ 7
+
+
+
+
+ jar
interfaces-1
http://maven.apache.org
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..5a1448b6
--- /dev/null
+++ b/src/main/java/io/zipcoder/interfaces/Educator.java
@@ -0,0 +1,23 @@
+package io.zipcoder.interfaces;
+
+public enum Educator implements Teacher {
+ LEON(1), DOLIO(2), KRIS(3);
+
+ private final Instructor instructor;
+ double timeWorked;
+
+ private Educator(long id) {
+ this.instructor = Instructors.getInstance().findById(id);
+ Instructors.getInstance().add(instructor);
+ }
+
+ public void teach(Learner learner, double numberOfHours) {
+ instructor.teach(learner, numberOfHours);
+ timeWorked += numberOfHours;
+ }
+
+ public void lecture(Learner[] learners, double numberOfHours) {
+ instructor.lecture(learners, numberOfHours);
+ timeWorked += numberOfHours;
+ }
+}
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..9ccfa05e
--- /dev/null
+++ b/src/main/java/io/zipcoder/interfaces/Instructor.java
@@ -0,0 +1,20 @@
+package io.zipcoder.interfaces;
+
+public class Instructor extends Person implements Teacher {
+
+
+ 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/Instructors.java b/src/main/java/io/zipcoder/interfaces/Instructors.java
new file mode 100644
index 00000000..4de00f6f
--- /dev/null
+++ b/src/main/java/io/zipcoder/interfaces/Instructors.java
@@ -0,0 +1,22 @@
+package io.zipcoder.interfaces;
+
+public class Instructors extends People {
+
+ private static final Instructors INSTANCE = new Instructors();
+
+ private Instructors() {
+ add(new Instructor(1, "Leon"));
+ add(new Instructor(2, "Dolio"));
+ add(new Instructor(3, "Kris"));
+
+ }
+
+ public static Instructors getInstance() {
+ return INSTANCE;
+ }
+
+ @Override
+ public Instructor[] toArray() {
+ 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
new file mode 100644
index 00000000..e516b4aa
--- /dev/null
+++ b/src/main/java/io/zipcoder/interfaces/Learner.java
@@ -0,0 +1,8 @@
+package io.zipcoder.interfaces;
+
+public interface Learner {
+
+ void learn(double numberOfHours);
+
+ Double getTotalStudyTime();
+}
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..5936fa1f
--- /dev/null
+++ b/src/main/java/io/zipcoder/interfaces/People.java
@@ -0,0 +1,54 @@
+package io.zipcoder.interfaces;
+
+import java.util.*;
+
+public abstract class People implements Iterable {
+
+ List personList = new ArrayList<>();
+
+ public void add(SomePerson person) {
+ personList.add(person);
+ }
+
+ public SomePerson findById(long id) {
+ for (SomePerson person : personList) {
+ if (person.getId() == id) {
+ return person;
+ }
+ }
+ return null;
+ }
+
+ public boolean contains(SomePerson person) {
+ for (SomePerson personToLookFor : personList) {
+ if (personToLookFor.getId() == person.getId()
+ && personToLookFor.getName().equals(person.getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void remove(SomePerson person) {
+ personList.remove(person);
+ }
+
+ public void remove(long id) {
+ remove(findById(id));
+ }
+
+ public void removeAll() {
+ personList.clear();
+ }
+
+ public int count() {
+ return personList.size();
+ }
+
+ public abstract SomePerson[] toArray();
+
+ public Iterator iterator() {
+ Iterator iterator = personList.iterator();
+ return iterator;
+ }
+}
diff --git a/src/main/java/io/zipcoder/interfaces/Person.java b/src/main/java/io/zipcoder/interfaces/Person.java
index fc6a3ffe..2e0e3ce1 100644
--- a/src/main/java/io/zipcoder/interfaces/Person.java
+++ b/src/main/java/io/zipcoder/interfaces/Person.java
@@ -2,4 +2,23 @@
public class Person {
+ final long id;
+ String name;
+
+ Person(long id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
}
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..04800518
--- /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{
+
+ double totalStudyTime;
+
+ Student(long id, String name) {
+ super(id, name);
+ }
+
+ public void learn(double numberOfHours) {
+ totalStudyTime += numberOfHours;
+ }
+
+ public Double getTotalStudyTime() {
+ return totalStudyTime;
+ }
+}
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..73a1ac0e
--- /dev/null
+++ b/src/main/java/io/zipcoder/interfaces/Students.java
@@ -0,0 +1,36 @@
+package io.zipcoder.interfaces;
+
+public class Students extends People {
+
+ private static final Students INSTANCE = new Students();
+
+ private Students() {
+ add(new Student(1, "Sitara"));
+ add(new Student(2, "Nicholas"));
+ add(new Student(3, "Denee"));
+ add(new Student(4, "Charnae"));
+ add(new Student(5, "Jennifer"));
+ add(new Student(6, "Nathan"));
+ add(new Student(7, "Zach S"));
+ add(new Student(8, "Jeremy"));
+ add(new Student(9, "Zach K"));
+ add(new Student(10, "Emmanuel"));
+ add(new Student(11, "Bobbi"));
+ add(new Student(12, "Rex"));
+ add(new Student(13, "Nishaben"));
+ add(new Student(14, "Raymond"));
+ add(new Student(15, "Dipinti"));
+ add(new Student(16, "John"));
+ add(new Student(17, "Tatiana"));
+ add(new Student(18, "Laura"));
+ }
+
+ public static Students getInstance() {
+ return INSTANCE;
+ }
+
+ @Override
+ public Student[] toArray() {
+ return personList.toArray(new Student[0]);
+ }
+}
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..2c683964
--- /dev/null
+++ b/src/main/java/io/zipcoder/interfaces/Teacher.java
@@ -0,0 +1,8 @@
+package io.zipcoder.interfaces;
+
+public interface Teacher {
+
+ void teach(Learner learner, double numberOfHours);
+
+ void lecture(Learner[] learners, double numberOfHours);
+}
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..a3642b19
--- /dev/null
+++ b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java
@@ -0,0 +1,36 @@
+package io.zipcoder.interfaces;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class ZipCodeWilmington {
+
+ private static final ZipCodeWilmington INSTANCE = new ZipCodeWilmington();
+ private Students students = Students.getInstance();
+ private Instructors instructors = Instructors.getInstance();
+
+ private ZipCodeWilmington() {
+
+ }
+
+ public static ZipCodeWilmington getInstance() {
+ return INSTANCE;
+ }
+
+ public void hostLecture(Educator teacher, double numberOfHours) {
+ teacher.lecture(students.toArray(), numberOfHours);
+ }
+
+ public void hostLecture(long id, double numberOfHours) {
+ Instructor instructor = instructors.findById(id);
+ instructor.lecture(students.toArray(), numberOfHours);
+ }
+
+ public Map getStudyMap() {
+ Map map = new HashMap<>();
+ for (Student student : students.personList) {
+ map.put(student, student.getTotalStudyTime());
+ }
+ return map;
+ }
+}
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..033eaa0a
--- /dev/null
+++ b/src/test/java/io/zipcoder/interfaces/TestEducator.java
@@ -0,0 +1,58 @@
+package io.zipcoder.interfaces;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestEducator {
+
+ @Before
+ public void setUp() {
+ Educator educator = Educator.LEON;
+ educator.timeWorked = 0;
+ }
+
+ @Test
+ public void implementationTest() {
+ // When
+ Educator educator = Educator.LEON;
+
+ // Then
+ Assert.assertTrue(educator instanceof Teacher);
+ }
+
+ @Test
+ public void teachTest() {
+ // Given
+ Educator educator = Educator.LEON;
+ Student student = new Student(1, "Bill");
+ double numberOfHours = 2;
+ double expectedTeachingTime = 2;
+
+ // When
+ educator.teach(student, numberOfHours);
+ double actualTeachingTime = educator.timeWorked;
+
+ // Then
+ Assert.assertEquals(expectedTeachingTime, actualTeachingTime, 0);
+ }
+
+ @Test
+ public void lectureTest() {
+ // Given
+ Educator educator = Educator.LEON;
+ Student studentBill = new Student(1, "Bill");
+ Student studentBen = new Student(2, "Ben");
+ Student studentAllen = new Student(3, "Allen");
+ Student[] students = new Student[] {studentBill, studentBen, studentAllen};
+ double numberOfHours = 18;
+ double expectedTeachingTime = 18;
+
+ // When
+ educator.lecture(students, numberOfHours);
+ double actualTeachingTime = educator.timeWorked;
+
+ // Then
+ Assert.assertEquals(expectedTeachingTime, actualTeachingTime, 0);
+ }
+}
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..38d47bf8
--- /dev/null
+++ b/src/test/java/io/zipcoder/interfaces/TestInstructor.java
@@ -0,0 +1,72 @@
+package io.zipcoder.interfaces;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestInstructor {
+
+ @Test
+ public void implementationTest() {
+ // Given
+ long id = 5;
+ String name = "Billy";
+
+ // When
+ Instructor instructor = new Instructor(id, name);
+
+ // Then
+ Assert.assertTrue(instructor instanceof Teacher);
+ }
+
+ @Test
+ public void inheritanceTest() {
+ // Given
+ long id = 5;
+ String name = "Billy";
+
+ // When
+ Instructor instructor = new Instructor(id, name);
+
+ // Then
+ Assert.assertTrue(instructor instanceof Person);
+ }
+
+ @Test
+ public void teachTest() {
+ // Given
+ Instructor instructor = new Instructor(5, "Sam");
+ Student student = new Student(1, "Bill");
+ double numberOfHours = 2;
+ double expectedStudyTime = 2;
+
+ // When
+ instructor.teach(student, numberOfHours);
+ double actualStudyTime = student.getTotalStudyTime();
+
+ // Then
+ Assert.assertEquals(expectedStudyTime, actualStudyTime, 0);
+ }
+
+ @Test
+ public void lectureTest() {
+ // Given
+ Instructor instructor = new Instructor(5, "Sam");
+ Student studentBill = new Student(1, "Bill");
+ Student studentBen = new Student(2, "Ben");
+ Student studentAllen = new Student(3, "Allen");
+ Student[] students = new Student[] {studentBill, studentBen, studentAllen};
+ double numberOfHours = 18;
+ double expectedStudyTime = 6;
+
+ // When
+ instructor.lecture(students, numberOfHours);
+ double actualStudyTimeOfBill = studentBill.getTotalStudyTime();
+ double actualStudyTimeOfBen = studentBen.getTotalStudyTime();
+ double actualStudyTimeOfAllen = studentAllen.getTotalStudyTime();
+
+ // Then
+ Assert.assertEquals(expectedStudyTime, actualStudyTimeOfBill, 0);
+ Assert.assertEquals(expectedStudyTime, actualStudyTimeOfBen, 0);
+ Assert.assertEquals(expectedStudyTime, actualStudyTimeOfAllen, 0);
+ }
+}
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..386e7a76
--- /dev/null
+++ b/src/test/java/io/zipcoder/interfaces/TestInstructors.java
@@ -0,0 +1,27 @@
+package io.zipcoder.interfaces;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestInstructors {
+
+ Instructors instructors = Instructors.getInstance();
+
+ @Test
+ public void areAllInstructorsInInstructorsTest() {
+ // Given
+ Instructor leon = new Instructor(1, "Leon");
+ Instructor dolio = new Instructor(2, "Dolio");
+ Instructor kris = new Instructor(3, "Kris");
+
+ // When
+ boolean instructorsIncludesLeon = instructors.contains(leon);
+ boolean instructorsIncludesDolio = instructors.contains(dolio);
+ boolean instructorsIncludesKris = instructors.contains(kris);
+
+ // Then
+ Assert.assertTrue(instructorsIncludesLeon);
+ Assert.assertTrue(instructorsIncludesDolio);
+ Assert.assertTrue(instructorsIncludesKris);
+ }
+}
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..f145e6a5
--- /dev/null
+++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java
@@ -0,0 +1,81 @@
+package io.zipcoder.interfaces;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.*;
+
+public class TestPeople {
+
+ @After
+ public void tearDown() {
+ Students students = Students.getInstance();
+ students.remove(30);
+ students.remove(40);
+ students.remove(50);
+ }
+
+ @Test
+ public void addTest() {
+ // Given
+ Students students = Students.getInstance();
+ Student personNamedBill = new Student(30, "Bill");
+ Student personNamedAllen = new Student(40, "Allen");
+ Student personNamedTom = new Student(50, "Tom");
+ List expectedListOfPeople = new ArrayList<>(Arrays.asList(
+ personNamedBill, personNamedAllen, personNamedTom));
+
+ // When
+ students.add(personNamedBill);
+ students.add(personNamedAllen);
+ students.add(personNamedTom);
+ List actualListOfPeople = new ArrayList<>(Arrays.asList(students.findById(30), students.findById(40), students.findById(50)));
+
+ // Then
+ Assert.assertEquals(expectedListOfPeople, actualListOfPeople);
+ }
+
+ @Test
+ public void findByIdTest() {
+ // Given
+ Students students = Students.getInstance();
+ Student personNamedBill = new Student(30, "Bill");
+ Student expectedPersonNamedAllen = new Student(40, "Allen");
+ Student personNamedTom = new Student(50, "Tom");
+ Long allensId = expectedPersonNamedAllen.getId();
+
+ // When
+ students.add(personNamedBill);
+ students.add(expectedPersonNamedAllen);
+ students.add(personNamedTom);
+ Student actualPersonNamedAllen = students.findById(allensId);
+
+ // Then
+ Assert.assertEquals(expectedPersonNamedAllen, actualPersonNamedAllen);
+ }
+
+ @Test
+ public void removeTest() {
+ // Given
+ Students students = Students.getInstance();
+ Student personNamedBill = new Student(30, "Bill");
+ Student personNamedAllen = new Student(40, "Allen");
+ Student personNamedTom = new Student(50, "Tom");
+ List expectedListOfPeople = new ArrayList<>(Arrays.asList(
+ personNamedBill, personNamedAllen));
+ Integer expectedNumberOfPeople = 20;
+
+ // When
+ Integer actualNumberOfPeople = (students.personList.size()) + 2;
+ students.add(personNamedBill);
+ students.add(personNamedAllen);
+ students.add(personNamedTom);
+ students.remove(personNamedTom);
+ List actualListOfPeople = new ArrayList<>(Arrays.asList(students.findById(30), students.findById(40), students.findById(50)));
+
+ // Then
+ Assert.assertEquals(expectedNumberOfPeople, actualNumberOfPeople);
+ }
+}
diff --git a/src/test/java/io/zipcoder/interfaces/TestPerson.java b/src/test/java/io/zipcoder/interfaces/TestPerson.java
index d64cd2f0..641caec1 100644
--- a/src/test/java/io/zipcoder/interfaces/TestPerson.java
+++ b/src/test/java/io/zipcoder/interfaces/TestPerson.java
@@ -1,5 +1,37 @@
package io.zipcoder.interfaces;
+import org.junit.Assert;
+import org.junit.Test;
+
public class TestPerson {
+ @Test
+ public void constructorTest() {
+ // Given
+ long expectedId = 5;
+ String expectedName = "Bob";
+
+ // When
+ Person person = new Person(expectedId, expectedName);
+ long actualId = person.getId();
+ String actualName = person.getName();
+
+ // Then
+ Assert.assertEquals(expectedId, actualId);
+ Assert.assertEquals(expectedName, actualName);
+ }
+
+ @Test
+ public void setNameTest() {
+ // Given
+ Person person = new Person(5, "Allen");
+ String expectedName = "Bob";
+
+ // When
+ person.setName(expectedName);
+ String actualName = person.getName();
+
+ // Then
+ Assert.assertEquals(expectedName, actualName);
+ }
}
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..430b957f
--- /dev/null
+++ b/src/test/java/io/zipcoder/interfaces/TestStudent.java
@@ -0,0 +1,47 @@
+package io.zipcoder.interfaces;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestStudent {
+
+ @Test
+ public void implementationTest() {
+ // Given
+ long id = 5;
+ String name = "Billy";
+
+ // When
+ Student student = new Student(id, name);
+
+ // Then
+ Assert.assertTrue(student instanceof Learner);
+ }
+
+ @Test
+ public void inheritanceTest() {
+ // Given
+ long id = 5;
+ String name = "Billy";
+
+ // When
+ Student student = new Student(id, name);
+
+ // Then
+ Assert.assertTrue(student instanceof Person);
+ }
+
+ @Test
+ public void learnTest() {
+ // Given
+ Student student = new Student(5, "Sam");
+ double expectedStudyTime = 10;
+
+ // When
+ student.learn(expectedStudyTime);
+ double actualStudyTime = student.getTotalStudyTime();
+
+ // Then
+ Assert.assertEquals(expectedStudyTime, actualStudyTime, 0);
+ }
+}
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..f4b94aa7
--- /dev/null
+++ b/src/test/java/io/zipcoder/interfaces/TestStudents.java
@@ -0,0 +1,74 @@
+package io.zipcoder.interfaces;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Iterator;
+
+public class TestStudents {
+
+ @Test
+ public void isAllOfCohortInStudentsTest() {
+ // Given
+ Students students = Students.getInstance();
+ Student sitara = new Student(1, "Sitara");
+ Student nicholas = new Student(2, "Nicholas");
+ Student denee = new Student(3, "Denee");
+ Student charnae = new Student(4, "Charnae");
+ Student jennifer = new Student(5, "Jennifer");
+ Student nathan = new Student(6, "Nathan");
+ Student zachS = new Student(7, "Zach S");
+ Student jeremy = new Student(8, "Jeremy");
+ Student zachK = new Student(9, "Zach K");
+ Student emmanuel = new Student(10, "Emmanuel");
+ Student bobbi = new Student(11, "Bobbi");
+ Student rex = new Student(12, "Rex");
+ Student nishaben = new Student(13, "Nishaben");
+ Student raymond = new Student(14, "Raymond");
+ Student dipinti = new Student(15, "Dipinti");
+ Student john = new Student(16, "John");
+ Student tatiana = new Student(17, "Tatiana");
+ Student laura = new Student(18, "Laura");
+
+ // When
+ boolean studentsIncludesSitara = students.contains(sitara);
+ boolean studentsIncludesNicholas = students.contains(nicholas);
+ boolean studentsIncludesDenee = students.contains(denee);
+ boolean studentsIncludesCharnae = students.contains(charnae);
+ boolean studentsIncludesJennifer = students.contains(jennifer);
+ boolean studentsIncludesNathan = students.contains(nathan);
+ boolean studentsIncludesZachS = students.contains(zachS);
+ boolean studentsIncludesJeremy = students.contains(jeremy);
+ boolean studentsIncludesZachK = students.contains(zachK);
+ boolean studentsIncludesEmmanuel = students.contains(emmanuel);
+ boolean studentsIncludesBobbi = students.contains(bobbi);
+ boolean studentsIncludesRex = students.contains(rex);
+ boolean studentsIncludesNishaben = students.contains(nishaben);
+ boolean studentsIncludesRaymond = students.contains(raymond);
+ boolean studentsIncludesDipinti = students.contains(dipinti);
+ boolean studentsIncludesJohn = students.contains(john);
+ boolean studentsIncludesTatiana = students.contains(tatiana);
+ boolean studentsIncludesLaura = students.contains(laura);
+
+ // Then
+ Assert.assertTrue(studentsIncludesSitara);
+ Assert.assertTrue(studentsIncludesNicholas);
+ Assert.assertTrue(studentsIncludesDenee);
+ Assert.assertTrue(studentsIncludesCharnae);
+ Assert.assertTrue(studentsIncludesJennifer);
+ Assert.assertTrue(studentsIncludesNathan);
+ Assert.assertTrue(studentsIncludesZachS);
+ Assert.assertTrue(studentsIncludesJeremy);
+ Assert.assertTrue(studentsIncludesZachK);
+ Assert.assertTrue(studentsIncludesEmmanuel);
+ Assert.assertTrue(studentsIncludesBobbi);
+ Assert.assertTrue(studentsIncludesRex);
+ Assert.assertTrue(studentsIncludesNishaben);
+ Assert.assertTrue(studentsIncludesRaymond);
+ Assert.assertTrue(studentsIncludesDipinti);
+ Assert.assertTrue(studentsIncludesJohn);
+ Assert.assertTrue(studentsIncludesTatiana);
+ Assert.assertTrue(studentsIncludesLaura);
+ }
+}
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..f8423e4f
--- /dev/null
+++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java
@@ -0,0 +1,76 @@
+package io.zipcoder.interfaces;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.*;
+
+public class TestZipCodeWilmington {
+
+ @Before
+ public void setUp() {
+ Students students = Students.getInstance();
+ for (Student student : students.personList) {
+ student.totalStudyTime = 0;
+ }
+ Educator educator = Educator.LEON;
+ educator.timeWorked = 0;
+ }
+
+ @Test
+ public void hostLectureTest_CheckStudentStudyTime() {
+ // Given
+ Students students = Students.getInstance();
+ ZipCodeWilmington zipCodeWilmington = ZipCodeWilmington.getInstance();
+ Integer expectedNewStudyTime = 3;
+ Integer hoursOfLecture = 54;
+
+ // When
+ zipCodeWilmington.hostLecture(Educator.LEON, hoursOfLecture);
+ Map map = zipCodeWilmington.getStudyMap();
+
+ // Then
+// Iterator iterator = students.iterator();
+// while (iterator.hasNext()) {
+// Student student = (Student)iterator.next();
+// Double actualNewStudyTime = student.getTotalStudyTime();
+// Assert.assertEquals(expectedNewStudyTime, actualNewStudyTime, 0);
+// }
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(1)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(2)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(3)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(4)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(5)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(6)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(7)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(8)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(9)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(10)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(11)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(12)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(13)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(14)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(15)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(16)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(17)), 0);
+ Assert.assertEquals(expectedNewStudyTime, map.get(students.findById(18)), 0);
+
+ }
+
+ @Test
+ public void hostLectureTest_CheckEducatorTeachingTime() {
+ // Given
+ Students students = Students.getInstance();
+ ZipCodeWilmington zipCodeWilmington = ZipCodeWilmington.getInstance();
+ Integer expectedNewTeachingTime = 54;
+ Integer hoursOfLecture = 54;
+
+ // When
+ zipCodeWilmington.hostLecture(Educator.LEON, hoursOfLecture);
+ Double actualNewTeachingTime = Educator.LEON.timeWorked;
+
+ // Then
+ Assert.assertEquals(expectedNewTeachingTime, actualNewTeachingTime, 0);
+ }
+}