diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-03-18 21:58:20 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-03-18 21:58:20 +0100 |
commit | 1089a1fce8c97a0ddde6ad74a7d6ba62bb36928c (patch) | |
tree | 62dbaebc95caa07bc43f1a9145b9bbdfd0110ab7 /tests/test.scm | |
parent | Add texinfo generation from source. (diff) | |
download | scheme-monad-1089a1fce8c97a0ddde6ad74a7d6ba62bb36928c.tar.gz scheme-monad-1089a1fce8c97a0ddde6ad74a7d6ba62bb36928c.tar.xz |
Added some tests.
Diffstat (limited to '')
-rwxr-xr-x | tests/test.scm | 53 |
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") |