diff options
Diffstat (limited to 'src/clojure/contrib/test_clojure/control.clj')
-rw-r--r-- | src/clojure/contrib/test_clojure/control.clj | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/src/clojure/contrib/test_clojure/control.clj b/src/clojure/contrib/test_clojure/control.clj index 483250d7..134711c8 100644 --- a/src/clojure/contrib/test_clojure/control.clj +++ b/src/clojure/contrib/test_clojure/control.clj @@ -10,17 +10,59 @@ ;; (ns clojure.contrib.test-clojure.control - (:use clojure.contrib.test-is)) + (:use clojure.contrib.test-is + [clojure.contrib.test-clojure.test-utils :only (exception)])) + +;; *** Helper functions *** + +(defn maintains-identity [f] + (are (= (f _) _) + nil + false true + 0 42 + 0.0 3.14 + 2/3 + 0M 1M + \c + "" "abc" + 'sym + :kw + () '(1 2) + [] [1 2] + {} {:a 1 :b 2} + #{} #{1 2} )) + ; http://clojure.org/special_forms ; http://clojure.org/macros -; do +(deftest test-do + (are (= _1 _2) + ; no params => nil + (do) nil + + ; return last + (do 1) 1 + (do 1 2) 2 + (do 1 2 3 4 5) 5 + + ; evaluate and return last + (let [a (atom 0)] + (do (reset! a (+ @a 1)) ; 1 + (reset! a (+ @a 1)) ; 2 + (reset! a (+ @a 1)) ; 3 + @a)) 3 ) + + ; identity (= (do x) x) + (maintains-identity (fn [_] (do _))) ) + + ; loop/recur ; throw, try ; [if (logic.clj)], if-not, if-let ; when, when-not, when-let, when-first + ; cond, condp ; [for, doseq (for.clj)] |