elm/exercises/strain/StrainTests.elm
2016-03-17 20:21:55 -04:00

74 lines
1.8 KiB
Elm

module Main (..) where
import Task
import Console
import ElmTest exposing (..)
import Strain exposing (keep, discard)
import String
even =
\number -> number % 2 == 0
odd =
\number -> number % 2 == 1
isFirstLetter =
\letter -> \word -> (String.left 1 word) == letter
lessThanTen =
\num -> num < 10
tests : Test
tests =
suite
"Strain"
[ test
"empty keep"
(assertEqual [] (keep lessThanTen []))
, test
"keep everything"
(assertEqual [ 1, 2, 3 ] (keep lessThanTen [ 1, 2, 3 ]))
, test
"keep first and last"
(assertEqual [ 1, 3 ] (keep odd [ 1, 2, 3 ]))
, test
"keep nothing"
(assertEqual [] (keep even [ 1, 3, 5, 7 ]))
, test
"keep neither first nor last"
(assertEqual [ 2 ] (keep even [ 1, 2, 3 ]))
, test
"keep strings"
(assertEqual
[ "zebra", "zombies", "zealot" ]
(keep (isFirstLetter "z") [ "apple", "zebra", "banana", "zombies", "cherimoya", "zealot" ])
)
, test
"empty discard"
(assertEqual [] (discard lessThanTen []))
, test
"discard everything"
(assertEqual [] (discard lessThanTen [ 1, 2, 3 ]))
, test
"discard first and last"
(assertEqual [ 2 ] (discard odd [ 1, 2, 3 ]))
, test
"discard nothing"
(assertEqual [ 1, 3, 5, 7 ] (discard even [ 1, 3, 5, 7 ]))
, test
"discard neither first nor last"
(assertEqual [ 1, 3 ] (discard even [ 1, 2, 3 ]))
, test
"discard strings"
(assertEqual [ "apple", "banana", "cherimoya" ] (discard (isFirstLetter "z") [ "apple", "zebra", "banana", "zombies", "cherimoya", "zealot" ]))
]
port runner : Signal (Task.Task x ())
port runner =
Console.run (consoleRunner tests)