9mm/lib/either.test.fnl

41 lines
884 B
Plaintext
Raw Normal View History

2024-05-28 21:04:00 +00:00
(local {: pprint} (require :lib.tableprint))
(let [{
: Either
: Left
: Right
} (require :lib.either)]
;; either
;(print "Either Inspection")
;(pprint Either)
;; you can set and get values
(let [ v :poop x (Either:new v)]
(assert (= v x.value) (.. "The value is " v)))
(let [r (Right:new "rain")
map (r:map #(.. "b" $1))
expected :brain
actual (. map :value)
]
(assert (= expected actual) "You can map a Right value"))
(let [l (Left:new "rain")
map (l:map #(.. "b" $1))
expected :rain
actual (. map :value)
]
(assert (= expected actual) "You can NOT map a Left value"))
(let [e (Either.of "rank")
map (e:map #(.. "f" $1))
expected :frank
actual (. map :value)
]
(assert (= expected actual) "You can map a Either.of"))
)