elm/exercises/collatz-conjecture/tests/Tests.elm
2017-10-07 18:36:25 +02:00

39 lines
1.1 KiB
Elm

module Tests exposing (..)
import Test exposing (..)
import Expect
import CollatzConjecture exposing (collatz)
tests : Test
tests =
describe "CollatzConjecture tests"
[ test "zero steps for one" <|
\() ->
Expect.equal (Ok 0) (collatz 1)
-- Once you get the first test passing, remove the
-- `skip <|` (just leave the comma) on the next
-- lines to continue!
, skip <|
test "divide if even" <|
\() ->
Expect.equal (Ok 4) (collatz 16)
, skip <|
test "even and odd step" <|
\() ->
Expect.equal (Ok 9) (collatz 12)
, skip <|
test "Large number of even and odd step" <|
\() ->
Expect.equal (Ok 152) (collatz 1000000)
, skip <|
test "zero is an error" <|
\() ->
Expect.equal (Err "Only positive numbers are allowed") (collatz 0)
, skip <|
test "negative values is an error" <|
\() ->
Expect.equal (Err "Only positive numbers are allowed") (collatz -15)
]