exercism/elixir/grade-school/grade_school_test.exs

76 lines
1.5 KiB
Elixir

if !System.get_env("EXERCISM_TEST_EXAMPLES") do
Code.load_file("school.exs", __DIR__)
end
ExUnit.start()
ExUnit.configure(trace: true)
defmodule SchoolTest do
use ExUnit.Case
@db %{}
test "add student" do
actual = School.add(@db, "Aimee", 2)
assert actual == %{2 => ["Aimee"]}
end
@tag :pending
test "add more students in same class" do
actual =
@db
|> School.add("James", 2)
|> School.add("Blair", 2)
|> School.add("Paul", 2)
assert Enum.sort(actual[2]) == ["Blair", "James", "Paul"]
end
@tag :pending
test "add students to different grades" do
actual =
@db
|> School.add("Chelsea", 3)
|> School.add("Logan", 7)
assert actual == %{3 => ["Chelsea"], 7 => ["Logan"]}
end
@tag :pending
test "get students in a grade" do
actual =
@db
|> School.add("Bradley", 5)
|> School.add("Franklin", 5)
|> School.add("Jeff", 1)
|> School.grade(5)
assert Enum.sort(actual) == ["Bradley", "Franklin"]
end
@tag :pending
test "get students in a non existent grade" do
assert [] == School.grade(@db, 1)
end
@tag :pending
test "sort school by grade and by student name" do
actual =
@db
|> School.add("Bart", 4)
|> School.add("Jennifer", 4)
|> School.add("Christopher", 4)
|> School.add("Kareem", 6)
|> School.add("Kyle", 3)
|> School.sort()
expected = [
{3, ["Kyle"]},
{4, ["Bart", "Christopher", "Jennifer"]},
{6, ["Kareem"]}
]
assert expected == actual
end
end