elm/exercises/strain/Tests.elm
2016-12-17 17:29:40 -05:00

90 lines
2.4 KiB
Elm

port module Main exposing (..)
import Test.Runner.Node exposing (run, TestProgram)
import Json.Encode exposing (Value)
import Test exposing (..)
import Expect
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 =
describe "Strain"
[ test "empty keep" <|
\() ->
Expect.equal []
(keep lessThanTen [])
, test "keep everything" <|
\() ->
Expect.equal [ 1, 2, 3 ]
(keep lessThanTen [ 1, 2, 3 ])
, test "keep first and last" <|
\() ->
Expect.equal [ 1, 3 ]
(keep odd [ 1, 2, 3 ])
, test "keep nothing" <|
\() ->
Expect.equal []
(keep even [ 1, 3, 5, 7 ])
, test "keep neither first nor last" <|
\() ->
Expect.equal [ 2 ]
(keep even [ 1, 2, 3 ])
, test "keep strings" <|
\() ->
Expect.equal [ "zebra", "zombies", "zealot" ]
(keep (isFirstLetter "z") [ "apple", "zebra", "banana", "zombies", "cherimoya", "zealot" ])
, test "empty discard" <|
\() ->
Expect.equal []
(discard lessThanTen [])
, test "discard everything" <|
\() ->
Expect.equal []
(discard lessThanTen [ 1, 2, 3 ])
, test "discard first and last" <|
\() ->
Expect.equal [ 2 ]
(discard odd [ 1, 2, 3 ])
, test "discard nothing" <|
\() ->
Expect.equal [ 1, 3, 5, 7 ]
(discard even [ 1, 3, 5, 7 ])
, test "discard neither first nor last" <|
\() ->
Expect.equal [ 1, 3 ]
(discard even [ 1, 2, 3 ])
, test "discard strings" <|
\() ->
Expect.equal [ "apple", "banana", "cherimoya" ]
(discard (isFirstLetter "z") [ "apple", "zebra", "banana", "zombies", "cherimoya", "zealot" ])
]
main : TestProgram
main =
run emit tests
port emit : ( String, Value ) -> Cmd msg