module Tests exposing (..) import Test exposing (..) import Expect import GradeSchool exposing (addStudent, studentsInGrade, allStudents) tests : Test tests = describe "GradeSchool" [ test "add student" <| \() -> Expect.equal [ "Aimee" ] (GradeSchool.empty |> addStudent 2 "Aimee" |> studentsInGrade 2 ) , test "add more students in same class" <| \() -> Expect.equal [ "Blair", "James", "Paul" ] (GradeSchool.empty |> addStudent 2 "James" |> addStudent 2 "Blair" |> addStudent 2 "Paul" |> studentsInGrade 2 ) , test "add students to different grades" <| \() -> Expect.equal [ [ "Chelsea" ], [ "Logan" ] ] (let school = GradeSchool.empty |> addStudent 3 "Chelsea" |> addStudent 7 "Logan" in [ studentsInGrade 3 school, studentsInGrade 7 school ] ) , test "get students in a grade" <| \() -> Expect.equal [ "Bradley", "Franklin" ] (GradeSchool.empty |> addStudent 5 "Franklin" |> addStudent 5 "Bradley" |> addStudent 1 "Jeff" |> studentsInGrade 5 ) , test "get all students in the school" <| \() -> Expect.equal [ ( 3, [ "Kyle" ] ), ( 4, [ "Christopher", "Jennifer" ] ), ( 6, [ "Kareem" ] ) ] (GradeSchool.empty |> addStudent 4 "Jennifer" |> addStudent 6 "Kareem" |> addStudent 4 "Christopher" |> addStudent 3 "Kyle" |> allStudents ) , test "get students in a non-existent grade" <| \() -> Expect.equal [] (studentsInGrade 1 GradeSchool.empty) ]