|
|
@@ -1,14 +1,14 @@
|
|
1
|
1
|
import org.junit.Ignore;
|
|
2
|
2
|
import org.junit.Test;
|
|
3
|
3
|
|
|
4
|
|
-import java.lang.Integer;
|
|
5
|
|
-import java.util.*;
|
|
6
|
4
|
import java.util.ArrayList;
|
|
7
|
|
-import java.util.Arrays;
|
|
8
|
5
|
import java.util.HashMap;
|
|
9
|
|
-import java.util.List;
|
|
10
|
6
|
import java.util.Map;
|
|
|
7
|
+import java.util.List;
|
|
|
8
|
+import java.util.Collection;
|
|
11
|
9
|
|
|
|
10
|
+import org.hamcrest.Matcher;
|
|
|
11
|
+import org.hamcrest.collection.IsIterableContainingInOrder;
|
|
12
|
12
|
import static org.hamcrest.CoreMatchers.*;
|
|
13
|
13
|
import static org.junit.Assert.assertThat;
|
|
14
|
14
|
import static org.junit.Assert.assertTrue;
|
|
|
@@ -62,29 +62,27 @@ public class SchoolTest {
|
|
62
|
62
|
|
|
63
|
63
|
@Ignore
|
|
64
|
64
|
@Test
|
|
65
|
|
- public void gradeReturnsStudentsInTheOrderTheyWereInserted() {
|
|
66
|
|
- int grade = 4;
|
|
67
|
|
- school.add("Bartimaeus", grade);
|
|
68
|
|
- school.add("Nathaniel", grade);
|
|
69
|
|
- school.add("Faquarl", grade);
|
|
70
|
|
- List<String> studentsInGrade = school.grade(grade);
|
|
71
|
|
- assertThat(studentsInGrade.get(0), is("Bartimaeus"));
|
|
72
|
|
- assertThat(studentsInGrade.get(1), is("Nathaniel"));
|
|
73
|
|
- assertThat(studentsInGrade.get(2), is("Faquarl"));
|
|
74
|
|
- }
|
|
75
|
|
-
|
|
76
|
|
- @Ignore
|
|
77
|
|
- @Test
|
|
78
|
65
|
public void sortsSchool() {
|
|
|
66
|
+ school.add("Kyle", 4);
|
|
|
67
|
+ school.add("Zed", 4);
|
|
|
68
|
+ school.add("Adam", 4);
|
|
79
|
69
|
school.add("Jennifer", 4);
|
|
80
|
70
|
school.add("Kareem", 6);
|
|
81
|
71
|
school.add("Christopher", 4);
|
|
82
|
|
- school.add("Kyle", 3);
|
|
83
|
|
- Map<Integer, List<String>> sortedStudents = new HashMap<Integer, List<String>>();
|
|
84
|
|
- sortedStudents.put(6, Arrays.asList("Kareem"));
|
|
85
|
|
- sortedStudents.put(4, Arrays.asList("Christopher", "Jennifer"));
|
|
86
|
|
- sortedStudents.put(3, Arrays.asList("Kyle"));
|
|
87
|
|
- assertEquals(school.studentsByGradeAlphabetical(), sortedStudents);
|
|
|
72
|
+ school.add("Kylie", 3);
|
|
|
73
|
+ Map<Integer, Matcher> sortedStudents = new HashMap<Integer, Matcher>();
|
|
|
74
|
+ sortedStudents.put(6, IsIterableContainingInOrder
|
|
|
75
|
+ .contains("Kareem"));
|
|
|
76
|
+ sortedStudents.put(4, IsIterableContainingInOrder
|
|
|
77
|
+ .contains("Adam", "Christopher", "Jennifer", "Kyle", "Zed"));
|
|
|
78
|
+ sortedStudents.put(3, IsIterableContainingInOrder
|
|
|
79
|
+ .contains("Kylie"));
|
|
|
80
|
+
|
|
|
81
|
+ Map schoolStudents = school.studentsByGradeAlphabetical();
|
|
|
82
|
+ for (Map.Entry<?, Matcher> entry : sortedStudents.entrySet()) {
|
|
|
83
|
+
|
|
|
84
|
+ assertThat((Collection) schoolStudents.get(entry.getKey()), entry.getValue());
|
|
|
85
|
+ }
|
|
88
|
86
|
}
|
|
89
|
87
|
|
|
90
|
88
|
@Ignore
|
|
|
@@ -93,8 +91,14 @@ public class SchoolTest {
|
|
93
|
91
|
String shouldNotBeAdded = "Should not be added to school";
|
|
94
|
92
|
int grade = 1;
|
|
95
|
93
|
|
|
96
|
|
- List<String> students = school.grade(grade);
|
|
97
|
|
- students.add(shouldNotBeAdded);
|
|
|
94
|
+ Collection students = school.grade(grade);
|
|
|
95
|
+
|
|
|
96
|
+ try {
|
|
|
97
|
+ students.add(shouldNotBeAdded);
|
|
|
98
|
+ } catch (Exception exception) {
|
|
|
99
|
+ // Also valid that the add operation throws an exception
|
|
|
100
|
+ // Such as UnsupportedOperationException when an umodifiable collection type is used
|
|
|
101
|
+ }
|
|
98
|
102
|
|
|
99
|
103
|
assertThat(school.grade(grade), not(hasItem(shouldNotBeAdded)));
|
|
100
|
104
|
}
|
|
|
@@ -107,9 +111,16 @@ public class SchoolTest {
|
|
107
|
111
|
List<String> listWhichShouldNotBeAdded = new ArrayList<>();
|
|
108
|
112
|
listWhichShouldNotBeAdded.add(studentWhichShouldNotBeAdded);
|
|
109
|
113
|
|
|
110
|
|
- Map<Integer, List<String>> sortedStudents = school.studentsByGradeAlphabetical();
|
|
111
|
|
- sortedStudents.put(grade,listWhichShouldNotBeAdded);
|
|
|
114
|
+ Map sortedStudents = school.studentsByGradeAlphabetical();
|
|
|
115
|
+
|
|
|
116
|
+ try {
|
|
|
117
|
+ sortedStudents.put(grade, listWhichShouldNotBeAdded);
|
|
|
118
|
+ } catch (Exception exception) {
|
|
|
119
|
+ // Also valid that the put operation throws an exception
|
|
|
120
|
+ // Such as UnsupportedOperationException when an unmodifiableMap is used
|
|
|
121
|
+ }
|
|
112
|
122
|
|
|
113
|
|
- assertThat(school.studentsByGradeAlphabetical().get(grade), not(hasItem(studentWhichShouldNotBeAdded)));
|
|
|
123
|
+ assertThat(school.studentsByGradeAlphabetical().get(grade),
|
|
|
124
|
+ not(hasItem(studentWhichShouldNotBeAdded)));
|
|
114
|
125
|
}
|
|
115
|
126
|
}
|