diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/amiyahjones/ClassroomFullException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/amiyahjones/ClassroomFullException.java new file mode 100644 index 000000000..f804cff85 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/amiyahjones/ClassroomFullException.java @@ -0,0 +1,7 @@ +package com.codedifferently.lesson16.amiyahjones; + +public class ClassroomFullException extends Exception { + public ClassroomFullException(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/amiyahjones/JobReadinessProgram.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/amiyahjones/JobReadinessProgram.java new file mode 100644 index 000000000..b6a95788d --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/amiyahjones/JobReadinessProgram.java @@ -0,0 +1,109 @@ +package com.codedifferently.lesson16.amiyahjones; + +import java.util.ArrayList; +import java.util.List; + +public class JobReadinessProgram { + private final boolean isSuccessful; + ArrayList students; + private final Level readinessLevel; + private final int lecturePerWeek; + private static final ArrayList teacherAssistants = new ArrayList<>(); + private String assignedTA; + private final String mentor; + private final String socialSupport; + private final int MAX_CAPACITY = 22; + + static { + teacherAssistants.add("Rich"); + teacherAssistants.add("Vicente"); + teacherAssistants.add("Jordan"); + } + + enum Level { + Beginner, + Intermediate, + Advanced + } + + public JobReadinessProgram(Level readinessLevel, boolean isSuccessful, String assignedTA) { + students = new ArrayList<>(); + this.readinessLevel = readinessLevel; + this.isSuccessful = isSuccessful; + lecturePerWeek = 3; + mentor = "Anthony"; + socialSupport = "Estelle"; + if (teacherAssistants.contains(assignedTA)) { + this.assignedTA = assignedTA; + } + } + + public void addStudent(String studentName) throws ClassroomFullException { + int classroomCheck = students.size(); + if (classroomCheck == MAX_CAPACITY) { + throw new ClassroomFullException("Classroom is full"); + } + students.add(studentName); + } + + public int getStudentCount() { + int count = students.size(); + System.out.println("Total students enrolled: " + count); + return count; + } + + public void displayStudents() { + for (String student : students) { + System.out.println(student); + } + } + + public String checkReadiness() { + return (readinessLevel == Level.Beginner) + ? "Needs more training." + : "Ready for job applications!"; + } + + public int getLecturesPerWeek() { + System.out.println("Number of lectures students have: "); + return lecturePerWeek; + } + + public String getMentor() { + return mentor; + } + + public String getSocialSupport() { + return socialSupport; + } + + public List getTeacherAssistants() { + return new ArrayList<>(teacherAssistants); + } + + public boolean assignTA(String taName) { + if (teacherAssistants.contains(taName)) { + this.assignedTA = taName; + return true; + } else { + throw new IllegalArgumentException("Not a TA. Please choose from: " + getTeacherAssistants()); + } + } + + public void displayAssignedTA() { + if (assignedTA != null) { + System.out.println("Assigned Teacher Assistant: " + assignedTA); + } else { + System.out.println("No Teacher Assistant assigned."); + } + } + + public Boolean verifyIsSuccessful() { + if (isSuccessful) { + System.out.println("Congraulations! You made it through your journey!"); + } else { + System.out.println("At least you got to know what software engineering is like!"); + } + return isSuccessful; + } +} diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/amiyahjones/JobReadinessProgramTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/amiyahjones/JobReadinessProgramTest.java new file mode 100644 index 000000000..ff3aca281 --- /dev/null +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/amiyahjones/JobReadinessProgramTest.java @@ -0,0 +1,133 @@ +package com.codedifferently.lesson16.amiyahjones; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import com.codedifferently.lesson16.amiyahjones.JobReadinessProgram.Level; +import org.junit.jupiter.api.Test; + +public class JobReadinessProgramTest { + + @Test + void testAddStudent() throws ClassroomFullException { + // Arrange + JobReadinessProgram program = new JobReadinessProgram(Level.Beginner, false, "rich"); + + // Act + program.addStudent("John"); + + // Assert + assertEquals(program.getStudentCount(), 1); + } + + @Test + void testGetStudentCount() throws ClassroomFullException { + // Arrange + JobReadinessProgram program = new JobReadinessProgram(Level.Advanced, true, "vicente"); + program.addStudent("John"); + + // Act + int actualCount = program.getStudentCount(); + + // Assert + int expectedCount = 1; + assertEquals(expectedCount, actualCount); + } + + @Test + void testClassroomFullException() { + // Arrange + JobReadinessProgram program = new JobReadinessProgram(Level.Beginner, true, "Jordan"); + + // Act + try { + for (int i = 1; i <= 23; i++) { + program.addStudent("Student " + i); + } + } catch (ClassroomFullException e) { + System.out.println(e.getMessage()); + } + + // Assert + int currentCount = program.getStudentCount(); + assert (currentCount == 22); + } + + @Test + void testCheckReadinessBeginner() { + JobReadinessProgram student = new JobReadinessProgram(Level.Beginner, true, null); + String result = student.checkReadiness(); + assertEquals("Needs more training.", result); + } + + @Test + void testCheckReadinessIntermediate() { + JobReadinessProgram student = new JobReadinessProgram(Level.Intermediate, true, null); + String result = student.checkReadiness(); + assertEquals("Ready for job applications!", result); + } + + @Test + void testCheckReadinessAdvanced() { + JobReadinessProgram student = new JobReadinessProgram(Level.Advanced, true, "vicente"); + String result = student.checkReadiness(); + assertEquals("Ready for job applications!", result); + } + + @Test + void testVerifyIfSuccessful() { + JobReadinessProgram graduate = new JobReadinessProgram(Level.Intermediate, true, "rich"); + + var graduation = graduate.verifyIsSuccessful(); + assertEquals(true, graduation); + } + + @Test + void testLecturePerWeek() { + JobReadinessProgram program = new JobReadinessProgram(Level.Advanced, true, "rich"); + var lecturesAttended = program.getLecturesPerWeek(); + assertEquals(3, lecturesAttended); + } + + @Test + void testGetMentor() { + JobReadinessProgram program = new JobReadinessProgram(Level.Beginner, true, "jordan"); + var AssignedMentor = program.getMentor(); + assertEquals("Anthony", AssignedMentor); + } + + @Test + void testGetSocialSupport() { + JobReadinessProgram program = new JobReadinessProgram(Level.Beginner, true, "vicente"); + var SocialSupport = program.getSocialSupport(); + assertEquals("Estelle", SocialSupport); + } + + @Test + void testGetTeacherAssistants() { + JobReadinessProgram program = new JobReadinessProgram(Level.Beginner, true, "vicente"); + var teacherAssitant = program.getTeacherAssistants(); + assertEquals(program.getTeacherAssistants(), teacherAssitant); + } + + @Test + void testAssignTA() { + JobReadinessProgram program = new JobReadinessProgram(Level.Beginner, true, "Jordan"); + boolean result = program.assignTA("Vicente"); + assert (result == true); + + try { + program.assignTA("Invalid TA"); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + } + + @Test + void testDisplayAssignedTA() { + JobReadinessProgram program = new JobReadinessProgram(Level.Advanced, true, "rich"); + program.displayAssignedTA(); + + JobReadinessProgram emptyProgram = new JobReadinessProgram(Level.Beginner, true, "Invalid TA"); + emptyProgram.displayAssignedTA(); + } +}