summary refs log tree commit diff
path: root/lib/either.test.fnl
blob: 5a29ea738d83627b1ce77bbbc449b41f7a62b745 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
(let [{:print pprint} (require :lib.table)
      {: describe : 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))))