Skip to content

Commit 51104f9

Browse files
committed
Add minimum classes concept to the StudentGradeCalculator
1 parent 042fe48 commit 51104f9

File tree

2 files changed

+76
-26
lines changed

2 files changed

+76
-26
lines changed

examples/java/java-student_grades-01_base_example/src/main/java/tv/codely/student_grades/StudentGradeCalculator.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44

55
public class StudentGradeCalculator {
6-
public Float calculateGrades(final List<Float> examsGrades) {
6+
public Float calculateGrades(final List<Float> examsGrades, final Boolean hasReachedMinimumClasses) {
77
if (!examsGrades.isEmpty()) {
88
Float gradesSum = 0.f;
99
Integer gradesCounter = 0;
@@ -13,7 +13,11 @@ public Float calculateGrades(final List<Float> examsGrades) {
1313
gradesCounter++;
1414
}
1515

16-
return gradesSum / gradesCounter;
16+
if (hasReachedMinimumClasses) {
17+
return gradesSum / gradesCounter;
18+
} else {
19+
return 0.f;
20+
}
1721
} else {
1822
return 0.f;
1923
}

examples/java/java-student_grades-01_base_example/src/test/java/tv/codely/student_grades/StudentGradeCalculatorShould.java

Lines changed: 70 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,85 @@
99

1010
public class StudentGradeCalculatorShould {
1111

12-
@Test
13-
void calculate_0_with_no_exam_grades() {
14-
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
12+
@Test
13+
void fail_given_there_are_no_exams() {
14+
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
1515

16-
final List<Float> examsGrades = Collections.emptyList();
16+
final List<Float> examsGrades = Collections.emptyList();
17+
final Boolean hasReachedMinimumClasses = true;
1718

18-
assertEquals(0, studentGradeCalculator.calculateGrades(examsGrades));
19-
}
19+
assertEquals(0, studentGradeCalculator.calculateGrades(examsGrades, hasReachedMinimumClasses));
20+
}
2021

21-
@Test
22-
void calculate_same_grade_with_one_single_exam() {
23-
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
22+
@Test
23+
void calculate_same_grade_given_one_single_exam_and_attending_the_minimum_classes() {
24+
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
2425

25-
final List<Float> examsGrades = List.of(5.f);
26+
final List<Float> examsGrades = List.of(5.f);
27+
final Boolean hasReachedMinimumClasses = true;
2628

27-
assertEquals(5, studentGradeCalculator.calculateGrades(examsGrades));
28-
}
29+
assertEquals(5, studentGradeCalculator.calculateGrades(examsGrades, hasReachedMinimumClasses));
30+
}
2931

30-
@Test
31-
void calculate_average_grade_based_on_different_exam_grades() {
32-
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
32+
@Test
33+
void calculate_average_grade_given_different_exam_grades_and_attending_the_minimum_classes() {
34+
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
3335

34-
final List<Float> examsGrades = List.of(5.f, 4.f, 6.f, 2.f, 8.f, 0.f, 10.f);
36+
final List<Float> examsGrades = List.of(5.f, 4.f, 6.f, 2.f, 8.f, 0.f, 10.f);
37+
final Boolean hasReachedMinimumClasses = true;
3538

36-
assertEquals(5, studentGradeCalculator.calculateGrades(examsGrades));
37-
}
39+
assertEquals(5, studentGradeCalculator.calculateGrades(examsGrades, hasReachedMinimumClasses));
40+
}
3841

39-
@Test
40-
void round_up_to_2_decimals() {
41-
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
42+
@Test
43+
void round_up_to_2_decimals_given_odd_exam_grades_and_attending_the_minimum_classes() {
44+
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
4245

43-
final List<Float> examsGrades = List.of(5.f, 4.f);
46+
final List<Float> examsGrades = List.of(5.f, 4.f);
47+
final Boolean hasReachedMinimumClasses = true;
4448

45-
assertEquals(4.5f, studentGradeCalculator.calculateGrades(examsGrades));
46-
}
49+
assertEquals(4.5f, studentGradeCalculator.calculateGrades(examsGrades, hasReachedMinimumClasses));
50+
}
51+
52+
// hasReachedMinimumClasses
53+
54+
@Test
55+
void fail_when_there_are_no_exams_and_has_not_attended_the_minimum_classes() {
56+
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
57+
58+
final List<Float> examsGrades = Collections.emptyList();
59+
final Boolean hasReachedMinimumClasses = false;
60+
61+
assertEquals(0, studentGradeCalculator.calculateGrades(examsGrades, hasReachedMinimumClasses));
62+
}
63+
64+
@Test
65+
void fail_given_one_single_exam_but_not_attending_the_minimum_classes() {
66+
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
67+
68+
final List<Float> examsGrades = List.of(5.f);
69+
final Boolean hasReachedMinimumClasses = false;
70+
71+
assertEquals(0, studentGradeCalculator.calculateGrades(examsGrades, hasReachedMinimumClasses));
72+
}
73+
74+
@Test
75+
void fail_given_different_exam_grades_but_not_attending_the_minimum_classes() {
76+
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
77+
78+
final List<Float> examsGrades = List.of(5.f, 4.f, 6.f, 2.f, 8.f, 0.f, 10.f);
79+
final Boolean hasReachedMinimumClasses = false;
80+
81+
assertEquals(0, studentGradeCalculator.calculateGrades(examsGrades, hasReachedMinimumClasses));
82+
}
83+
84+
@Test
85+
void fail_given_odd_exam_grades_but_not_attending_the_minimum_classes() {
86+
StudentGradeCalculator studentGradeCalculator = new StudentGradeCalculator();
87+
88+
final List<Float> examsGrades = List.of(5.f, 4.f);
89+
final Boolean hasReachedMinimumClasses = false;
90+
91+
assertEquals(0, studentGradeCalculator.calculateGrades(examsGrades, hasReachedMinimumClasses));
92+
}
4793
}

0 commit comments

Comments
 (0)