diff --git a/pom.xml b/pom.xml index a98015f..a7497cf 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,8 @@ 1.0-SNAPSHOT - UTF-8 + 1.8 + 1.8 diff --git a/src/main/java/com/dtcc/projects/Classroom.java b/src/main/java/com/dtcc/projects/Classroom.java new file mode 100644 index 0000000..6bec628 --- /dev/null +++ b/src/main/java/com/dtcc/projects/Classroom.java @@ -0,0 +1,25 @@ +package com.dtcc.projects; + +import java.util.ArrayList; +import java.util.HashMap; + + +public class Classroom { + + private static ArrayList students = JavaAcademy.getStudents(); + private static ArrayList instructors = DelTech.getInstructors(); + + public static HashMap getRoster(){ + //Adds instructors to class + HashMap roster = new HashMap<>(); + for(Instructor instructor : instructors){ + roster.put(instructor.getName(), instructor); + } + + for(Student student : students){ + roster.put(student.getName(), student); + } + + return roster; + } +} diff --git a/src/main/java/com/dtcc/projects/DelTech.java b/src/main/java/com/dtcc/projects/DelTech.java new file mode 100644 index 0000000..0c0a706 --- /dev/null +++ b/src/main/java/com/dtcc/projects/DelTech.java @@ -0,0 +1,25 @@ +package com.dtcc.projects; + +import java.util.ArrayList; +import java.util.List; + +public class DelTech { + + private static ArrayList instructorList = new ArrayList(); + + static { // static initializer + String[] instructorNames = {"Brian", "Kaleb", "Zan"}; + for (String instructorName : instructorNames) { + Instructor instructor = new Instructor(instructorName); + hire(instructor); + } + } + + public static ArrayList getInstructors(){return instructorList;} + public static void hire(Instructor teacher){ + instructorList.add(teacher); + } + public static void fireStaff(){ + instructorList.clear(); + } +} diff --git a/src/main/java/com/dtcc/projects/Instructor.java b/src/main/java/com/dtcc/projects/Instructor.java new file mode 100644 index 0000000..4ef027a --- /dev/null +++ b/src/main/java/com/dtcc/projects/Instructor.java @@ -0,0 +1,25 @@ +package com.dtcc.projects; + +public class Instructor extends Person implements Teacher { + + public Instructor(){} + + public Instructor(String name){ + this.name = name; + } + + @Override + public void teach(Student student, double numberOfHours) { + student.learn(numberOfHours); + } + + @Override + public void lecture(Student[] student, double numberOfHours) { + double numberOfHoursPerStudent = numberOfHours / student.length; + for(int i = 0; i < student.length; i++){ + Student temp_student = student[i]; + temp_student.learn(numberOfHoursPerStudent); + student[i] = temp_student; + } + } +} diff --git a/src/main/java/com/dtcc/projects/JavaAcademy.java b/src/main/java/com/dtcc/projects/JavaAcademy.java new file mode 100644 index 0000000..766fbad --- /dev/null +++ b/src/main/java/com/dtcc/projects/JavaAcademy.java @@ -0,0 +1,23 @@ +package com.dtcc.projects; + +import java.util.ArrayList; + +public class JavaAcademy { + + private static ArrayList studentList = new ArrayList(); + + static { // static initializer + String[] studentNames = { "Jessica", "Emad", "Cedric", "Lolu", "Apoorva", "Vara", "Craig", "Robert", + "Stephen", "Ferdinand", "Charu" }; + for (String studentName : studentNames) { + Student student = new Student(studentName); + studentList.add(student); + } + } + + public static ArrayList getStudents(){return studentList;} + public static void recruitStudent(Student student){studentList.add(student);} + public static void removeStudents(){studentList.clear();} + + +} diff --git a/src/main/java/com/dtcc/projects/Learner.java b/src/main/java/com/dtcc/projects/Learner.java new file mode 100644 index 0000000..55c5c31 --- /dev/null +++ b/src/main/java/com/dtcc/projects/Learner.java @@ -0,0 +1,7 @@ +package com.dtcc.projects; + +public interface Learner { + + public void learn(double numberOfHours); + +} diff --git a/src/main/java/com/dtcc/projects/Person.java b/src/main/java/com/dtcc/projects/Person.java index ff9713e..73fdb23 100644 --- a/src/main/java/com/dtcc/projects/Person.java +++ b/src/main/java/com/dtcc/projects/Person.java @@ -1,4 +1,18 @@ package com.dtcc.projects; public class Person { + + String name; + + public Person(){} + + public Person(String name){ + this.name = name; + } + + public String getName(){return this.name;} + + public void setName(String name){ + this.name = name; + } } diff --git a/src/main/java/com/dtcc/projects/Student.java b/src/main/java/com/dtcc/projects/Student.java new file mode 100644 index 0000000..c2dba00 --- /dev/null +++ b/src/main/java/com/dtcc/projects/Student.java @@ -0,0 +1,19 @@ +package com.dtcc.projects; + +public class Student extends Person implements Learner { + + private double totalStudyTime; + + public Student(){} + + public Student(String name){this.name = name;} + + @Override + public void learn(double numberOfHours) { + //Increment total study time by val + totalStudyTime += numberOfHours; + } + + //returns total study time, future calcs + public double getTotalStudyTime(){return this.totalStudyTime;} +} diff --git a/src/main/java/com/dtcc/projects/Teacher.java b/src/main/java/com/dtcc/projects/Teacher.java new file mode 100644 index 0000000..62b0b56 --- /dev/null +++ b/src/main/java/com/dtcc/projects/Teacher.java @@ -0,0 +1,7 @@ +package com.dtcc.projects; + +public interface Teacher { + + public void teach(Student student, double numberOfHours); + public void lecture(Student[] student, double numberOfHours); +} diff --git a/src/test/java/com/dtcc/projects/TestClassRoom.java b/src/test/java/com/dtcc/projects/TestClassRoom.java new file mode 100644 index 0000000..67ff08d --- /dev/null +++ b/src/test/java/com/dtcc/projects/TestClassRoom.java @@ -0,0 +1,28 @@ +package com.dtcc.projects; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import java.util.HashMap; + + +public class TestClassRoom { + + @Test + public void testRoster(){ + //gets roster + HashMap clazz = Classroom.getRoster(); + + for(Instructor instructor: DelTech.getInstructors()){ + //Ensures instructor exists in class + Assert.assertTrue(clazz.containsKey(instructor.getName())); + //Ensure names match + Assert.assertEquals(instructor, clazz.get(instructor.getName())); + } + for(Student student: JavaAcademy.getStudents()){ + Assert.assertTrue(clazz.containsKey(student.getName())); + Assert.assertEquals(student, clazz.get(student.getName())); + } + + } +} diff --git a/src/test/java/com/dtcc/projects/TestDeltech.java b/src/test/java/com/dtcc/projects/TestDeltech.java new file mode 100644 index 0000000..161b837 --- /dev/null +++ b/src/test/java/com/dtcc/projects/TestDeltech.java @@ -0,0 +1,46 @@ +package com.dtcc.projects; + +import junit.framework.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; + +public class TestDeltech extends DelTech { + + @Before + public void setup(){ + //Fires everyone, blank list for every test + fireStaff(); + } + + @Test + public void testFireStaff(){ + ArrayList temp_list = new ArrayList(); + temp_list = getInstructors(); + Assert.assertEquals(true, temp_list.isEmpty()); + } + + @Test + public void testHireStaff(){ + //All people were fired, hires new overlord Cedric + Instructor cs = new Instructor("Cedric"); + Instructor zn = new Instructor("Zan"); + + //Officially hires him and adds to Instructor roster + hire(cs); + hire(zn); + + //Creates temp test arrayList + ArrayList temp_list = new ArrayList(); + + //Copy + temp_list = getInstructors(); + + String temp_string1 = temp_list.get(0).getName(); + String temp_string2 = temp_list.get(1).getName(); + + Assert.assertEquals("Cedric", temp_string1); + Assert.assertEquals("Zan", temp_string2); + } +} diff --git a/src/test/java/com/dtcc/projects/TestInstructor.java b/src/test/java/com/dtcc/projects/TestInstructor.java new file mode 100644 index 0000000..66f06de --- /dev/null +++ b/src/test/java/com/dtcc/projects/TestInstructor.java @@ -0,0 +1,100 @@ +package com.dtcc.projects; + +import junit.framework.Assert; +import org.junit.Test; + +public class TestInstructor { + + @Test + public void testImplementation(){ + //Create new teach + Instructor zc = new Instructor(); + zc.setName("Zan"); + + //Create New Student + Student cs = new Student(); + cs.setName("Cedric"); + + //Havn't studied yet should be 0 + double bookMark1 = cs.getTotalStudyTime(); + + //Zan teaches student, have to call teacher interface + zc.teach(cs, 2.0); + + //Get students study time + double bookMark2 = cs.getTotalStudyTime(); + + Assert.assertEquals(0.0, bookMark1); + Assert.assertEquals(2.0, bookMark2); + + } + + @Test + public void testInheritance(){ + //Creates an instructor + Instructor kb = new Instructor(); + //Set name only exists in Person + kb.setName("Kaleb"); + String temp_val = kb.getName(); + Assert.assertEquals("Kaleb", temp_val ); + } + + @Test + public void testTeach(){ + //Create new teach + Instructor zc = new Instructor(); + zc.setName("Zan"); + + //Create New Student + Student cs = new Student(); + cs.setName("Cedric"); + + //Havn't studied yet should be 0 + double bookMark1 = cs.getTotalStudyTime(); + + //Zan teaches student, have to call teacher interface + zc.teach(cs, 2); + + //Due to last statment we should hope this is true + double bookMark2 = cs.getTotalStudyTime(); + + Assert.assertEquals(0.0, bookMark1); + Assert.assertEquals(false, (cs.getTotalStudyTime() == 1)); + Assert.assertEquals(2.0, bookMark2); + } + + @Test + public void testLecture(){ + + //Create new teach + Instructor zc = new Instructor(); + zc.setName("Zan"); + + //Create New Student + Student cs = new Student(); + cs.setName("Cedric"); + + //Creates second student + Student ez = new Student(); + ez.setName("Emad"); + + //Created a roster of students + Student[] roster = new Student[2]; + roster[0] = cs; + roster[1] = ez; + + //Teach the whole class 2 hours each + zc.lecture(roster, 4); + + //Cedric Gets a special tutor session, so should have 4 total + zc.teach(cs, 2); + + //Checking Roster + Assert.assertEquals(2.0, roster[1].getTotalStudyTime()); + Assert.assertEquals(4.0, roster[0].getTotalStudyTime()); + + //Checking each student manually + Assert.assertEquals(2.0, ez.getTotalStudyTime()); + Assert.assertEquals(4.0, cs.getTotalStudyTime()); + } +} diff --git a/src/test/java/com/dtcc/projects/TestJavaAcademy.java b/src/test/java/com/dtcc/projects/TestJavaAcademy.java new file mode 100644 index 0000000..928618c --- /dev/null +++ b/src/test/java/com/dtcc/projects/TestJavaAcademy.java @@ -0,0 +1,48 @@ +package com.dtcc.projects; + +import junit.framework.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; + +public class TestJavaAcademy extends JavaAcademy { + + @Before + public void setup(){ + //Everbody failed! kick them out + removeStudents(); + } + + @Test + public void testRemoveStudents(){ + ArrayList temp_list = new ArrayList(); + temp_list = getStudents(); + Assert.assertEquals(true, temp_list.isEmpty()); + } + + @Test + public void testRecruitStudents(){ + //All people failed, Realized Cedric was star pupil, dropped by mistake + //Add him back to system... Kaleb was a sucky prof and needed lessons /s + Student cs = new Student("Cedric"); + Student kb = new Student("Kaleb"); + + //Officially added back to student roster + recruitStudent(cs); + recruitStudent(kb); + + //Creates temp test arrayList + ArrayList temp_list = new ArrayList(); + + //Copy + temp_list = getStudents(); + + //Get name or else mem location + String temp_string1 = temp_list.get(0).getName(); + String temp_string2 = temp_list.get(1).getName(); + + Assert.assertEquals("Cedric", temp_string1); + Assert.assertEquals("Kaleb", temp_string2); + } +} diff --git a/src/test/java/com/dtcc/projects/TestPerson.java b/src/test/java/com/dtcc/projects/TestPerson.java index 040f78f..c952890 100644 --- a/src/test/java/com/dtcc/projects/TestPerson.java +++ b/src/test/java/com/dtcc/projects/TestPerson.java @@ -1,4 +1,21 @@ package com.dtcc.projects; +import org.junit.Assert; +import org.junit.Test; + public class TestPerson { + + @Test + public void testSetName(){ + + //Starts with null _>setName(); + Person person = new Person(); + person.setName("Billy-Bob"); + + //Single arg constructor calls same logic as getName(); + Person person1 = new Person("Swag"); + + Assert.assertEquals("Billy-Bob", person.getName()); + Assert.assertEquals("Swag", person1.getName()); + } } diff --git a/src/test/java/com/dtcc/projects/TestStudent.java b/src/test/java/com/dtcc/projects/TestStudent.java new file mode 100644 index 0000000..5986bac --- /dev/null +++ b/src/test/java/com/dtcc/projects/TestStudent.java @@ -0,0 +1,42 @@ +package com.dtcc.projects; + +import org.junit.*; +import org.junit.Test; + +public class TestStudent { + + + @Test + public void testImplementation(){ + Student Jess = new Student(); + double temp = Jess.getTotalStudyTime(); + Assert.assertEquals(0, temp, 0); + } + + @Test + public void testInheritance(){ + Student Emad = new Student(); + Emad.setName("Emad"); + Assert.assertEquals("Emad", Emad.getName()); + } + + @Test + public void testLearn(){ + + //Creates Student + Student cedric = new Student(); + + //Cedric learns for 2 hours + cedric.learn(2); + + //Checking get study time, ensuring returning total; + double bookMark1 = cedric.getTotalStudyTime(); + + //Adding two more hours to total study, ensuring saving increments + cedric.learn(2); + double bookMark2 = cedric.getTotalStudyTime(); + + Assert.assertEquals(2, bookMark1 , 0); + Assert.assertEquals(4, bookMark2, 0); + } +} diff --git a/target/classes/com/dtcc/projects/Instructor.class b/target/classes/com/dtcc/projects/Instructor.class new file mode 100644 index 0000000..a2656be Binary files /dev/null and b/target/classes/com/dtcc/projects/Instructor.class differ diff --git a/target/classes/com/dtcc/projects/Learner.class b/target/classes/com/dtcc/projects/Learner.class new file mode 100644 index 0000000..52c8c81 Binary files /dev/null and b/target/classes/com/dtcc/projects/Learner.class differ diff --git a/target/classes/com/dtcc/projects/Person.class b/target/classes/com/dtcc/projects/Person.class new file mode 100644 index 0000000..55e67ec Binary files /dev/null and b/target/classes/com/dtcc/projects/Person.class differ diff --git a/target/classes/com/dtcc/projects/Student.class b/target/classes/com/dtcc/projects/Student.class new file mode 100644 index 0000000..63a01a6 Binary files /dev/null and b/target/classes/com/dtcc/projects/Student.class differ diff --git a/target/classes/com/dtcc/projects/Teacher.class b/target/classes/com/dtcc/projects/Teacher.class new file mode 100644 index 0000000..5c1a75a Binary files /dev/null and b/target/classes/com/dtcc/projects/Teacher.class differ diff --git a/target/test-classes/com/dtcc/projects/TestInstructor.class b/target/test-classes/com/dtcc/projects/TestInstructor.class new file mode 100644 index 0000000..d920fc8 Binary files /dev/null and b/target/test-classes/com/dtcc/projects/TestInstructor.class differ diff --git a/target/test-classes/com/dtcc/projects/TestPerson.class b/target/test-classes/com/dtcc/projects/TestPerson.class new file mode 100644 index 0000000..7c8aec1 Binary files /dev/null and b/target/test-classes/com/dtcc/projects/TestPerson.class differ diff --git a/target/test-classes/com/dtcc/projects/TestStudent.class b/target/test-classes/com/dtcc/projects/TestStudent.class new file mode 100644 index 0000000..95cc55e Binary files /dev/null and b/target/test-classes/com/dtcc/projects/TestStudent.class differ