aboutsummaryrefslogtreecommitdiff
path: root/rust/grade-school/tests
diff options
context:
space:
mode:
authorFederico Igne <git@federicoigne.com>2021-01-01 19:03:31 +0000
committerFederico Igne <git@federicoigne.com>2021-11-03 18:55:08 +0000
commitfdde4fcd039210d7378c3f31ec9372396b1464a9 (patch)
tree37bb80b186e27dbdea461afd77950ff96a870d09 /rust/grade-school/tests
parent6ddf37f5142151639c3e9948a62d6c0abd77d3b9 (diff)
downloadexercism-fdde4fcd039210d7378c3f31ec9372396b1464a9.tar.gz
exercism-fdde4fcd039210d7378c3f31ec9372396b1464a9.zip
[rust] Grade School
Diffstat (limited to 'rust/grade-school/tests')
-rw-r--r--rust/grade-school/tests/grade-school.rs75
1 files changed, 75 insertions, 0 deletions
diff --git a/rust/grade-school/tests/grade-school.rs b/rust/grade-school/tests/grade-school.rs
new file mode 100644
index 0000000..3f9f060
--- /dev/null
+++ b/rust/grade-school/tests/grade-school.rs
@@ -0,0 +1,75 @@
1use grade_school as school;
2
3fn some_strings(v: &[&str]) -> Option<Vec<String>> {
4 Some(v.iter().map(|s| s.to_string()).collect())
5}
6
7#[test]
8fn test_grades_for_empty_school() {
9 let s = school::School::new();
10 assert_eq!(s.grades(), vec![]);
11}
12
13#[test]
14fn test_grades_for_one_student() {
15 let mut s = school::School::new();
16 s.add(2, "Aimee");
17 assert_eq!(s.grades(), vec![2]);
18}
19
20#[test]
21fn test_grades_for_several_students_are_sorted() {
22 let mut s = school::School::new();
23 s.add(2, "Aimee");
24 s.add(7, "Logan");
25 s.add(4, "Blair");
26 assert_eq!(s.grades(), vec![2, 4, 7]);
27}
28
29#[test]
30fn test_grades_when_several_students_have_the_same_grade() {
31 let mut s = school::School::new();
32 s.add(2, "Aimee");
33 s.add(2, "Logan");
34 s.add(2, "Blair");
35 assert_eq!(s.grades(), vec![2]);
36}
37
38#[test]
39fn test_grade_for_empty_school() {
40 let s = school::School::new();
41 assert_eq!(s.grade(1), None);
42}
43
44#[test]
45fn test_grade_when_no_students_have_that_grade() {
46 let mut s = school::School::new();
47 s.add(7, "Logan");
48 assert_eq!(s.grade(1), None);
49}
50
51#[test]
52fn test_grade_for_one_student() {
53 let mut s = school::School::new();
54 s.add(2, "Aimee");
55 assert_eq!(s.grade(2), some_strings(&["Aimee"]));
56}
57
58#[test]
59fn test_grade_returns_students_sorted_by_name() {
60 let mut s = school::School::new();
61 s.add(2, "James");
62 s.add(2, "Blair");
63 s.add(2, "Paul");
64 assert_eq!(s.grade(2), some_strings(&["Blair", "James", "Paul"]));
65}
66
67#[test]
68fn test_add_students_to_different_grades() {
69 let mut s = school::School::new();
70 s.add(3, "Chelsea");
71 s.add(7, "Logan");
72 assert_eq!(s.grades(), vec![3, 7]);
73 assert_eq!(s.grade(3), some_strings(&["Chelsea"]));
74 assert_eq!(s.grade(7), some_strings(&["Logan"]));
75}