diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..73f69e09 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..fdc60f4f --- /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..25daa30c --- /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/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 00000000..e96534fb --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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..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/Educator.java b/src/main/java/io/zipcoder/interfaces/Educator.java new file mode 100644 index 00000000..17af8fb4 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Educator.java @@ -0,0 +1,26 @@ +package io.zipcoder.interfaces; + +public enum Educator implements Teacher { + Leon(1l, "Hunter"), Dolio(2l, "Durant"), Kris(3l, "Younger"); + String name; + Long id; + Double timeWorked; + + Educator(Long id, String name) { + this.id = id; + this.name = name; + } + + public void teach(Learner learner, double numberOfHours) { + learner.learn(numberOfHours); + this.timeWorked += numberOfHours; + } + + public void lecture(Learner[] learners, double numberOfHours) { + double numberOfHoursPerLearner = numberOfHours / learners.length; + for (Learner element : learners) { + element.learn(numberOfHoursPerLearner); + } + this.timeWorked += numberOfHours; + } +} \ No newline at end of file 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..f92d2776 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Instructor.java @@ -0,0 +1,21 @@ +package io.zipcoder.interfaces; + +import java.util.ArrayList; +import java.util.Arrays; + +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 element:learners){ + element.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..312ec29c --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Instructors.java @@ -0,0 +1,18 @@ +package io.zipcoder.interfaces; + +public class Instructors extends People{ + + + + static final Instructors INSTANCE= new Instructors(); + + public Instructors(){ + this.add(new Instructor(1l,"Leon Hunter")); + this.add(new Instructor(2l,"Dolio Durant")); + this.add(new Instructor(3l,"Kris Younger")); + } + + public static Instructors getINSTANCE() { + return INSTANCE; + } +} 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..2e1edf0d --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Learner.java @@ -0,0 +1,6 @@ +package io.zipcoder.interfaces; + +public interface Learner { + public void learn(double numberOfHours); + public 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..a47d6e13 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/People.java @@ -0,0 +1,67 @@ +package io.zipcoder.interfaces; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public abstract class People implements Iterable { + List personList; + // Person person = new Person(null, null); + + public People() { + this.personList = new ArrayList(); + } + + + public void add(E person) { + personList.add(person); + } + + public E findById(long id) { + for (E value : personList) { + if (value.getId() == id){ + return value; + } + } + return null; + } + + public void remove(String name) { + List toRemove = new ArrayList(); + for (E element : personList) { + if (element.getName() == name) { + toRemove.add(element); + + } + } + personList.removeAll(toRemove); + } + + public void remove(Long id){ + //List personList= new ArrayList();; + List toRemove = new ArrayList(); + for (E element : personList) { + if (element.getId() == id) { + toRemove.add(element); + } + } + personList.removeAll(toRemove); + } + + public void removeAll(){ + personList.removeAll(personList); + } + + public Integer count(){ + return personList.size(); + } + + public E[] toArray(){ + return null; + } + + + public Iterator iterator() { + return personList.iterator(); + } +} \ 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..1cc02b0c 100644 --- a/src/main/java/io/zipcoder/interfaces/Person.java +++ b/src/main/java/io/zipcoder/interfaces/Person.java @@ -1,5 +1,23 @@ package io.zipcoder.interfaces; public class Person { + final Long id; + String name; + public Person(Long id, String name) { + this.name = name; + this.id = id; + } + + 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..673dbe75 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Student.java @@ -0,0 +1,22 @@ +package io.zipcoder.interfaces; + +import java.security.PublicKey; + +public class Student extends Person implements Learner { + + Double totalStudyTime; + + public Student(Long id, String name,Double totalStudyTime) { + super(id, name); + this.totalStudyTime=totalStudyTime; + } + + + public void learn(double numberOfHours) { + this.totalStudyTime+=numberOfHours; + } + + public Double getTotalStudyTime() { + return this.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..1bdaca22 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Students.java @@ -0,0 +1,24 @@ +package io.zipcoder.interfaces; + +public final class Students extends People{ + + + static final Students INSTANCE= new Students(); + + + private Students() { + this.add(new Student(1l,"char",9.0)); + this.add(new Student(2l,"sitara",7.0)); + this.add(new Student(3l,"bobbi",8.0)); + this.add(new Student(4l,"john",6.0)); + } + + public static Students getINSTANCE() { + return INSTANCE; + } + + public Student[] toArray(){ + Student[] array=new Student[INSTANCE.count()]; + return array; + } +} 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..829d4220 --- /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/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java new file mode 100644 index 00000000..3e16f18d --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java @@ -0,0 +1,34 @@ +package io.zipcoder.interfaces; + +import java.util.HashMap; +import java.util.Map; + +public class ZipCodeWilmington { + + + static final ZipCodeWilmington INSTANCE = new ZipCodeWilmington(); + static final Students students = Students.getINSTANCE(); + static final Instructors instructors = Instructors.getINSTANCE(); + + + + public void hostLecture(Teacher teacher, double numberOfHours) { + teacher.lecture(students.toArray(), numberOfHours); + } + + public void hostLecture(long id, double numberOfHours) { + instructors.findById(id).lecture(students.toArray(), numberOfHours); + } + + public Map getStudyMap() { + Map studyMap = new HashMap(); + for (Student element : students) { + studyMap.put(element, element.getTotalStudyTime()); + } + return studyMap; + } + + public static ZipCodeWilmington getINSTANCE() { + return INSTANCE; + } +} 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..5443e4f9 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestEducator.java @@ -0,0 +1,21 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestEducator { + @Test + public void testImplementation() { + Educator educator = Educator.Leon; + Assert.assertTrue(educator instanceof Teacher); + } +// +// @Test +// public void teachTest(){ +// Educator educator= Educator.Leon; +// Student student=new Student(2l,"sitara",6.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..7d0a1a6e --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructor.java @@ -0,0 +1,46 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructor { + @Test + public void testImplementation(){ + Instructor instructor=new Instructor(null,null); + Assert.assertTrue(instructor instanceof Teacher); + } + + @Test + public void testInheritance(){ + Instructor instructor=new Instructor(null,null); + Assert.assertTrue(instructor instanceof Person); + } + + @Test + public void testTeach(){ + //given + Instructor instructor=new Instructor(null,null); + Student student= new Student(null,null,2.0); + Double expectedTotalTime=7.0; + //when + instructor.teach(student,5.0); + //then + Assert.assertEquals(expectedTotalTime,student.getTotalStudyTime()); + } + + @Test + public void testLecture(){ + //given + Instructor instructor=new Instructor(null,null); + Student student=new Student(null,null,5.0); + Student student1=new Student(null,null,3.0); + Double expected=6.0; + Double expected1=4.0; + Student[] studentArray={student,student1}; + //when + instructor.lecture(studentArray,2.0); + //then + Assert.assertEquals(expected,student.getTotalStudyTime()); + Assert.assertEquals(expected1,student1.getTotalStudyTime()); + } +} 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..6a1713c0 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructors.java @@ -0,0 +1,15 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructors { + @Test + public void TestInstance() { + //given + Instructors instance= Instructors.getINSTANCE(); + Integer actual= instance.personList.size(); + Integer expected=3; + Assert.assertEquals(expected,actual); + } +} 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..289c9e25 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java @@ -0,0 +1,54 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class TestPeople { + People people = Students.getINSTANCE();; + + @Test + public void testAdd(){ + //given + Person person = new Person(6l,"dumdum"); + Person person1=new Person(5l,"gumgum"); + Integer expected=6; + //when + people.add(person); + people.add(person1); + //then + Assert.assertEquals(expected,people.count()); + } + + @Test + public void testRemove(){ + //given + Integer expected=5; + //when + people.remove(4l); + //then + Assert.assertEquals(expected,people.count()); + } + + @Test + public void testRemove2(){ + //given + Integer expected=6; + //when + people.remove("baabaa"); + //then + Assert.assertEquals(expected,people.count()); + } + +@Test + public void testFindById(){ + Person person = new Person(7l,"baabaa"); + Person expected= person; + people.add(person); +// people.add(person1); + //when + Person actual= people.findById(7l); + //then + Assert.assertEquals(expected,actual); +} +} diff --git a/src/test/java/io/zipcoder/interfaces/TestPerson.java b/src/test/java/io/zipcoder/interfaces/TestPerson.java index d64cd2f0..ecde892c 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPerson.java +++ b/src/test/java/io/zipcoder/interfaces/TestPerson.java @@ -1,5 +1,46 @@ package io.zipcoder.interfaces; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + public class TestPerson { + @Test + public void testConstructor() { + //given + String expectedName = "rameez"; + Long id = 4l; + Person person = new Person(4l, "rameez"); + //when + String actual = person.getName(); + //then + Assert.assertEquals(expectedName, actual); + } + + @Test + public void testConstructorForId() { + //given + String expectedName = "rameez"; + Long expectedId = 4l; + Person person = new Person(4l, "rameez"); + //when + Long actual = person.getId(); + //then + Assert.assertEquals(expectedId, actual); + } + + @Test + public void testSetName() { + //given + + Long id = 4l; + Person person = new Person(4l, "rameez123"); + String expectedName = "rameez"; + //when + person.setName(expectedName); + String actual = person.getName(); + //then + Assert.assertEquals(expectedName, actual); + } } 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..a510ee8c --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudent.java @@ -0,0 +1,32 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestStudent { + @Test + public void testImplementation(){ + Student student = new Student(null,null,null); + Assert.assertTrue(student instanceof Learner); + } + + @Test + public void testInheritance(){ + Student student = new Student(null,null,null); + Assert.assertTrue(student instanceof Person ); + } + + @Test + public void testLearn(){ + //given + Double expectedTotalStudyTime=5.0; + Student student=new Student(null,null,0.0); + //when + student.learn(5.0); + Double actual=student.getTotalStudyTime(); + //then + Assert.assertEquals(expectedTotalStudyTime,actual); + + } + +} 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..6eb387a2 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudents.java @@ -0,0 +1,15 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; +import org.omg.CORBA.PUBLIC_MEMBER; + +public class TestStudents { + @Test + public void testInstance(){ + Students instance = Students.getINSTANCE(); + Integer actual=instance.personList.size(); + Integer expected = 5; + 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..0663958a --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java @@ -0,0 +1,30 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Map; + +//public class TestZipCodeWilmington { +// @Test +// public void TestHostByLecture(){ +// //given +// ZipCodeWilmington instance= ZipCodeWilmington.getINSTANCE(); +// Teacher teacher=new Teacher() { +// public void teach(Learner learner, double numberOfHours) { +// +// } +// +// public void lecture(Learner[] learners, double numberOfHours) { +// +// } +// }; +// Students studentInstance= Students.getINSTANCE(); +// Instructors instructorInstance= Instructors.getINSTANCE(); +// Double expectedNumberOfHours=9.0; +// instance.hostLecture(teacher, 3); +// Double actual=instance.getStudyMap().get(studentInstance.findById(1l)); +// Assert.assertEquals(expectedNumberOfHours,actual); +// +// } +//}