Testing at @elmconf

146 views
Skip to first unread message

Brian Marick

unread,
Sep 22, 2017, 1:20:50 PM9/22/17
to elm-d...@googlegroups.com
I’m a big fan of a roughly tabular test format that uses elm-test as building blocks. For example:


describe "minutes"
[ rejects "a+" "the usual non-numeric values are rejected"
, rejects "5.3" "rejects floats"

, when "59" (Just 59) "upper boundary"
, rejects "60" "too big"

, when "0" (Just 0) "0 is allowed"
, rejects "-1" "negative numbers are disallowed"

, when " 35 " (Just 35) "spaces are allowed"
]

… or:

[ describe "discovering the Sign"
[ check "1" <| Just (Positive, [1], Nothing)
, check "12" <| Just (Positive, [1], Just 2)
, check "-23" <| Just (Negative, [2], Just 3)
, check "+34" <| Just (Positive, [3], Just 4)

, check "" Nothing
, check "-" Nothing
, check "+" Nothing
]

I've found such a style really useful. It's easier to grasp what a set of tests is all about, or to compare similar tests to see what cases might be missing. I have a motto: "every word in the test should be about the purpose of that test."

Would love to talk about such tests at ElmConf. Here’s a start at a test-builder library that supports them: https://github.com/marick/static-fp/blob/master/elm/tests/TestBuilders.elm The comments talk more about the “why” of a tabular format.

P.S. I’m writing a book called /An Outsider’s Guide to Statically Typed Functional Programming/ https://leanpub.com/outsidefp — conference special: talk to me at ElmConf and I’ll give you a copy. I look like my twitter profile picture: https://twitter.com/marick

Reply all
Reply to author
Forward
0 new messages