From 495f7526ed3afd4204b228e40617a08a537a88de Mon Sep 17 00:00:00 2001 From: SandyPham823 Date: Wed, 30 Oct 2019 16:26:52 -0400 Subject: [PATCH 1/6] just making a checkpoint --- src/main/java/io/zipcoder/Student.java | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/main/java/io/zipcoder/Student.java b/src/main/java/io/zipcoder/Student.java index b543e36..8a174c6 100644 --- a/src/main/java/io/zipcoder/Student.java +++ b/src/main/java/io/zipcoder/Student.java @@ -1,4 +1,38 @@ package io.zipcoder; +import java.util.ArrayList; +import java.util.Arrays; + public class Student { + String firstName; + String lastName; + ArrayList examScores; + + public Student(String firstName, String lastName, Double[] examScores){ + this.firstName = firstName; + this.lastName = lastName; + this.examScores = new ArrayList(Arrays.asList(examScores)); + } + public String getFirstName(){ + return firstName; +} + public void setFirstName(String newName){ + firstName = newName; +} + public String getLastName(){ + return lastName; +} + public void setLastName(String newLastName){ + lastName = newLastName; +} + public Integer getNumberOfExamsTaken(){ + return examScores.size(); + } + public String getExamScores(){ + return "Exam Scores:\n" + + "\n\tExam 1 -> " + examScores.get(0) + + "\n\tExam 2 -> " + examScores.get(1) + + "\n\tExam 3 -> " + examScores.get(2) + + "\n\tExam 4 -> " + examScores.get(3); + } } From d5021b46b46afc214ebc495c1cf711b51dedb31a Mon Sep 17 00:00:00 2001 From: SandyPham823 Date: Sun, 3 Nov 2019 15:12:27 -0500 Subject: [PATCH 2/6] just makin a checkpoint! Tests have not been made yet at this point YIKE --- src/main/java/io/zipcoder/Classroom.java | 29 +++++++++++++ src/main/java/io/zipcoder/Grade.java | 23 +++++++++++ src/main/java/io/zipcoder/GradeBook.java | 21 ++++++++++ src/main/java/io/zipcoder/Student.java | 39 ++++++++++++++---- src/test/java/io/zipcoder/StudentTest.java | 1 + target/classes/io/zipcoder/Classroom.class | Bin 0 -> 1433 bytes target/classes/io/zipcoder/Grade.class | Bin 0 -> 988 bytes target/classes/io/zipcoder/GradeBook.class | Bin 0 -> 934 bytes target/classes/io/zipcoder/Student.class | Bin 0 -> 3136 bytes .../io/zipcoder/ClassroomTest.class | Bin 0 -> 288 bytes .../io/zipcoder/StudentTest.class | Bin 0 -> 282 bytes 11 files changed, 105 insertions(+), 8 deletions(-) create mode 100644 src/main/java/io/zipcoder/Grade.java create mode 100644 src/main/java/io/zipcoder/GradeBook.java create mode 100644 target/classes/io/zipcoder/Classroom.class create mode 100644 target/classes/io/zipcoder/Grade.class create mode 100644 target/classes/io/zipcoder/GradeBook.class create mode 100644 target/classes/io/zipcoder/Student.class create mode 100644 target/test-classes/io/zipcoder/ClassroomTest.class create mode 100644 target/test-classes/io/zipcoder/StudentTest.class diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index 64566f0..c85538c 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -1,4 +1,33 @@ package io.zipcoder; +import java.util.*; + +import static java.util.Arrays.sort; + public class Classroom { + private Integer currentAmountOfStudents; + private Integer maxNumberOfStudents; + private Student[] students; + + public Classroom(Integer maxNumberOfStudents){ + students = new Student[maxNumberOfStudents]; + this.maxNumberOfStudents = maxNumberOfStudents; + currentAmountOfStudents = 0; + } + public Classroom(Student[] students) { + this.students = students; + currentAmountOfStudents = students.length; + maxNumberOfStudents = students.length; + } + public Classroom(){ + this(30); + } + public Student[] getStudents(){ + List studentList = new ArrayList<>(); + for (Student student: students) + if (student != null) + studentList.add(student); + return studentList.toArray(new Student[studentList.size()]); + } + } diff --git a/src/main/java/io/zipcoder/Grade.java b/src/main/java/io/zipcoder/Grade.java new file mode 100644 index 0000000..8f5b121 --- /dev/null +++ b/src/main/java/io/zipcoder/Grade.java @@ -0,0 +1,23 @@ +package io.zipcoder; + +public class Grade { + private Character grade; + private Student student; + + public Grade(Student student, Character grade){ + this.grade = grade; + this.student = student; + } + public Student getStudent(){ + return student; + } + public Character getGrade(){ + return grade; + } + + @Override + public String toString(){ + return String.format("%s %s, Grade: %c/n", + student.getFirstName(),student.getLastName(),grade); + } +} diff --git a/src/main/java/io/zipcoder/GradeBook.java b/src/main/java/io/zipcoder/GradeBook.java new file mode 100644 index 0000000..6f7b675 --- /dev/null +++ b/src/main/java/io/zipcoder/GradeBook.java @@ -0,0 +1,21 @@ +package io.zipcoder; + +import java.util.Arrays; + +public class GradeBook { + private Grade[] grades; + + public GradeBook(Grade[] grades){ + this.grades = grades; + } + public Grade[] getGrades() { + return grades; + } + @Override + public String toString(){ + String result = ""; + for(Grade grade: grades) + result += grade.toString(); + return result; + } +} diff --git a/src/main/java/io/zipcoder/Student.java b/src/main/java/io/zipcoder/Student.java index 8a174c6..aab1b40 100644 --- a/src/main/java/io/zipcoder/Student.java +++ b/src/main/java/io/zipcoder/Student.java @@ -8,10 +8,11 @@ public class Student { String lastName; ArrayList examScores; - public Student(String firstName, String lastName, Double[] examScores){ + public Student(String firstName, String lastName, Double[] testScores){ this.firstName = firstName; this.lastName = lastName; - this.examScores = new ArrayList(Arrays.asList(examScores)); + if (testScores != null) + examScores = new ArrayList(Arrays.asList(testScores)); } public String getFirstName(){ return firstName; @@ -26,13 +27,35 @@ public void setLastName(String newLastName){ lastName = newLastName; } public Integer getNumberOfExamsTaken(){ - return examScores.size(); + return examScores == null ? 0 : examScores.size(); } public String getExamScores(){ - return "Exam Scores:\n" + - "\n\tExam 1 -> " + examScores.get(0) + - "\n\tExam 2 -> " + examScores.get(1) + - "\n\tExam 3 -> " + examScores.get(2) + - "\n\tExam 4 -> " + examScores.get(3); + String output = ""; + Integer examNum = 1; + for(Double i : examScores) + output += "Exam " + examNum++ + " -> " + i + "\n"; + + return output; + } + public void addExamScore(Double examScore) { + if (examScore == null) + examScores = new ArrayList<>(); + + examScores.add(examScore); + } + public void setExamScores(Integer nthExam, Double examScore){ + examScores.set(nthExam - 1, examScore); + } + public Double getExamScore(Integer nthExam){ + return examScores.get(nthExam - 1); + } + public Double getAverageExamScore(){ + Double sum = 0.0; + if (examScores == null) + return 0.0; + + for (Double score : examScores) + sum += score; + return sum / (double) getNumberOfExamsTaken(); } } diff --git a/src/test/java/io/zipcoder/StudentTest.java b/src/test/java/io/zipcoder/StudentTest.java index a9fedec..4880450 100644 --- a/src/test/java/io/zipcoder/StudentTest.java +++ b/src/test/java/io/zipcoder/StudentTest.java @@ -2,4 +2,5 @@ public class StudentTest { + } \ No newline at end of file diff --git a/target/classes/io/zipcoder/Classroom.class b/target/classes/io/zipcoder/Classroom.class new file mode 100644 index 0000000000000000000000000000000000000000..4587dbd65740af9b7b66991e0d0938dd4d2c36ec GIT binary patch literal 1433 zcmZux%Tg0T6g{0xm=K2WOhSk2Q91ICHnNY&oFLC2m zt3*Ug%9UmL8~%hV@$}3GVgfNI971??;;f6Ff zrDs^KMnW{BDsF{PkAVh^;kGp6(%exIQ8A%nQXrPESe8+=XSYg~qP?`fY**H}Eeo{e zHuW7nThNOe*@dEQY#0{f+qU#Kk1JcNhIKYJSU$ZLeUURu**$YRUs^M)tcS;&byH^1 zw5J84$r{M16#-?AR|J}JX3=mtp6IIudRlX(yk1z*EmQ72r((Y{nP%)9-CRL0m#tE1 zi-hrH?NlU{KPhd)hGAC=?ntI;Ul35e`UE29=&IE06FpzU z?)FI?{TE`VYBEd{qH)>Q^RE~6ZASs8gHr;bMhfhkwl~0Q0e5oA23YZsSv>n{( zJooXNNFP9?GoRu64*x!sbY>rcwEqk0_Mv`suE%Mk2+(Q-X(UmY&1gaw2|JxL2MCww zk-vmPEF8LoNB7dB>vHKFq9d0iopBd|i)<}qYvtd9ETf(1kuz*vr)*tvFvuc{>-N~j z$tIXdDBavmk^=;**deFv7;!rsJk5>t@C16$>!JK&WF1lFzoGuw0YbU-Cn$>pN7Mc> zC88wWAu$k9h9?5?z)xtIc;FBXK0JM^i1){TGMPhY0@U;njXwN9_yds?NG&@Z)J_D+ z*+b2)Qn5jd5dTXIfi%y3$ovNpxhsqS literal 0 HcmV?d00001 diff --git a/target/classes/io/zipcoder/Grade.class b/target/classes/io/zipcoder/Grade.class new file mode 100644 index 0000000000000000000000000000000000000000..5735bb1e62d0a33ba1024be2732cb0b831ac6c1d GIT binary patch literal 988 zcmZuv%Wl(95Ixs+;>0ygn+K2Za%l~Yo7NjPP{gKE*+gYw)GA_iGq z0U^N$@KK1lw%fR1S(-aDcjnAF8}%9${OU9StTP zt9Zgto5g(UGxSF1`~!F9Je)a)XFTR!>c(LLjQQVnE3GSWY}0CzMh=>UaDfC!$x1nF8V5lI`**7uvuPr z!CJP&;yUG}UI|||?J?0DIwMOBHUq+>&m*VR0qIkjS$3CG5p=8bM1Bu9i!lzJ;;v?Yf&7Ua2?D&HCG`wY&kG7bdIz{o8NspK zEdATus%*Z4e$jkNYY>yowo?Cz+E^A0zM}4qmE2R^v0x>+-_clsuV?bQB&tWd?3RX@ LR}AlFI_~`i@7%^$ literal 0 HcmV?d00001 diff --git a/target/classes/io/zipcoder/GradeBook.class b/target/classes/io/zipcoder/GradeBook.class new file mode 100644 index 0000000000000000000000000000000000000000..ceab458dc8ac7e54012b31635327d2813fdb528c GIT binary patch literal 934 zcmZuv%Wl(95IxtAI5AF}q)kE#g|c8{)`ySg__x z5E5IEAeBJs2k;4e2`kFEP7nxZU5FWew>-UP!=*!3glv4kJ+{b4W&;$4BNJu9JhD4;!J zg}}TU4E!gfS8YFf=C%7oN^aQk`iEW=$ao5B@ymeis_AZfVR+1rxt<><-I-OfYqPov zWaF?EN5P;+;daeE@?LvR-y8It2}&A08BAay-AIlV`6r`(EH%!k&9`E&b9~?p6V1u0 z8U`!@vlWh_j=vws@#YehQuUVPu#iX7!UdTJ4){Os-YDpEvlce7Wx%meK~l= z`e!H~=}hP{31}rW)+Av{!^1$8h!pgm*%{iMlIqI(gXY<;x~-M9m3P=^mbE+g^>5Ig zpF(epky+BmFlfifx^Fe{;rvHKHdGV+73lN}jEY!htJ}2qs9VmlN_3e`FJdXl+L=mG ju}%CE#aw1q70Nl+pc_~*aK*q?!MT3I=JP6_6|DUREx^6e literal 0 HcmV?d00001 diff --git a/target/classes/io/zipcoder/Student.class b/target/classes/io/zipcoder/Student.class new file mode 100644 index 0000000000000000000000000000000000000000..0ec5cbffd76e498fc8a12d30acaca0b05a06cec3 GIT binary patch literal 3136 zcmZ`)YjYE26n-|hO_S{Fc!tk%Q1QcP>^Lwme(U_Ls6DeglQ}lWfjW`TF#lpk~OI>8Vcg+^ZK$rnA7v~ zgVR>g%+C)i2S;2dkUc8eSE;mYWNTzX}E@u6?D|+ z)Uy;JGr9QNKi?xoc2cHfS2q>#%In_0*Y+gC=(ydoV;_Ks82%X+SC zOtF!PR&ng)3 ziqyUOydWAn$uwazZ_NncRYw~O;kj~L5y(-iQ0<4G6S`_Js{shz&ta7D8TSla_4UJB z^ym0Uw1(={sCFesy@YCW6wTUS0+$SnHp)TS%x@*&=O2fLD`al$U(N*-JVx7x9f;CS zqL*umJ3sSl7vS&K)C!bT-!1r3{kPyB_!IHe9Ry|vZX>vY&@HIH(94fLuImxv8s#|+ zEokLevJG*5Nw=T_{d|*hB4PkL`NY^ZB2FVM!Q`{8LF{6@$7y##c|ezdirp%nu>bGj zwt~Ib=fWK1uLKCDZo+qihR;S4vNz*)R?Ts6vntq+C%GdW57Jw5hHQSq!#N$Xce@Zo z!j6z|ylS{ZI6$lRqTYq- zzmABQ6@+i2MUXkoa!T}w2U)@;D5Vd=7abFZPuCd!&4Vgm>G4Q9z)%xT)ac~Euh0|< zW}HT=fe`hGzs+hL1g3sWPEi2tc@5gBzwyP4xERJB5%@am3`0k^_ z7ST}^WB+23?4HGQZrSFTM6}S|cNcB8!dI}4>K2k@(S1U?;#4kf=j-K~qPY99j+q6K zBa`l$Ou8{nY>J)T52c;v^N{w4_Kq=_%w&g~pfiwVf!5n;yeb@Iid}a29>>2Hz5{8J z6Y+Q0iF~vtY*rHgD7}SGtRBCD4eZToZSMA9kJW<5+~5kP@S+R3LdJ3>Otjs`#5K}RI531c}8Pwx+_u=LL03`~Q6951J literal 0 HcmV?d00001 diff --git a/target/test-classes/io/zipcoder/ClassroomTest.class b/target/test-classes/io/zipcoder/ClassroomTest.class new file mode 100644 index 0000000000000000000000000000000000000000..94b5da55a312f0b8571ebb6b1f3763ffdf71058d GIT binary patch literal 288 zcmZ`!yKcfj5S%rBfN=oPAu2kc;F@$nG)SqeP=M&q<^+d~FFKnP`75eO6np?56|uHx zQe;;e?ac0swD;fZ4ZtgUAsToI&azSW}CtHHMG&@D;#yVFY=ToBWMkX06 z{n(^3+e)h|{uJHvpbNq<)<%5m&y>AZEHhaY)|k^q73CWtT${5^)w`}^{%mJQ`6VN` z@Cbu{GYGxvPGmCQi&b(|X^9aW{-P@4<^V>YnW#D7O@BZa790eOKFeT3lQF7i4=seu J2yI3O(F2lmKNkQ1 literal 0 HcmV?d00001 diff --git a/target/test-classes/io/zipcoder/StudentTest.class b/target/test-classes/io/zipcoder/StudentTest.class new file mode 100644 index 0000000000000000000000000000000000000000..73e3a825def53a268fb7d410cbc2776e8623ac1b GIT binary patch literal 282 zcmZ{eKa0XZ5XIlb{Lz?Gu@OrKczSUKNg&)8VB~IiD z8)x9L@6G&{xj(Kq0AsX#RPg1Y;h{-zzjdn3524Z@tO@os+bBXa)Tx>mhe+is86}*w z!z`A`TIRa+|DkPm`b6l4IupP87&DuTr71QlH7j*86N10Yiab^`U4GJfn~nDJECbkZ z2%Qf+6XljjWV#iLXs=>}9xT4UEaGOI)nzAM9&m;i&>sgDJXV)uFi>R;UT+6A`0NOE HRtv!sNgX_` literal 0 HcmV?d00001 From ef31c769d4d8546c80b4324d8146e75c1531958a Mon Sep 17 00:00:00 2001 From: SandyPham823 Date: Sun, 3 Nov 2019 15:40:33 -0500 Subject: [PATCH 3/6] I think I'm getting the hang of tests, maybe --- src/test/java/io/zipcoder/StudentTest.java | 8 ++++++++ .../test-classes/io/zipcoder/StudentTest.class | Bin 282 -> 899 bytes 2 files changed, 8 insertions(+) diff --git a/src/test/java/io/zipcoder/StudentTest.java b/src/test/java/io/zipcoder/StudentTest.java index 4880450..269e7b2 100644 --- a/src/test/java/io/zipcoder/StudentTest.java +++ b/src/test/java/io/zipcoder/StudentTest.java @@ -1,6 +1,14 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class StudentTest { + @Test + public void getNumberOfExamsTakenTest(){ + Student student = new Student("Sandy", "Pham", new Double[] {40.0,50.0}); + Assert.assertEquals(2, (int)student.getNumberOfExamsTaken()); + } } \ No newline at end of file diff --git a/target/test-classes/io/zipcoder/StudentTest.class b/target/test-classes/io/zipcoder/StudentTest.class index 73e3a825def53a268fb7d410cbc2776e8623ac1b..94fb6861f2b69adcb5efee4c26cb4235c66b1d5f 100644 GIT binary patch literal 899 zcmZuvTTc@~6#i!0-7U+8mQp~xgSQrx1;rZ}1F@JuHexJk()ctjLm6ymbuUDH_Xqg` zM58~zA7wn#t!bm3hnaJk^L^hrGrxX+`w3tT>kf*Tx3Q4JjT~;;xMgitDMQPFiQCrZ z&R@^K9W%9II51FlP{E>uCET@f&&D!?^-L-mKWE64D|LqKi{L;o&eLj?$|P)1we{^_xV+vMcH`l0>_uR1ou628vhP-2)GA(p|cadq&C2Jrfbcd1wxcpa|VUNuOF+J%P|jj-zCJ|5UubMX+5 zY&>@H1Wy@eN5H0S4q@#zk3~y&e!@G6*gK@o%hihiFBx^dULK0p;!vvg#{ZGGL!ngX zhJMBAkwe#H!(2Nm7Hts{+2lY#Kgf`iDz0mly|1xDBN>c)D~d!&ZMeK=Y=202hhD@i z@9tLWn8zgjP`wP$xKW~gnmmtAMyI)W2KKd=o}u091ue{y?WPxS0dwRrT%=;7SKP%I zS-|Rd7>#14m^FXEY-CEX&XKD%vL%dZ;|$||3GUJy5-t<*70PL0SLtN9M!SLQe*p4B%`5-_ delta 108 zcmZo>pT#74>ff$?3=9k=3<6vX%nZEj41DYi{1ZcyCaW+iFtaeQPM*i8E5@M6zyy>9 s0Y)GM3Ij>D$@`ha)Y*YzY(O3ZP@V%w@_^Z_44e#HVAb3}l8J!_0BFk!#{d8T From 99f2003da4d9e73eb1ba0ea09065541f3f69126f Mon Sep 17 00:00:00 2001 From: SandyPham823 Date: Sun, 3 Nov 2019 17:55:42 -0500 Subject: [PATCH 4/6] Added tests --- src/main/java/io/zipcoder/Classroom.java | 83 ++++++++++++++++++ src/main/java/io/zipcoder/Student.java | 11 ++- src/test/java/io/zipcoder/StudentTest.java | 44 +++++++++- target/classes/io/zipcoder/Classroom.class | Bin 1433 -> 6120 bytes target/classes/io/zipcoder/Student.class | Bin 3136 -> 3405 bytes .../io/zipcoder/StudentTest.class | Bin 899 -> 2353 bytes 6 files changed, 133 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index c85538c..19013a3 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -29,5 +29,88 @@ public Student[] getStudents(){ studentList.add(student); return studentList.toArray(new Student[studentList.size()]); } + private Integer studentNoScores(){ + Integer count = 0; + for(Student student : getStudents()) + if (student.getNumberOfExamsTaken() == 0) + count ++; + return count; + } + public Double getAverageExamScore(){ + Double sumOfAverageScore = 0.0; + Student[] allStudents = getStudents(); + for(Student student : allStudents) + sumOfAverageScore += student.getAverageExamScore(); + + return sumOfAverageScore / (double) (allStudents.length - studentNoScores()); + } + public Boolean addStudent(Student student) { + for (Integer index = 0; index < students.length; index++) + if (students[index] == null) { + students[index] = student; + currentAmountOfStudents++; + return true; + } + return false; + } + public Student[] getStudentUseScore(){ + Comparator nameComparator = Comparator.comparing(Student::getAverageExamScore).reversed().thenComparing(Student::getLastName); + Student[] sortedStudents = getStudents(); + Arrays.sort(sortedStudents, nameComparator); + + return sortedStudents; + } + public void removeStudent(String firstName, String lastName){ + List studentList = new ArrayList<>(Arrays.asList(students)); + for (Student student : getStudents()){ + if (student.getFirstName().equals(firstName) && student.getLastName().equals(lastName)){ + studentList.remove(student); + currentAmountOfStudents--; + break; + } + } + students = studentList.toArray(new Student[maxNumberOfStudents]); + } + public HashMap getGradeBook(){ + HashMap grades = new HashMap<>(); + Student[] sortedStudents = getStudentUseScore(); + Integer rankings = 1; + + for(Student student : sortedStudents){ + double percentGrades = ((double)(rankings) / (double)currentAmountOfStudents) * (double)100; + + if(student.getNumberOfExamsTaken() == 0) + grades.put(student, ' '); + else if (percentGrades <= 10) + grades.put(student, 'A'); + else if (percentGrades <= 29) + grades.put(student, 'B'); + else if (percentGrades <= 50) + grades.put(student, 'C'); + else if (percentGrades <= 89) + grades.put(student, 'D'); + else + grades.put(student, 'F'); + rankings++; + } + return grades; + } + public void printGrades(){ + HashMap grades = getGradeBook(); + for(Student student : getStudentUseScore()) + System.out.print(student.getFirstName() + " " + student.getLastName() + ", " + grades.get(student)); + } + @Override + public String toString(){ + String names = ""; + Student[] allStudents = getStudents(); + for(Student student : allStudents) + names += (student.getFirstName() + " " + student.getLastName() + "\n"); + + return "Class room: \n" + + "Capacity of classroom: " + maxNumberOfStudents + "\n" + + "Current amount of students: " + currentAmountOfStudents + "\n" + + names; + } } diff --git a/src/main/java/io/zipcoder/Student.java b/src/main/java/io/zipcoder/Student.java index aab1b40..4b84e59 100644 --- a/src/main/java/io/zipcoder/Student.java +++ b/src/main/java/io/zipcoder/Student.java @@ -39,9 +39,10 @@ public String getExamScores(){ } public void addExamScore(Double examScore) { if (examScore == null) - examScores = new ArrayList<>(); + examScores = new ArrayList<>(0); - examScores.add(examScore); + else + examScores.add(examScore); } public void setExamScores(Integer nthExam, Double examScore){ examScores.set(nthExam - 1, examScore); @@ -58,4 +59,10 @@ public Double getAverageExamScore(){ sum += score; return sum / (double) getNumberOfExamsTaken(); } + @Override + public String toString(){ + return String.format("Student Name: %s %s\n"+ + "> Average Score: %f\n"+ + "%s", firstName, lastName, getAverageExamScore(), getExamScores()); + } } diff --git a/src/test/java/io/zipcoder/StudentTest.java b/src/test/java/io/zipcoder/StudentTest.java index 269e7b2..dab5791 100644 --- a/src/test/java/io/zipcoder/StudentTest.java +++ b/src/test/java/io/zipcoder/StudentTest.java @@ -3,12 +3,50 @@ import org.junit.Assert; import org.junit.Test; +import java.lang.reflect.Array; +import java.util.ArrayList; + public class StudentTest { @Test - public void getNumberOfExamsTakenTest(){ - Student student = new Student("Sandy", "Pham", new Double[] {40.0,50.0}); - Assert.assertEquals(2, (int)student.getNumberOfExamsTaken()); + public void getNumberOfExamsTakenTest() { + Student student = new Student("Sandy", "Pham", new Double[]{40.0, 50.0}); + Assert.assertEquals(2, (int) student.getNumberOfExamsTaken()); + } + + @Test + public void getNumberOfExamTakenNoneTest() { + Student student = new Student("Sandy", "Pham", null); + Assert.assertEquals(0, (int) student.getNumberOfExamsTaken()); } + @Test + public void addExamScoreTest() { + Student student = new Student("Sandy", "Pham", new Double[]{80.0, 90.0}); + student.addExamScore(66.0); + System.out.println(student.toString()); + Assert.assertEquals(66.0, student.getExamScore(3), 0.0001); + } + + @Test + public void addExamScoreNullTest() { + Student student = new Student("Phamdy", "Sand", new Double[] {}); + student.addExamScore(80.0); + Assert.assertEquals(80.0, student.getExamScore(1), 0.0001); + } + + @Test + public void setExamScoresTest() { + Student student = new Student("Sandy", "Pham", new Double[] {80.0, 90.0}); + student.setExamScores(1, 66.0); + System.out.println(student.toString()); + Assert.assertEquals(66.0, student.getExamScore(1), 0.0001); + } + + @Test + public void getAverageExamScoreTest(){ + Student student = new Student("Sandy", "Pham", new Double [] {25.0,35.0,45.0}); + System.out.println(student.toString()); + Assert.assertEquals(35.0, student.getAverageExamScore(), 0.0001); + } } \ No newline at end of file diff --git a/target/classes/io/zipcoder/Classroom.class b/target/classes/io/zipcoder/Classroom.class index 4587dbd65740af9b7b66991e0d0938dd4d2c36ec..733a450f6aef70d85605cf5d9066a0c371f2034e 100644 GIT binary patch literal 6120 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 F{{lfP%<%vK delta 511 zcmYLF%Q6E|6zn@m>dNGrgh(Xv_9jp7w@45hrId}O$}-A=2vz>UZdNwFL6x0FKET#b z@B_*UeJ{l}Fvk02@UZFU2j_z^Qnid)V8Bnf1YHTrkwnEnUB%!&5T@@^S+ y%wgEHZv5(d_(w-D$`fN$X|EqvI!T6#w1qZtiw-sYyGON@>{!`bvtS6lo3Ehe`#dMGR6RQe8?KQ~J;}tsr1P zeDhFQ)GFe8#;-C6IyyRjb9Bb>-|!RTR~-gD=O(0l(3#z{=ia^N_xqj4?oaih>C-Ia66CUpzU~k;PL1b)9@FE++)5x)zlsF_Y<=_tN zV>4}IhELA&;u#yy+Q_pz$6*CF^K2HJIN9eMRO2w4BM$LAZ{w)MF?Nr$dBH&uCnQc@ zUfd<*Nr@LFHeUHtSi(Fd@sj^n;JP{_U>9ang?w%%>;GXijdtQ?g%-3bw4qg?cG6q$ z67z-JRAMln_m1qy%@rhGQFs-vDRkm>g?4l(yn)jarxecMtN;|w;Z34YcnfbUoQLo4 zHxtDRct^n6df1zG72d^Zg$sC3z;xI3xdOsb*o!2iE-Ji_4-_uqLxoHDh;ctw_ynIS z4B|e4SgJ68Ff&tdN4)7w(ruZe%jt6m7czM-n{iX)vw7a0a9ZXB!a9d3uVE&e*m+(3wAW1|X5en}mqYwR#HPe1i5`9R(l)6>Qp1Psy0!%E1Zf4-fJvAh zu*xI?o3TZo9ky2#`K+U9meYwkeZEewgB4Lh+)GlZJLoI1P)tIv2{raLjIU@TKwGzH z>;IFszeG!?`sg%g7L4`Bufn)o2`?#WASJ8*N6A2035|fxAzIb8VTriuHsZRnelDAZ zKxl{)pmyu9qg8q8!u6_#;;k;MMK2z}R^1P;9BN<;Lz>V=8V_O{sb;tc0yh!X)!#1h z(BBv#(1)>uq3Ly&Ksdd|_|K?`eGfBje1rO{kY7Skxn%qr?i}T$4J3x>QKLya$i`4h zW3q}+SXQYIjg>w$VweO9ErA$nZSqI3lUe;=oaX+eUaqI#MVH2K^>~IW7-2j@Y4ALR zHCllDU3gSubcCW^OSSC2O+%y-A1TKR{(N-QvCx>FqLnmrz$U774^3Pz6)8zW&$G6r zqNEec@EGO5pUiL>(;_{4DtSd<+(1NP^ai9ZZInppm%vmMw3pynd~3~W`2*avLG=uz xhSMgGVJdCKuAw=V4$>o<`W9=J2D4go4qye%O%wxKQR%yAE$a}}Vjkni{{_tF!u(fg6vlt=?9R?~_6534sJozaX+dCjp`~CI!B(vlL=dnF)Jt_+w%7_SmMs*# z6a+7L0dxdO{15yjK`_z8_`$@)#KgZuzZyf(bKc!-8>7kYnP=Yjobx>AGQTeSF+2Cm z-S2(?HuFV9o&!y^aZt^nfT4)zc_AXni+b{sqTz^_c_pN*FC%G2Ijp7NNp1_$LL_EA z8(dtw%Oq9Fndb5w>ZD6pHVR&f`CD9)0o?(c+;6iS8y=uX(+lpDrzY?V-{5^Mz@sQO z~$-W^==}UL5tXD=BrXR))kKG692k2wYcn=bjaJkLUgY4GEEK diff --git a/target/test-classes/io/zipcoder/StudentTest.class b/target/test-classes/io/zipcoder/StudentTest.class index 94fb6861f2b69adcb5efee4c26cb4235c66b1d5f..77606063d6e630dad55effc46a64388a6e92d9a7 100644 GIT binary patch literal 2353 zcma)7T~`}r5Pmivn~*LLAOWFN3+<_a2q{&oh1w<(qJc=T!6??RC3y);lU=$WSn7>8 zdh11hiC&}}J@p6pGraXbc${~?vf$QZE_P?&X{?q7y_ni zidJ~49JeS}FEmW6%~W%j8RiI6IU`wj1nX;*9Dxs!pn%*fKSwz3!g3Vq4v$3`{l{t86x!vX*8ZAwCU74V3+v;|m z$T5SNex%{}rl@%7gz0jJ`A5!4s-anWi&YdZR65ZA@{xQZOIX6PfQb-|1jHM%+CC-S zcMjzqCG&(rS5`ZPvSv}o628Efyuw!!zQ#8RP`Q1y5@<_cIFQi6VFHSTBRrDOMK1wW zf`((B_*jAtLxKs5N1xENIgE|RaV30r~3X8Yw^LI$X$!o4`^_? z@yyWhN&xRXYJpfhXI$H%9k*EVT{hsaIhd&RW(_M=>#@5AmBO$Bo)C}cK+s4LYOYYJ_#dDjR99|0U1V;^L8JJb$)G!&1FREEoHtWQb zpgYvJN!>HKM>LbB<|rW`bFLFtAKDSSk@Jb9_AxKhRWDF+vpD0)Ts2%7iInu0Rlw`P zR$Qspf|>sOF179T8z@+&<;j)HWezud?(Gne3o9Eg+C<1pbWskM1m=*Z4=n#BAn=!n zt_6B3&|RQ=eDOJipUH^eCS66_IfNCmB_{y4@FqP8^s!#1D4yKI5Lv*=Z;0%TN5^CF z7l`jgGZ4>^Z0yA{7~;lrT&iUt<@*@vWAukJqz6DFh*E)J%wvRrM{U4Kr>F}!Pu{n2 zn}FY;NKWisx(m4D(`eGio70%_Xb2o}=s)l#2r+|cWCM6JF5WPmh2gFGct5#qZ+UoL z+hbna6JFc-46=AzGX((IO)sdnuW5#3+3ZX`9Y9DttXa zq~H=sMH;M delta 281 zcmXwzOHKko6h%)LsV-7fG&b0NQD{UI{D6WVM#SjA1-Kn2uE6w4j5AGGfH866dW^UH zyup3%zISe=p0Wpb_xANN2gXc28Er>VrBh|c(M@O9x~M#s-E?;Q?+iWrJ7YYCJPbDRe*xP1OJwIrv_l0Fd2kO*!_ zm&<#b_j2u0xu`4B@H1OhS(8gx7i+}6+N+z$E>Mwr3Tg~R$4o8)Mt_-tMK;(}wyAA= MdrLiGTWV;11GAAB9{>OV From 84c075d40d660a904ebf80894f19d073e45cc2b3 Mon Sep 17 00:00:00 2001 From: SandyPham823 Date: Sun, 3 Nov 2019 18:41:29 -0500 Subject: [PATCH 5/6] checkpoint - Adding last test cases for classroom --- src/test/java/io/zipcoder/ClassroomTest.java | 38 +++++++++++++++++- .../io/zipcoder/ClassroomTest.class | Bin 288 -> 2068 bytes 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/test/java/io/zipcoder/ClassroomTest.java b/src/test/java/io/zipcoder/ClassroomTest.java index 7bac1ff..0760dea 100644 --- a/src/test/java/io/zipcoder/ClassroomTest.java +++ b/src/test/java/io/zipcoder/ClassroomTest.java @@ -1,4 +1,40 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + public class ClassroomTest { -} + private Classroom presetRoom; + private Classroom presetRoomWithStudent; + private Classroom presetRoomMultipleStudents; + private final double DELTA = 0.001; + private Student[] presetStudent = new Student[]{ + new Student("Phamdy", "Sand", new Double[]{90.0, 89.0}), + new Student("Sandy", "Pham", new Double[]{99.0, 95.0, 91.0}), + new Student("Sandicus", "Phamicus", null) + }; + + @Before + public void settings() { + presetRoomWithStudent = new Classroom(presetStudent); + presetRoomMultipleStudents = new Classroom(10); + presetRoom = new Classroom(); + + presetRoomMultipleStudents.addStudent(presetStudent[0]); + presetRoomMultipleStudents.addStudent(presetStudent[1]); + } + @Test + public void getAverageExamScoreMultiple(){ + Assert.assertEquals(92.25, presetRoomMultipleStudents.getAverageExamScore(), DELTA); + } + @Test + public void getAverageExamScorePresetStudent(){ + Assert.assertEquals(92.25, presetRoomWithStudent.getAverageExamScore(), DELTA); + } + @Test + public void addStudentPresetRoom(){ + presetRoom.addStudent(presetStudent[0]); + Assert.assertEquals(presetRoom.getStudents()[0], presetStudent[0]); + } +} \ No newline at end of file diff --git a/target/test-classes/io/zipcoder/ClassroomTest.class b/target/test-classes/io/zipcoder/ClassroomTest.class index 94b5da55a312f0b8571ebb6b1f3763ffdf71058d..fd5be81309bff1fe8d501114b4cef62527285951 100644 GIT binary patch literal 2068 zcmah}TUQ%Z6#h;wlQc{r4S{lL3$&|kNNuB7wU*j)2_PB@5)4JW4ap%4CNp$0!&0Ao z@yGb6OD?Njb@}Y0|HOBf%e_w~$$(K;R!;WbXYX%+`*QNzUoUFyO>uOcm1V5DPT@oKJl zP?P>$Lm--8C~V9Mh`hkXdE08ZhUJ!wnkPwb2DX6)x6kDE?UY%2WLl>CSRkC4ED1#B ziJL%Q!L;O4uf8Ll4P&Q9mQ=wm8?}<*n5_H8h`VPJksn-HNnPsrX9sra7EM(e|9OTr^d+XNtJDZyXvr-oo2DUdI~({lPi5 zfwi?gqh9%jnpiZf3en@RT+OhmxxDRBy*kRMFb?%I%0BGNLDVEx&9X<0h_i)79dF`3 z?M5(Jn-|0E>bQryF;p3Nk1eK-9Pa9PjgNhNrK5(r4huFlzbg*+ErtUf&*A83z-7rh zLwl zWy_US=?DyFmV+dGJFyrHvS^tZCDEC@KsIw`Yg;cO2svllHECD`+23WY1k#zHw_l1t zPeo1Je~I+2=zS(Tn>yQQNQc^~)AJ``;kjqjXzW@hpU*SP9?IpjA@fjXvU^(uZU^gZ z4k_4e-!fUk1pRT{q5rEWLcAFyg?Mq)FRcsxrg*O*Fr{oEx~J76IZ8HKdph4C?I&C$ z32?I~5ZN?BM~Gy#SBP$fU(%7%QnBbO#J9p}TsTEfaVwIB&cX?LNl`w1sU$@xpGz&D zekDZH7-&03mGkA)kl@%O4F9N@J)m<08l5pj&_f>`H;B~|dTDocyh}HFlOrBtnlyn& z#6P6?e@`*Ye<}MCBU{;@F?@p2BV18xGI5HlC%ATmF{Phi{0I}|G{%nMsbgHZoaq=hk8z9Ie2Ppb zSAvQGuA(2;0@&$u*fR=y_TR9t{1^5FVPF4W?722}5nGE48Ti;4_$Q|_rc5qiQetLdV4dvGER)8_Adr<< zmZ+bTn3t~apOlrFT*9Epzy#C*0*pWiR0$;6fINLLpMil@YdZtuMxX!_13Qpp0}3+$ ZHE;k)9x$7gfs=s?$YW&S29it+JOCZ$5rF^z From 30cfed3dd87bb15d2d21c137052eed1ad80a5104 Mon Sep 17 00:00:00 2001 From: SandyPham823 Date: Sun, 3 Nov 2019 19:06:16 -0500 Subject: [PATCH 6/6] finished lab --- src/test/java/io/zipcoder/ClassroomTest.java | 51 ++++++++++++++++-- .../io/zipcoder/ClassroomTest.class | Bin 2068 -> 3781 bytes 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/test/java/io/zipcoder/ClassroomTest.java b/src/test/java/io/zipcoder/ClassroomTest.java index 0760dea..1fd9bf3 100644 --- a/src/test/java/io/zipcoder/ClassroomTest.java +++ b/src/test/java/io/zipcoder/ClassroomTest.java @@ -4,15 +4,17 @@ import org.junit.Before; import org.junit.Test; +import java.util.HashMap; + public class ClassroomTest { private Classroom presetRoom; private Classroom presetRoomWithStudent; private Classroom presetRoomMultipleStudents; private final double DELTA = 0.001; private Student[] presetStudent = new Student[]{ - new Student("Phamdy", "Sand", new Double[]{90.0, 89.0}), - new Student("Sandy", "Pham", new Double[]{99.0, 95.0, 91.0}), - new Student("Sandicus", "Phamicus", null) + new Student(" Phamdy", "Sand", new Double[]{90.0, 89.0}), + new Student(" Sandy", "Pham", new Double[]{99.0, 95.0, 91.0}), + new Student(" Sandicus", "Phamicus", null) }; @Before @@ -25,6 +27,15 @@ public void settings() { presetRoomMultipleStudents.addStudent(presetStudent[1]); } @Test + public void getGrades(){ + HashMap expected = new HashMap<>(); + expected.put(presetStudent[0], 'D'); + expected.put(presetStudent[1], 'C'); + expected.put(presetStudent[2], ' '); + + Assert.assertEquals(expected, presetRoomWithStudent.getGradeBook()); + } + @Test public void getAverageExamScoreMultiple(){ Assert.assertEquals(92.25, presetRoomMultipleStudents.getAverageExamScore(), DELTA); } @@ -33,8 +44,42 @@ public void getAverageExamScorePresetStudent(){ Assert.assertEquals(92.25, presetRoomWithStudent.getAverageExamScore(), DELTA); } @Test + public void addStudentPresetRoomBool(){ + Assert.assertTrue(presetRoom.addStudent(presetStudent[0])); + } + @Test public void addStudentPresetRoom(){ presetRoom.addStudent(presetStudent[0]); Assert.assertEquals(presetRoom.getStudents()[0], presetStudent[0]); } + @Test + public void addMultipleStudentPresetRoomBool(){ + Assert.assertTrue(presetRoomMultipleStudents.addStudent(presetStudent[2])); + } + @Test + public void addStudentNoSpace(){ + Assert.assertFalse(presetRoomWithStudent.addStudent(new Student("George", "Washington", null))); + } + @Test + public void removeNonexistent(){ + presetRoomWithStudent.removeStudent("bleep","bloop"); + Assert.assertArrayEquals(presetStudent, presetRoomWithStudent.getStudents()); + } + @Test + public void getMultipleStudentWithScore(){ + Student[] expectedStudent = new Student[]{ + presetStudent[1], + presetStudent[0]}; + + Assert.assertArrayEquals(expectedStudent, presetRoomMultipleStudents.getStudentUseScore()); + } + @Test + public void getStudentsScorePreset(){ + Student[] expectedStudent = new Student[]{ + presetStudent[1], + presetStudent[0], + presetStudent[2]}; + presetRoomWithStudent.printGrades(); + Assert.assertArrayEquals(expectedStudent, presetRoomWithStudent.getStudentUseScore()); + } } \ No newline at end of file diff --git a/target/test-classes/io/zipcoder/ClassroomTest.class b/target/test-classes/io/zipcoder/ClassroomTest.class index fd5be81309bff1fe8d501114b4cef62527285951..11af2adff77386758a8f757bc900b09eb828e1d6 100644 GIT binary patch literal 3781 zcma)9X?GLn6@JEA5d#R>7;H$eLnyMdI59~|FpC#qvxue0u`#qw$JSsEku}O_3>NMfGcu+PP?kc5@QmH6<5 ze<@jfc)CtZc|;OVB~cQaiwTrd=!Pv!C55Nq2wN4_70M8*Ce%^_Ur%8Vj1;cono!S( z_}LVm!}Ii!R?bB9f?#?vftTdy8!3DfFAMdGoV}XFYe~E={2NKUnZ&n5`fcIg66$Sv zd?$hLYDiTavue8MZF^C}_Pk{eJY!Yn?4s!mjFpUP)#1UAhHVYCY0F(GxV55Lb~SW2 zt@G{6={bJLDqHRm z4Uuf$l!oXSv1!mgpN)L|aIRsGO9$n|u1dL^SgKQOjn zI0n5rLq}*jowoyUepovRZDh%GjCu3eRb#O*N5u6SY3ONjdQP=MP?8-+vFJ12i8RTm zZI?83v^t_uit8?Jb8~Cs<{7(CG3Hpht&X{9FPUfTvU%02x~j1ReUmBGcoGH6Ur%)a zwv+lkQ&pjQklEk`yXMT9=PaD;9W8FJ@#vlD2cM%VuvW+nyX2Nh)75sW8hG13;PS8iJ|Z7ID*3o z{6I|qP$ci^IEuqM4$0$v{D^70rN;oQ-%km&-Mk z%g-TU&3f5v+_)$eQCKG(`MyN67v=KC&{~ij_qA>dDted4876OU@-|Yi0@lTS+g?;? zJv$?gV_d6et&h#vsJUO279zQyX#jqrYN|~}a20mH|D8cEe=7{}XFv>XvJ6PI$*xdu zZV0|Jvdy4jRLROI* z5$AIQqC~S1oB4xh3(=)fC4GV?f|(d`5~ujqkSG2&h5uFFk+X^Zo9LeDzk#k*>|Dk! z#imnhxN8-6FJrgjSJAVKUMlSt#mL|a?wPK0QN=Yw>Lifu*o__NC&&ZXNyocFkS2Uc zrwJiWAZHZ3vjM#8h!7}{yNNwBtGG9RpXWK9Tf^QJd|_Jg(ZTdsn2!yndqVuK73^C> zR1fJ{XM5^)wi(^+ZQoDZ58ToAbjWsu zQ4u#mOQF3YuV7#e4>jX{h_)ZTqwNcU?EmD9yPSs&_al14ovAZSuOM!>Hk6wAmJeqlI1z(i(h(qRT4F?(?yc~^i?nmim?2cZ( z9C&$BZ9iZSHx&1kIEW5%DG3o7ET~yy=RV%T-8iTEB&X(-a_7y<9zUqELQ8qiCiHRge1bj2zgEHiNuLqLh<^mT+565yJ3K+y>2+V#TOb=_@3e1zd I+lH_G56&G}N&o-= delta 858 zcmaKqOHUI~6vuxv)0rvtstBz@!>c7Af;mQ#R z`}pnU_agQ)>@yPNWRO!nr@h4F6DfocK}N+(iH6hGAl|ev@qNVjH3;+gzAC zv