mirror of
https://github.com/correl/elm.git
synced 2024-12-23 11:15:00 +00:00
4d81104a85
This allows learners to gradually approach exercise. However, unlike commented tests, the Elm compiler is still able to infer type information from the skipped tests.
167 lines
5.2 KiB
Elm
167 lines
5.2 KiB
Elm
module Tests exposing (..)
|
|
|
|
import Test exposing (..)
|
|
import Expect
|
|
import String
|
|
import Char
|
|
import Random
|
|
import Bob
|
|
|
|
|
|
tests : Test
|
|
tests =
|
|
describe "Bob"
|
|
[ test "stating something" <|
|
|
\() ->
|
|
Expect.equal "Whatever."
|
|
(Bob.hey "Tom-ay-to, tom-aaaah-to.")
|
|
, skip <|
|
|
test "shouting" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whoa, chill out!"
|
|
(Bob.hey "WATCH OUT!")
|
|
, skip <|
|
|
test "shouting gibberish" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whoa, chill out!"
|
|
(Bob.hey (uppercaseGibberish 10))
|
|
, skip <|
|
|
test "asking a question" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Sure."
|
|
(Bob.hey "Does this cryogenic chamber make me look fat?")
|
|
, skip <|
|
|
test "asking a numeric question" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Sure."
|
|
(Bob.hey "You are, what, like 15?")
|
|
, skip <|
|
|
test "asking gibberish" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Sure."
|
|
(Bob.hey (gibberishQuestion 20))
|
|
, skip <|
|
|
test "talking forcefully" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whatever."
|
|
(Bob.hey "Let's go make out behind the gym!")
|
|
, skip <|
|
|
test "using acronyms in regular speech" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whatever."
|
|
(Bob.hey "It's OK if you don't want to go to the DMV.")
|
|
, skip <|
|
|
test "forceful questions" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whoa, chill out!"
|
|
(Bob.hey "WHAT THE HELL WERE YOU THINKING?")
|
|
, skip <|
|
|
test "shouting numbers" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whoa, chill out!"
|
|
(Bob.hey "1, 2, 3 GO!")
|
|
, skip <|
|
|
test "only numbers" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whatever."
|
|
(Bob.hey "1, 2, 3")
|
|
, skip <|
|
|
test "question with only numbers" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Sure."
|
|
(Bob.hey "4?")
|
|
, skip <|
|
|
test "shouting with special characters" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whoa, chill out!"
|
|
(Bob.hey "ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!")
|
|
, skip <|
|
|
test "shouting with no exclamation mark" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whoa, chill out!"
|
|
(Bob.hey "I HATE YOU")
|
|
, skip <|
|
|
test "statement containing a question mark" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Whatever."
|
|
(Bob.hey "Ending with ? means a question.")
|
|
, skip <|
|
|
test "prattling on" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Sure."
|
|
(Bob.hey "Wait! Hang on. Are you going to be OK?")
|
|
, skip <|
|
|
test "silence" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Fine. Be that way!"
|
|
(Bob.hey "")
|
|
, skip <|
|
|
test "prolonged silence" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Fine. Be that way!"
|
|
(Bob.hey " ")
|
|
, skip <|
|
|
test "alternate silences" <|
|
|
\() ->
|
|
Expect.equal
|
|
"Fine. Be that way!"
|
|
(Bob.hey "\t \n \t ")
|
|
, skip <|
|
|
test "on multiple line questions" <|
|
|
\() ->
|
|
Expect.equal
|
|
"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 =
|
|
Tuple.first (Random.step (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) ++ "?"
|