aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-03-18 21:58:20 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-03-18 21:58:20 +0100
commit1089a1fce8c97a0ddde6ad74a7d6ba62bb36928c (patch)
tree62dbaebc95caa07bc43f1a9145b9bbdfd0110ab7
parentAdd texinfo generation from source. (diff)
downloadscheme-monad-1089a1fce8c97a0ddde6ad74a7d6ba62bb36928c.tar.gz
scheme-monad-1089a1fce8c97a0ddde6ad74a7d6ba62bb36928c.tar.xz
Added some tests.
-rwxr-xr-xtests/test.scm53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/test.scm b/tests/test.scm
new file mode 100755
index 0000000..6ce798e
--- /dev/null
+++ b/tests/test.scm
@@ -0,0 +1,53 @@
+#!/usr/bin/guile \
+-s
+!#
+
+(add-to-load-path (dirname (dirname (current-filename))))
+
+(use-modules (srfi srfi-64))
+
+(use-modules (monad)
+ (monad optional))
+
+(define (div d)
+ (if (zero? d)
+ (nothing)
+ (just (/ 1 d))))
+
+(test-begin "mapM-test")
+
+(test-assert (equal? (mapM div '(1 2 3))
+ (just '(1 1/2 1/3))))
+
+(test-assert (equal? (mapM div (map just '(1 2 3)))
+ (just '(1 1/2 1/3))))
+
+;;; --------------------------------------------------
+
+(test-assert (equal? (mapM div '(0 1 2 3))
+ (nothing)))
+
+(test-assert (equal? (mapM div (map just '(0 1 2 3)))
+ (nothing)))
+
+(test-end "mapM-test")
+
+(test-begin "state-test")
+
+(use-modules (monad state)
+ (monad stack))
+
+(test-equal (run-state (return-state 10) 20)
+ '(10 20))
+
+(test-equal
+ (car
+ (run-state
+ (do let y = 7
+ (modify (lambda (x) (+ x y)))
+ (get))
+ 10))
+ 17)
+
+
+(test-end "state-test")