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)