calrissian/test/unit/unit-calrissian-state-transformer-tests.lfe

60 lines
2 KiB
Text
Raw Normal View History

2014-07-10 01:19:14 +00:00
(defmodule unit-calrissian-state-transformer-tests
2014-05-12 04:12:26 +00:00
(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/monads.lfe")
(include-lib "include/monad-tests.lfe")
2014-07-10 01:19:14 +00:00
(test-monad (: calrissian-state-transformer new 'calrissian-identity-monad))
2014-05-12 04:12:26 +00:00
(deftest eval
(is-equal 5
2014-07-10 01:19:14 +00:00
(let* ((m (: calrissian-state-transformer new 'calrissian-identity-monad))
2014-05-12 04:12:26 +00:00
(mval (call m 'return 5)))
(call m 'eval mval 'undefined))))
(deftest exec-unchanged
(is-equal 'foo
2014-07-10 01:19:14 +00:00
(let* ((m (: calrissian-state-transformer new 'calrissian-identity-monad))
2014-05-12 04:12:26 +00:00
(mval (call m 'return 5)))
(call m 'exec mval 'foo))))
2014-05-13 23:31:15 +00:00
(deftest exec-modify
2014-05-12 04:12:26 +00:00
(is-equal 10
2014-07-10 01:19:14 +00:00
(let ((m (: calrissian-state-transformer new 'calrissian-identity-monad)))
2014-05-12 04:12:26 +00:00
(call m 'exec
(do-m m
(call m 'modify (lambda (x) (* x 2))))
5))))
2014-05-13 23:40:37 +00:00
(deftest exec-put-and-modify
2014-05-13 23:31:15 +00:00
(is-equal 30
2014-07-10 01:19:14 +00:00
(let ((m (: calrissian-state-transformer new 'calrissian-identity-monad)))
2014-05-13 23:31:15 +00:00
(call m 'exec
(do-m m
2014-05-13 23:40:37 +00:00
(call m 'put 10)
2014-05-13 23:31:15 +00:00
(call m 'modify (lambda (x) (+ x 5)))
(call m 'modify (lambda (x) (* x 2)))
(call m 'return 123))
2014-05-13 23:40:37 +00:00
3))))
(deftest exec-bind-and-modify
(is-equal 16
2014-07-10 01:19:14 +00:00
(let ((m (: calrissian-state-transformer new 'calrissian-identity-monad)))
2014-05-13 23:40:37 +00:00
(call m 'exec
(do-m m
(a <- (call m 'modify-and-return (lambda (x) (+ x 5))))
(call m 'modify (lambda (x) (+ x a))))
3))))
2014-05-13 23:31:15 +00:00
2014-05-12 04:12:26 +00:00
(deftest exec-fail
(is-throw #(error value)
2014-07-10 01:19:14 +00:00
(let ((m (: calrissian-state-transformer new 'calrissian-identity-monad)))
2014-05-12 04:12:26 +00:00
(call m 'exec
(call m 'fail 'value)
'undefined))))