elm/exercises/allergies/tests/Tests.elm
2017-05-28 08:14:40 +02:00

48 lines
2 KiB
Elm

module Tests exposing (..)
import Test exposing (..)
import Expect
import Allergies exposing (isAllergicTo, toList)
import List
tests : Test
tests =
describe "Allergies"
[ describe "isAllergicTo"
[ describe "no allergies means not allergic"
[ test "peanuts" <|
\() -> Expect.equal False (isAllergicTo "peanuts" 0)
, test "cats" <|
\() -> Expect.equal False (isAllergicTo "cats" 0)
, test "strawberries" <|
\() -> Expect.equal False (isAllergicTo "strawberries" 0)
]
, test "is allergic to eggs" <|
\() -> Expect.equal True (isAllergicTo "eggs" 1)
, describe "has the right allergies"
[ test "eggs" <|
\() -> Expect.equal True (isAllergicTo "eggs" 5)
, test "shellfish" <|
\() -> Expect.equal True (isAllergicTo "shellfish" 5)
, test "strawberries" <|
\() -> Expect.equal False (isAllergicTo "strawberries" 5)
]
]
, describe "toList"
[ test "no allergies at all" <|
\() -> Expect.equal [] (toList (0))
, test "allergic to just peanuts" <|
\() -> Expect.equal [ "peanuts" ] (toList (2))
, test "allergic to everything" <|
\() ->
Expect.equal (List.sort [ "eggs", "peanuts", "shellfish", "strawberries", "tomatoes", "chocolate", "pollen", "cats" ])
(255 |> toList |> List.sort)
, test "ignore non allergen score parts" <|
\() -> Expect.equal [ "eggs" ] (toList 257)
, test "ignore all non allergen score parts" <|
\() ->
Expect.equal (List.sort [ "eggs", "shellfish", "strawberries", "tomatoes", "chocolate", "pollen", "cats" ])
(509 |> toList |> List.sort)
]
]