1010public class StudentGradeCalculatorShould {
1111 @ Test
1212 void fail_given_there_are_no_exams () {
13- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
13+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
1414
1515 final List <Pair <Integer , Float >> examsGrades = Collections .emptyList ();
1616 final boolean hasReachedMinimumClasses = true ;
@@ -20,7 +20,7 @@ void fail_given_there_are_no_exams() {
2020
2121 @ Test
2222 void calculate_same_grade_given_one_single_exam_and_attending_the_minimum_classes () {
23- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
23+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
2424
2525 final List <Pair <Integer , Float >> examsGrades = List .of (new Pair <>(100 , 5f ));
2626 final boolean hasReachedMinimumClasses = true ;
@@ -30,7 +30,7 @@ void calculate_same_grade_given_one_single_exam_and_attending_the_minimum_classe
3030
3131 @ Test
3232 void calculate_average_grade_given_different_exam_grades_and_attending_the_minimum_classes () {
33- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
33+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
3434
3535 final List <Pair <Integer , Float >> examsGrades = List .of (
3636 new Pair <>(10 , 4f ),
@@ -51,7 +51,7 @@ void calculate_average_grade_given_different_exam_grades_and_attending_the_minim
5151
5252 @ Test
5353 void round_up_to_2_decimals_given_odd_exam_grades_and_attending_the_minimum_classes () {
54- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
54+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
5555
5656 final List <Pair <Integer , Float >> examsGrades = List .of (
5757 new Pair <>(50 , 4f ),
@@ -66,7 +66,7 @@ void round_up_to_2_decimals_given_odd_exam_grades_and_attending_the_minimum_clas
6666
6767 @ Test
6868 void fail_when_there_are_no_exams_and_has_not_attended_the_minimum_classes () {
69- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
69+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
7070
7171 final List <Pair <Integer , Float >> examsGrades = Collections .emptyList ();
7272 final boolean hasReachedMinimumClasses = false ;
@@ -76,7 +76,7 @@ void fail_when_there_are_no_exams_and_has_not_attended_the_minimum_classes() {
7676
7777 @ Test
7878 void fail_given_one_single_exam_but_not_attending_the_minimum_classes () {
79- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
79+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
8080
8181 final List <Pair <Integer , Float >> examsGrades = List .of (new Pair <>(100 , 5f ));
8282 final boolean hasReachedMinimumClasses = false ;
@@ -86,7 +86,7 @@ void fail_given_one_single_exam_but_not_attending_the_minimum_classes() {
8686
8787 @ Test
8888 void fail_given_different_exam_grades_but_not_attending_the_minimum_classes () {
89- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
89+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
9090
9191 final List <Pair <Integer , Float >> examsGrades = List .of (
9292 new Pair <>(10 , 4f ),
@@ -106,14 +106,11 @@ void fail_given_different_exam_grades_but_not_attending_the_minimum_classes() {
106106 }
107107
108108 @ Test
109- void fail_given_odd_exam_grades_but_not_attending_the_minimum_classes () {
110- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
109+ void fail_given_odd_exam_grades_but_attending_the_minimum_classes () {
110+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
111111
112- final List <Pair <Integer , Float >> examsGrades = List .of (
113- new Pair <>(50 , 5f ),
114- new Pair <>(50 , 4f )
115- );
116- final boolean hasReachedMinimumClasses = false ;
112+ final List <Pair <Integer , Float >> examsGrades = List .of (new Pair <>(100 , 5f ));
113+ final boolean hasReachedMinimumClasses = false ;
117114
118115 assertEquals (0 , studentGradeCalculator .calculateGrades (examsGrades , hasReachedMinimumClasses ));
119116 }
@@ -122,7 +119,7 @@ void fail_given_odd_exam_grades_but_not_attending_the_minimum_classes() {
122119
123120 @ Test
124121 void validate_all_exam_grades_weight_below_100 () {
125- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
122+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
126123
127124 final List <Pair <Integer , Float >> examsGrades = List .of (
128125 new Pair <>(10 , 4f ),
@@ -135,7 +132,7 @@ void validate_all_exam_grades_weight_below_100() {
135132
136133 @ Test
137134 void validate_all_exam_grades_weight_over_100 () {
138- StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator ();
135+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
139136
140137 final List <Pair <Integer , Float >> examsGrades = List .of (
141138 new Pair <>(90 , 4f ),
@@ -145,4 +142,36 @@ void validate_all_exam_grades_weight_over_100() {
145142
146143 assertEquals (-1 , studentGradeCalculator .calculateGrades (examsGrades , hasReachedMinimumClasses ));
147144 }
145+
146+ // hasToRaiseOnePoint
147+
148+ @ Test
149+ void not_increase_one_extra_point_if_there_is_not_any_benevolent_teacher_in_the_year_to_calculate_grades () {
150+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2019 );
151+
152+ final List <Pair <Integer , Float >> examsGrades = List .of (new Pair <>(100 , 9.8f ));
153+ final boolean hasReachedMinimumClasses = true ;
154+
155+ assertEquals (9.8f , studentGradeCalculator .calculateGrades (examsGrades , hasReachedMinimumClasses ));
156+ }
157+
158+ @ Test
159+ void increase_one_extra_point_if_there_is_any_benevolent_teacher_in_the_year_to_calculate_grades () {
160+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2020 );
161+
162+ final List <Pair <Integer , Float >> examsGrades = List .of (new Pair <>(100 , 5f ));
163+ final boolean hasReachedMinimumClasses = true ;
164+
165+ assertEquals (6 , studentGradeCalculator .calculateGrades (examsGrades , hasReachedMinimumClasses ));
166+ }
167+
168+ @ Test
169+ void maintain_10_as_the_maximum_grade_even_if_increasing_one_extra_point () {
170+ StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator (2020 );
171+
172+ final List <Pair <Integer , Float >> examsGrades = List .of (new Pair <>(100 , 9.8f ));
173+ final boolean hasReachedMinimumClasses = true ;
174+
175+ assertEquals (10 , studentGradeCalculator .calculateGrades (examsGrades , hasReachedMinimumClasses ));
176+ }
148177}
0 commit comments