calrissian/test/unit/unit-maybe-tests.lfe
2014-04-24 00:47:45 -04:00

44 lines
No EOL
1.2 KiB
Text

(defmodule unit-maybe-tests
(export all)
(import
(from lfeunit-util
(check-failed-assert 2)
(check-wrong-assert-exception 2))))
(include-lib "deps/lfeunit/include/lfeunit-macros.lfe")
(include-lib "include/maybe.lfe")
(deftest bind-nothing
(is-equal 'nothing
(maybe:>>= 'nothing
(lambda (x) (+ 5 x)))))
(deftest bind-nothing-error
(is-equal 'nothing
(maybe:>>= 'nothing
(lambda (_) (error 'bad-func)))))
(deftest bind-five
(is-equal 10
(maybe:>>= (tuple 'just 5)
(lambda (x) (+ 5 x)))))
(deftest bind-fold
(is-equal #(just 3)
(let ((minc (lambda (x) (maybe:return (+ 1 x))))
(bind (lambda (f m) (maybe:>>= m f))))
(lists:foldr bind
#(just 0)
(list minc
minc
minc)))))
(deftest >>
(is-equal #(just 3)
(maybe:>> #(just 5) #(just 3))))
(deftest do
(is-equal #(just 3)
(do (a <- #(just 1))
(b <- #(just 2))
(maybe:return (+ a b)))))