mirror of
https://github.com/correl/elm.git
synced 2024-12-23 03:00:08 +00:00
76 lines
3 KiB
Elm
76 lines
3 KiB
Elm
module Main (..) where
|
|
|
|
import Task
|
|
import Console
|
|
import ElmTest exposing (..)
|
|
import String
|
|
import Char
|
|
import Random
|
|
import Bob
|
|
|
|
|
|
tests : Test
|
|
tests =
|
|
suite
|
|
"Bob"
|
|
[ test "stating something" (assertEqual "Whatever." (Bob.hey "Tom-ay-to, tom-aaaah-to."))
|
|
, test "shouting" (assertEqual "Whoa, chill out!" (Bob.hey "WATCH OUT!"))
|
|
, test "shouting gibberish" (assertEqual "Whoa, chill out!" (Bob.hey (uppercaseGibberish 10)))
|
|
, test "asking a question" (assertEqual "Sure." (Bob.hey "Does this cryogenic chamber make me look fat?"))
|
|
, test "asking a numeric question" (assertEqual "Sure." (Bob.hey "You are, what, like 15?"))
|
|
, test "asking gibberish" (assertEqual "Sure." (Bob.hey (gibberishQuestion 20)))
|
|
, test "talking forcefully" (assertEqual "Whatever." (Bob.hey "Let's go make out behind the gym!"))
|
|
, test "using acronyms in regular speech" (assertEqual "Whatever." (Bob.hey "It's OK if you don't want to go to the DMV."))
|
|
, test "forceful questions" (assertEqual "Whoa, chill out!" (Bob.hey "WHAT THE HELL WERE YOU THINKING?"))
|
|
, test "shouting numbers" (assertEqual "Whoa, chill out!" (Bob.hey "1, 2, 3 GO!"))
|
|
, test "only numbers" (assertEqual "Whatever." (Bob.hey "1, 2, 3"))
|
|
, test "question with only numbers" (assertEqual "Sure." (Bob.hey "4?"))
|
|
, test "shouting with special characters" (assertEqual "Whoa, chill out!" (Bob.hey "ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!)"))
|
|
, test "shouting with no exclamation mark" (assertEqual "Whoa, chill out!" (Bob.hey "I HATE YOU"))
|
|
, test "statement containing a question mark" (assertEqual "Whatever." (Bob.hey "Ending with ? means a question."))
|
|
, test "prattling on" (assertEqual "Sure." (Bob.hey "Wait! Hang on. Are you going to be OK?"))
|
|
, test "silence" (assertEqual "Fine. Be that way!" (Bob.hey ""))
|
|
, test "prolonged silence" (assertEqual "Fine. Be that way!" (Bob.hey " "))
|
|
, test "alternate silences" (assertEqual "Fine. Be that way!" (Bob.hey "\t \n \t "))
|
|
, test "on multiple line questions" (assertEqual "Whatever." (Bob.hey "\nDoes this cryogenic chamber make me look fat?\nno"))
|
|
]
|
|
|
|
|
|
character : Int -> Int -> Random.Generator Char
|
|
character start end =
|
|
Random.map Char.fromCode (Random.int start end)
|
|
|
|
|
|
anyCharacter : Random.Generator Char
|
|
anyCharacter =
|
|
character 32 126
|
|
|
|
|
|
uppercaseCharacter : Random.Generator Char
|
|
uppercaseCharacter =
|
|
character 65 90
|
|
|
|
|
|
listOfCharacters : Int -> Random.Generator Char -> Random.Generator (List Char)
|
|
listOfCharacters length characterList =
|
|
Random.list length characterList
|
|
|
|
|
|
gibberish : Int -> Random.Generator Char -> String
|
|
gibberish length characterList =
|
|
fst (Random.generate (Random.map String.fromList (listOfCharacters length characterList)) (Random.initialSeed 424242))
|
|
|
|
|
|
uppercaseGibberish : Int -> String
|
|
uppercaseGibberish length =
|
|
gibberish length uppercaseCharacter
|
|
|
|
|
|
gibberishQuestion : Int -> String
|
|
gibberishQuestion length =
|
|
(gibberish length anyCharacter) ++ "?"
|
|
|
|
|
|
port runner : Signal (Task.Task x ())
|
|
port runner =
|
|
Console.run (consoleRunner tests)
|