From fdde4fcd039210d7378c3f31ec9372396b1464a9 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Fri, 1 Jan 2021 19:03:31 +0000 Subject: [rust] Grade School --- rust/grade-school/tests/grade-school.rs | 75 +++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 rust/grade-school/tests/grade-school.rs (limited to 'rust/grade-school/tests') 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 @@ +use grade_school as school; + +fn some_strings(v: &[&str]) -> Option> { + Some(v.iter().map(|s| s.to_string()).collect()) +} + +#[test] +fn test_grades_for_empty_school() { + let s = school::School::new(); + assert_eq!(s.grades(), vec![]); +} + +#[test] +fn test_grades_for_one_student() { + let mut s = school::School::new(); + s.add(2, "Aimee"); + assert_eq!(s.grades(), vec![2]); +} + +#[test] +fn test_grades_for_several_students_are_sorted() { + let mut s = school::School::new(); + s.add(2, "Aimee"); + s.add(7, "Logan"); + s.add(4, "Blair"); + assert_eq!(s.grades(), vec![2, 4, 7]); +} + +#[test] +fn test_grades_when_several_students_have_the_same_grade() { + let mut s = school::School::new(); + s.add(2, "Aimee"); + s.add(2, "Logan"); + s.add(2, "Blair"); + assert_eq!(s.grades(), vec![2]); +} + +#[test] +fn test_grade_for_empty_school() { + let s = school::School::new(); + assert_eq!(s.grade(1), None); +} + +#[test] +fn test_grade_when_no_students_have_that_grade() { + let mut s = school::School::new(); + s.add(7, "Logan"); + assert_eq!(s.grade(1), None); +} + +#[test] +fn test_grade_for_one_student() { + let mut s = school::School::new(); + s.add(2, "Aimee"); + assert_eq!(s.grade(2), some_strings(&["Aimee"])); +} + +#[test] +fn test_grade_returns_students_sorted_by_name() { + let mut s = school::School::new(); + s.add(2, "James"); + s.add(2, "Blair"); + s.add(2, "Paul"); + assert_eq!(s.grade(2), some_strings(&["Blair", "James", "Paul"])); +} + +#[test] +fn test_add_students_to_different_grades() { + let mut s = school::School::new(); + s.add(3, "Chelsea"); + s.add(7, "Logan"); + assert_eq!(s.grades(), vec![3, 7]); + assert_eq!(s.grade(3), some_strings(&["Chelsea"])); + assert_eq!(s.grade(7), some_strings(&["Logan"])); +} -- cgit v1.2.3