2016-08-17 11:14:17 +00:00
|
|
|
port module Main exposing (..)
|
2016-03-12 11:34:35 +00:00
|
|
|
|
2016-08-17 11:14:17 +00:00
|
|
|
import Test.Runner.Node exposing (run)
|
|
|
|
import Json.Encode exposing (Value)
|
|
|
|
import Test exposing (..)
|
|
|
|
import Expect
|
2016-03-12 11:34:35 +00:00
|
|
|
import Dict exposing (Dict)
|
|
|
|
import WordCount exposing (wordCount)
|
|
|
|
|
|
|
|
|
|
|
|
tests : Test
|
|
|
|
tests =
|
2016-08-17 11:14:17 +00:00
|
|
|
describe "Word Count"
|
|
|
|
[ test "count one word" <|
|
|
|
|
\() ->
|
|
|
|
Expect.equal [ ( "word", 1 ) ]
|
|
|
|
(wordCount "word" |> Dict.toList)
|
|
|
|
, test "count one of each word" <|
|
|
|
|
\() ->
|
|
|
|
Expect.equal [ ( "each", 1 ), ( "of", 1 ), ( "one", 1 ) ]
|
|
|
|
(wordCount "one of each" |> Dict.toList)
|
|
|
|
, test "multiple occurrences of a word" <|
|
|
|
|
\() ->
|
|
|
|
Expect.equal [ ( "blue", 1 ), ( "fish", 4 ), ( "one", 1 ), ( "red", 1 ), ( "two", 1 ) ]
|
|
|
|
(wordCount "one fish two fish red fish blue fish" |> Dict.toList)
|
|
|
|
, test "ignore punctuation" <|
|
|
|
|
\() ->
|
|
|
|
Expect.equal [ ( "as", 1 ), ( "car", 1 ), ( "carpet", 1 ), ( "java", 1 ), ( "javascript", 1 ) ]
|
|
|
|
(wordCount "car : carpet as java : javascript!!&@$%^&" |> Dict.toList)
|
|
|
|
, test "include numbers" <|
|
|
|
|
\() ->
|
|
|
|
Expect.equal [ ( "1", 1 ), ( "2", 1 ), ( "testing", 2 ) ]
|
|
|
|
(wordCount "testing, 1, 2 testing" |> Dict.toList)
|
|
|
|
, test "normalize case" <|
|
|
|
|
\() ->
|
|
|
|
Expect.equal [ ( "go", 3 ), ( "stop", 2 ) ]
|
|
|
|
(wordCount "go Go GO Stop stop" |> Dict.toList)
|
2016-06-19 21:46:13 +00:00
|
|
|
]
|
2016-03-12 11:34:35 +00:00
|
|
|
|
|
|
|
|
2016-08-23 00:31:41 +00:00
|
|
|
main : Program Value
|
2016-05-13 02:26:52 +00:00
|
|
|
main =
|
2016-08-17 11:14:17 +00:00
|
|
|
run emit tests
|
|
|
|
|
|
|
|
|
|
|
|
port emit : ( String, Value ) -> Cmd msg
|