elm/exercises/strain/StrainTests.elm

109 lines
2.1 KiB
Elm

module Main exposing (..)
import ElmTest exposing (..)
import Strain exposing (keep, discard)
import String
even : Int -> Bool
even number =
number % 2 == 0
odd : Int -> Bool
odd number =
number % 2 == 1
isFirstLetter : String -> String -> Bool
isFirstLetter letter word =
(String.left 1 word) == letter
lessThanTen : number -> Bool
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" ])
)
]
main : Program Never
main =
runSuite tests