42 lines
1.7 KiB
Fennel
42 lines
1.7 KiB
Fennel
(let [{: pprint} (require :lib.tableprint)
|
|
{: describe :end test-end} (require :lib.test)
|
|
{: Either : Left : Right } (require :lib.either)]
|
|
(describe "Either" (fn [t]
|
|
(t {:given "a new either"
|
|
:should "set its value correctly"
|
|
:expected :poop
|
|
:actual (. (Either:new :poop) :value)
|
|
})
|
|
(t
|
|
(let [r (Right:new "rain")
|
|
map (r:map #(.. "b" $1))
|
|
expected :brain
|
|
actual (. map :value)]
|
|
{:given "a Right of some value"
|
|
:should "map"
|
|
expected
|
|
actual
|
|
}))
|
|
(t
|
|
(let [ l (Left:new "rain")
|
|
map (l:map #(.. "b" $1))
|
|
expected :rain
|
|
actual (. map :value)
|
|
]
|
|
{:given "a Left of some value"
|
|
:should "not map"
|
|
expected
|
|
actual
|
|
}))
|
|
(t
|
|
(let [ e (Either.of "rank")
|
|
map (e:map #(.. "f" $1))
|
|
expected :frank
|
|
actual (. map :value) ]
|
|
{:given "Either.of"
|
|
:should "map"
|
|
expected
|
|
actual
|
|
}))
|
|
(test-end))))
|