From 498bcbd895ba1428c92d9be6f8ba866a1c4fe6e3 Mon Sep 17 00:00:00 2001 From: Alonso Ninalaya Date: Mon, 20 Jul 2020 15:47:35 -0400 Subject: [PATCH 1/7] changes added --- .../java/com/github/curriculeon/Person.java | 18 +++++++++++ .../com/github/curriculeon/TestPerson.java | 31 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/main/java/com/github/curriculeon/Person.java b/src/main/java/com/github/curriculeon/Person.java index 3c8350b..e5d2f65 100644 --- a/src/main/java/com/github/curriculeon/Person.java +++ b/src/main/java/com/github/curriculeon/Person.java @@ -1,5 +1,23 @@ package com.github.curriculeon; 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/com/github/curriculeon/TestPerson.java b/src/test/java/com/github/curriculeon/TestPerson.java index 6c523fe..434bd56 100644 --- a/src/test/java/com/github/curriculeon/TestPerson.java +++ b/src/test/java/com/github/curriculeon/TestPerson.java @@ -1,5 +1,36 @@ package com.github.curriculeon; +import org.junit.Assert; +import org.junit.Test; + public class TestPerson { + public void testConstructor() { + // given + Long expectedId = 0L; + String expectedName = "Some name"; + + // when + Person person = new Person(expectedId, expectedName); + String actualName = person.getName(); + Long actualId = person.getId(); + + // then + Assert.assertEquals(expectedId,actualId); + Assert.assertEquals(expectedName,actualName); + } + + @Test + public void testSetName() { + // given + Person person = new Person(-1,null); + String expectedName = "Some name"; + Assert.assertNotEquals(expectedName, person.getName()); + + // when + person.setName(expectedName); + String actualName = person.getName(); + // then + Assert.assertEquals(expectedName,actualName); + } } From a8767deb60bd723cad1612b746ed2f0c96dd68bb Mon Sep 17 00:00:00 2001 From: Alonso Ninalaya Date: Mon, 20 Jul 2020 15:50:24 -0400 Subject: [PATCH 2/7] part 2 completed --- src/main/java/com/github/curriculeon/Learner.java | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/main/java/com/github/curriculeon/Learner.java diff --git a/src/main/java/com/github/curriculeon/Learner.java b/src/main/java/com/github/curriculeon/Learner.java new file mode 100644 index 0000000..c69a07b --- /dev/null +++ b/src/main/java/com/github/curriculeon/Learner.java @@ -0,0 +1,6 @@ +package com.github.curriculeon; + +public interface Learner { + void learn(double numberOfHours); + Double getTotalStudyTime(); +} From 22c8c9e66187e23fd1e7a1e5376bbc2732441a11 Mon Sep 17 00:00:00 2001 From: Alonso Ninalaya Date: Tue, 21 Jul 2020 11:18:26 -0400 Subject: [PATCH 3/7] Part 3 completed --- .../java/com/github/curriculeon/Learner.java | 2 +- .../java/com/github/curriculeon/Student.java | 19 ++++++++ .../com/github/curriculeon/TestStudent.java | 48 +++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/github/curriculeon/Student.java create mode 100644 src/test/java/com/github/curriculeon/TestStudent.java diff --git a/src/main/java/com/github/curriculeon/Learner.java b/src/main/java/com/github/curriculeon/Learner.java index c69a07b..472599a 100644 --- a/src/main/java/com/github/curriculeon/Learner.java +++ b/src/main/java/com/github/curriculeon/Learner.java @@ -2,5 +2,5 @@ public interface Learner { void learn(double numberOfHours); - Double getTotalStudyTime(); + double getTotalStudyTime(); } diff --git a/src/main/java/com/github/curriculeon/Student.java b/src/main/java/com/github/curriculeon/Student.java new file mode 100644 index 0000000..3d887b4 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Student.java @@ -0,0 +1,19 @@ +package com.github.curriculeon; + +public class Student extends Person implements Learner { + private double totalStudyTime; + + public Student() { + super(0,"some Name"); + } + + @Override + public void learn(double numberOfHours) { + this.totalStudyTime += numberOfHours; + } + + @Override + public double getTotalStudyTime() { + return this.totalStudyTime; + } +} \ No newline at end of file diff --git a/src/test/java/com/github/curriculeon/TestStudent.java b/src/test/java/com/github/curriculeon/TestStudent.java new file mode 100644 index 0000000..a1ef713 --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestStudent.java @@ -0,0 +1,48 @@ +package com.github.curriculeon; + +import org.junit.Test; +import org.junit.Assert; + +public class TestStudent { + + @Test + public void testImplementation() { + // given + Student student = new Student(); + + // when + Boolean assertion = student instanceof Learner; + + // then + Assert.assertTrue(assertion); + } + + @Test + public void testInheritance(){ + // given + Student student = new Student(); + + // when + Boolean assertion = student instanceof Person; + + // then + Assert.assertTrue(assertion); + } + + @Test + public void testLearn() { + + // given + final double DELTA = 1e-15; + double expectedTotalStudyTime = 12D; + double expectedNumberOfHours = 12D; + + // when + Student student = new Student(); + student.learn(expectedNumberOfHours); + double actualTotalStudyTime = student.getTotalStudyTime(); + + // then + Assert.assertEquals(expectedTotalStudyTime,actualTotalStudyTime,DELTA); + } +} From 5a8c31df4c69d6555903f7880a6b45573dd3740e Mon Sep 17 00:00:00 2001 From: Alonso Ninalaya Date: Wed, 22 Jul 2020 09:22:44 -0400 Subject: [PATCH 4/7] Part 4 completed --- src/main/java/com/github/curriculeon/Teacher.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/com/github/curriculeon/Teacher.java diff --git a/src/main/java/com/github/curriculeon/Teacher.java b/src/main/java/com/github/curriculeon/Teacher.java new file mode 100644 index 0000000..6d781dd --- /dev/null +++ b/src/main/java/com/github/curriculeon/Teacher.java @@ -0,0 +1,8 @@ +package com.github.curriculeon; + +import com.github.curriculeon.Learner; + +public interface Teacher { + void teach(Learner learner, double numberOfHours ); + void lecture(Learner[] learners, double numberOfHours); +} From c726aba52262cfee2845f1d12363a927eeeb27f7 Mon Sep 17 00:00:00 2001 From: Alonso Ninalaya Date: Fri, 24 Jul 2020 00:24:09 -0400 Subject: [PATCH 5/7] changed added --- .../com/github/curriculeon/Instructor.java | 22 ++++++ .../java/com/github/curriculeon/Student.java | 2 +- .../github/curriculeon/TestInstructor.java | 68 +++++++++++++++++++ .../com/github/curriculeon/TestStudent.java | 14 ++-- 4 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/github/curriculeon/Instructor.java create mode 100644 src/test/java/com/github/curriculeon/TestInstructor.java diff --git a/src/main/java/com/github/curriculeon/Instructor.java b/src/main/java/com/github/curriculeon/Instructor.java new file mode 100644 index 0000000..61e3d3e --- /dev/null +++ b/src/main/java/com/github/curriculeon/Instructor.java @@ -0,0 +1,22 @@ +package com.github.curriculeon; + +public class Instructor extends Person implements Teacher { + + public Instructor(long id, String name) { + super(id,name); + } + + @Override + public void teach(Learner learner, double numberOfHours) { + learner.learn(numberOfHours); + } + + @Override + public void lecture(Learner[] learners, double numberOfHours) { + double numberOfHoursPerLearner = numberOfHours / learners.length; + for (int i =0; i < learners.length ; i++) { + Learner learner = learners[i]; + learner.learn(numberOfHoursPerLearner); + } + } +} diff --git a/src/main/java/com/github/curriculeon/Student.java b/src/main/java/com/github/curriculeon/Student.java index 3d887b4..98dd9d6 100644 --- a/src/main/java/com/github/curriculeon/Student.java +++ b/src/main/java/com/github/curriculeon/Student.java @@ -3,7 +3,7 @@ public class Student extends Person implements Learner { private double totalStudyTime; - public Student() { + public Student(long id, String name) { super(0,"some Name"); } diff --git a/src/test/java/com/github/curriculeon/TestInstructor.java b/src/test/java/com/github/curriculeon/TestInstructor.java new file mode 100644 index 0000000..263d6f2 --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestInstructor.java @@ -0,0 +1,68 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructor { + + @Test + public void testImplementation() { + + //given + Instructor instructor = new Instructor(-1,null); + + //when + Boolean outcome = instructor instanceof Teacher; + + //then + Assert.assertTrue(outcome); + } + + @Test + public void testInheritance() { + Instructor instructor = new Instructor(-1, null); + Boolean outcome = instructor instanceof Person; + Assert.assertTrue(outcome); + } + + @Test + public void testTeach() { + // given + Instructor instructor = new Instructor(-1, null); + Learner learner = new Student(-1, null); + Double numberOfHoursToTeach = 134.0; + Double preStudyTime = learner.getTotalStudyTime(); + Double expected = preStudyTime + numberOfHoursToTeach; + + // when + instructor.teach(learner,numberOfHoursToTeach); + Double actual = learner.getTotalStudyTime(); + + // then + Assert.assertEquals(expected, actual); + } + + @Test + public void testLecture() { + //given + Teacher teacher = new Instructor(-1, null); + Learner[] learners = new Learner[] { + new Student(0L, "Leon"), + new Student(1L, "Christopher"), + new Student(2L, "Hunter") + }; + Double numberOfHours = 128.0; + Double expected = numberOfHours / learners.length; + + // when + teacher.lecture(learners,numberOfHours); + + //then + for (int i =0 ; i < learners.length ; i++) { + Learner learner = learners[i]; + Double actual = learner.getTotalStudyTime(); + Assert.assertEquals(expected,actual); + } + + } +} diff --git a/src/test/java/com/github/curriculeon/TestStudent.java b/src/test/java/com/github/curriculeon/TestStudent.java index a1ef713..3502c05 100644 --- a/src/test/java/com/github/curriculeon/TestStudent.java +++ b/src/test/java/com/github/curriculeon/TestStudent.java @@ -8,25 +8,25 @@ public class TestStudent { @Test public void testImplementation() { // given - Student student = new Student(); + Student student = new Student(-1, null); // when - Boolean assertion = student instanceof Learner; + Boolean outcome = student instanceof Learner; // then - Assert.assertTrue(assertion); + Assert.assertTrue(outcome); } @Test public void testInheritance(){ // given - Student student = new Student(); + Student student = new Student(-1, null); // when - Boolean assertion = student instanceof Person; + Boolean outcome = student instanceof Person; // then - Assert.assertTrue(assertion); + Assert.assertTrue(outcome); } @Test @@ -38,7 +38,7 @@ public void testLearn() { double expectedNumberOfHours = 12D; // when - Student student = new Student(); + Student student = new Student(-1, null); student.learn(expectedNumberOfHours); double actualTotalStudyTime = student.getTotalStudyTime(); From 1fe9399f9cf446f654780fcdbfe1e14a7828d068 Mon Sep 17 00:00:00 2001 From: Alonso Ninalaya Date: Fri, 24 Jul 2020 00:43:48 -0400 Subject: [PATCH 6/7] changes made --- .../java/com/github/curriculeon/People.java | 47 ++++++++++++ .../java/com/github/curriculeon/Person.java | 5 ++ .../com/github/curriculeon/TestPeople.java | 73 +++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 src/main/java/com/github/curriculeon/People.java create mode 100644 src/test/java/com/github/curriculeon/TestPeople.java diff --git a/src/main/java/com/github/curriculeon/People.java b/src/main/java/com/github/curriculeon/People.java new file mode 100644 index 0000000..f1131b4 --- /dev/null +++ b/src/main/java/com/github/curriculeon/People.java @@ -0,0 +1,47 @@ +package com.github.curriculeon; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class People implements Iterable{ + List personList = new ArrayList<>(); + + public void add(Person personToBeAdded) { + personList.add(personToBeAdded); + } + + public Person findById(long id) { + for (Person person : personList) { + if(person.getId() == id) { + return person; + } + } + return null; + } + + public Boolean contains(Person personToBeFound) { + return personList.contains(personToBeFound); + } + + public void remove(Person person) { + personList.remove(person); + } + + public void removeAll() { + personList.clear(); + } + + public int count() { + return personList.size(); + } + + public Person[] toArray() { + return personList.toArray(new Person[personList.size()]); + } + + @Override + public Iterator iterator() { + return personList.iterator(); + } +} diff --git a/src/main/java/com/github/curriculeon/Person.java b/src/main/java/com/github/curriculeon/Person.java index e5d2f65..be35566 100644 --- a/src/main/java/com/github/curriculeon/Person.java +++ b/src/main/java/com/github/curriculeon/Person.java @@ -4,6 +4,11 @@ public class Person { private final long id; private String name; + public Person() { + this.id = -1; + this.name = null; + } + public Person(long id, String name) { this.id = id; this.name = name; diff --git a/src/test/java/com/github/curriculeon/TestPeople.java b/src/test/java/com/github/curriculeon/TestPeople.java new file mode 100644 index 0000000..f13769c --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestPeople.java @@ -0,0 +1,73 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +public class TestPeople { + @Test + public void testAdd() { + //given + People people = new People(); + Person person1 = new Person(); + Person person2 = new Person(); + Person person3 = new Person(); + + //when + people.add(person1); + people.add(person2); + people.add(person3); + + //then + Assert.assertTrue(people.contains(person1)); + Assert.assertTrue(people.contains(person2)); + Assert.assertTrue(people.contains(person2)); + + } + + @Test + public void testRemove() { + + // given + People people = new People(); + Person person1 = new Person(); + Person person2 = new Person(); + Person person3 = new Person(); + people.add(person1); + people.add(person2); + people.add(person3); + + // when + people.remove(person1); + people.remove(person2); + people.remove(person3); + + // then + Assert.assertFalse(people.contains(person1)); + Assert.assertFalse(people.contains(person2)); + Assert.assertFalse(people.contains(person3)); + } + + @Test + public void testFindById() { + + //given + People people = new People(); + Person person1 = new Person(0L, null); + Person person2 = new Person(1L, null); + Person person3 = new Person(2l, null); + + people.add(person1); + people.add(person2); + people.add(person3); + + Assert.assertTrue(people.contains(person1)); + Assert.assertTrue(people.contains(person2)); + Assert.assertTrue(people.contains(person3)); + + //when + Person actual = people.findById(person1.getId()); + + //then + Assert.assertEquals(person1, actual); + } +} From 77da6ef0ecb3c573f777cf8fc3a4408fab293b92 Mon Sep 17 00:00:00 2001 From: Alonso Ninalaya Date: Wed, 29 Jul 2020 11:29:42 -0400 Subject: [PATCH 7/7] Changes to make part 10 work --- .../com/github/curriculeon/Classroom.java | 29 ++++++++++++++ .../com/github/curriculeon/Instructors.java | 25 ++++++++++++ .../java/com/github/curriculeon/People.java | 39 ++++++++++++------- .../java/com/github/curriculeon/Students.java | 27 +++++++++++++ .../com/github/curriculeon/TestClassroom.java | 22 +++++++++++ .../github/curriculeon/TestInstructors.java | 18 +++++++++ .../com/github/curriculeon/TestStudents.java | 25 ++++++++++++ 7 files changed, 172 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/github/curriculeon/Classroom.java create mode 100644 src/main/java/com/github/curriculeon/Instructors.java create mode 100644 src/main/java/com/github/curriculeon/Students.java create mode 100644 src/test/java/com/github/curriculeon/TestClassroom.java create mode 100644 src/test/java/com/github/curriculeon/TestInstructors.java create mode 100644 src/test/java/com/github/curriculeon/TestStudents.java diff --git a/src/main/java/com/github/curriculeon/Classroom.java b/src/main/java/com/github/curriculeon/Classroom.java new file mode 100644 index 0000000..1385455 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Classroom.java @@ -0,0 +1,29 @@ +package com.github.curriculeon; + +import java.util.HashMap; +import java.util.Map; + +public enum Classroom { + INSTANCE; + private Students students = Students.getInstance(); + private Instructors instructors = Instructors.getInstance(); + + public void hostLecture(Teacher teacher, Double numberOfHours) { + teacher.lecture((Learner[])students.toArray(), numberOfHours); + } + + public void hostLecture(long id, double numberOfHours) { + Teacher instructor = instructors.findById(id); + instructor.lecture(students.toArray(), numberOfHours); + } + + public Map getStudyMap() { + Map result = new HashMap<>(); + for (Person studentAsPerson : students.toArray()) { + Student student = (Student)studentAsPerson; + Double studyTime = student.getTotalStudyTime(); + result.put(student, studyTime); + } + return result; + } +} diff --git a/src/main/java/com/github/curriculeon/Instructors.java b/src/main/java/com/github/curriculeon/Instructors.java new file mode 100644 index 0000000..401e3aa --- /dev/null +++ b/src/main/java/com/github/curriculeon/Instructors.java @@ -0,0 +1,25 @@ +package com.github.curriculeon; + +import java.util.List; + +public class Instructors extends People { + + private static final Instructors instance = new Instructors(); + + private Instructors() { + this.add(new Instructor(0L, "Leon Hunter")); + this.add(new Instructor(1L, "someone")); + } + + @Override + public Person[] toArray() { + int sizeOfArray = count(); + Instructor[] destinationArray = new Instructor[sizeOfArray]; + List sourceList = personList; + return sourceList.toArray(destinationArray); + } + + public static Instructors getInstance() { + return instance; + } +} diff --git a/src/main/java/com/github/curriculeon/People.java b/src/main/java/com/github/curriculeon/People.java index f1131b4..94fe50d 100644 --- a/src/main/java/com/github/curriculeon/People.java +++ b/src/main/java/com/github/curriculeon/People.java @@ -1,30 +1,43 @@ package com.github.curriculeon; +import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -public class People implements Iterable{ - List personList = new ArrayList<>(); +abstract public class People implements Iterable{ - public void add(Person personToBeAdded) { - personList.add(personToBeAdded); + List personList; + + public People() { + this(new ArrayList<>()); + } + + public People(List personList) { + this.personList = personList; + } + + public void add(SomeLearnerType personToBeAdded) { + this.personList.add(personToBeAdded); } - public Person findById(long id) { - for (Person person : personList) { - if(person.getId() == id) { - return person; + public SomeLearnerType findById(long id) { + for (int i = 0; i < personList.size(); i++) { + SomeLearnerType person = personList.get(i); + if (person.getId() == id) { //if the id is correct, + return person; // return person + } else { // if its the wrong id, + continue; // keep lookin'! } - } - return null; + } // finished loop; we've finished lookin' + return null; // we were not able to find the person with the id } - public Boolean contains(Person personToBeFound) { + public Boolean contains(SomeLearnerType personToBeFound) { return personList.contains(personToBeFound); } - public void remove(Person person) { + public void remove(SomeLearnerType person) { personList.remove(person); } @@ -41,7 +54,7 @@ public Person[] toArray() { } @Override - public Iterator iterator() { + public Iterator iterator() { return personList.iterator(); } } diff --git a/src/main/java/com/github/curriculeon/Students.java b/src/main/java/com/github/curriculeon/Students.java new file mode 100644 index 0000000..ad1de2a --- /dev/null +++ b/src/main/java/com/github/curriculeon/Students.java @@ -0,0 +1,27 @@ +package com.github.curriculeon; + +import java.util.List; + +public class Students extends People { + + private static final Students INSTANCE = new Students(); + + private Students() { + super(); // optional invocation + this.add(new Student(0L,"OneMore")); + this.add(new Student(1L,"someone")); + this.add(new Student(2L,"AnotherOne")); + } + + @Override + public Student[] toArray() { + int sizeOfArray = count(); + Student[] destinationArray = new Student[sizeOfArray]; + List sourceList = personList; + return sourceList.toArray(destinationArray); + } + + public static Students getInstance() { + return INSTANCE; + } +} diff --git a/src/test/java/com/github/curriculeon/TestClassroom.java b/src/test/java/com/github/curriculeon/TestClassroom.java new file mode 100644 index 0000000..46bb46e --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestClassroom.java @@ -0,0 +1,22 @@ +package com.github.curriculeon; + +import org.junit.Test; + +import java.util.Map; + +public class TestClassroom { + + @Test + public void testHoursLecture() { + Classroom classroom = Classroom.INSTANCE; + Teacher lecturer = (Teacher) Instructors.getInstance().findById(1L); + Integer numberOfStudents = Students.getInstance().count(); + Map preStudyTimeMap = classroom.getStudyMap(); + Double numberOfHoursToLecture = 300.0; + Double numberOfHoursStudidedPerStudent = numberOfHoursToLecture / numberOfStudents; + + // when + classroom.hostLecture(lecturer, numberOfHoursToLecture); + Map newStudyMap = classroom.getStudyMap(); + } +} diff --git a/src/test/java/com/github/curriculeon/TestInstructors.java b/src/test/java/com/github/curriculeon/TestInstructors.java new file mode 100644 index 0000000..62689b2 --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestInstructors.java @@ -0,0 +1,18 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +public class TestInstructors { + @Test + public void test() { + Instructors instructors = Instructors.getInstance(); + List expectedNames = Arrays.asList("Leon Hunter", "someone"); + for(Person instructor : instructors.toArray()) { + Assert.assertTrue(expectedNames.contains(instructor)); + } + } +} diff --git a/src/test/java/com/github/curriculeon/TestStudents.java b/src/test/java/com/github/curriculeon/TestStudents.java new file mode 100644 index 0000000..38659c1 --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestStudents.java @@ -0,0 +1,25 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Arrays; +import java.util.List; + +public class TestStudents { + + @Test + public void test() { + // given + Students students = Students.getInstance(); + String[] studentNameArray = {"OneMore", "someone", "AnotherOne"}; + List studentNameList = Arrays.asList(studentNameArray); + Person[] studentArray = students.toArray(); + + for (int i = 0; i < studentArray.length ; i++) { + Person person1 = studentArray[i]; + String personName = person1.getName(); + boolean hasPeopleWithName = studentNameList.contains(personName); + Assert.assertTrue(hasPeopleWithName); + } + } +}