aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/monads/test.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/monads/test.clj')
-rw-r--r--src/clojure/contrib/monads/test.clj15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/clojure/contrib/monads/test.clj b/src/clojure/contrib/monads/test.clj
index b63b8946..661fd2a4 100644
--- a/src/clojure/contrib/monads/test.clj
+++ b/src/clojure/contrib/monads/test.clj
@@ -1,7 +1,7 @@
;; Test routines for monads.clj
;; by Konrad Hinsen
-;; last updated December 31, 2008
+;; last updated January 12, 2009
;; Copyright (c) Konrad Hinsen, 2008. All rights reserved. The use
;; and distribution terms for this software are covered by the Eclipse
@@ -12,7 +12,9 @@
;; remove this notice, or any other, from this software.
(ns clojure.contrib.test-monads
- (:use clojure.contrib.test-is clojure.contrib.monads))
+ (:use clojure.contrib.test-is
+ clojure.contrib.monads
+ clojure.contrib.macros))
(deftest sequence-monad
(with-monad sequence
@@ -44,4 +46,13 @@
(m-plus m-zero (m-result 1) m-zero (m-result 2))
(m-result 1)))))
+(deftest seq-maybe-monad
+ (with-monad (maybe-t sequence)
+ (letfn [pairs [xs] ((m-lift 2 #(list %1 %2)) xs xs)]
+ (are (= _1 _2)
+ ((m-lift 1 inc) (for [n (range 10)] (when (odd? n) n)))
+ '(nil 2 nil 4 nil 6 nil 8 nil 10)
+ (pairs (for [n (range 5)] (when (odd? n) n)))
+ '(nil nil (1 1) nil (1 3) nil nil nil (3 1) nil (3 3) nil nil)))))
+
(run-tests)