aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/test_clojure
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/test_clojure')
-rw-r--r--src/clojure/contrib/test_clojure/agents.clj41
-rw-r--r--src/clojure/contrib/test_clojure/atoms.clj18
-rw-r--r--src/clojure/contrib/test_clojure/clojure_main.clj18
-rw-r--r--src/clojure/contrib/test_clojure/clojure_set.clj117
-rw-r--r--src/clojure/contrib/test_clojure/clojure_xml.clj18
-rw-r--r--src/clojure/contrib/test_clojure/clojure_zip.clj45
-rw-r--r--src/clojure/contrib/test_clojure/compilation.clj36
-rw-r--r--src/clojure/contrib/test_clojure/control.clj114
-rw-r--r--src/clojure/contrib/test_clojure/data_structures.clj735
-rw-r--r--src/clojure/contrib/test_clojure/evaluation.clj230
-rw-r--r--src/clojure/contrib/test_clojure/for.clj123
-rw-r--r--src/clojure/contrib/test_clojure/java_interop.clj404
-rw-r--r--src/clojure/contrib/test_clojure/logic.clj202
-rw-r--r--src/clojure/contrib/test_clojure/macros.clj16
-rw-r--r--src/clojure/contrib/test_clojure/metadata.clj17
-rw-r--r--src/clojure/contrib/test_clojure/multimethods.clj25
-rw-r--r--src/clojure/contrib/test_clojure/ns_libs.clj26
-rw-r--r--src/clojure/contrib/test_clojure/numbers.clj390
-rw-r--r--src/clojure/contrib/test_clojure/other_functions.clj57
-rw-r--r--src/clojure/contrib/test_clojure/parallel.clj26
-rw-r--r--src/clojure/contrib/test_clojure/predicates.clj139
-rw-r--r--src/clojure/contrib/test_clojure/printer.clj81
-rw-r--r--src/clojure/contrib/test_clojure/reader.clj203
-rw-r--r--src/clojure/contrib/test_clojure/refs.clj19
-rw-r--r--src/clojure/contrib/test_clojure/sequences.clj982
-rw-r--r--src/clojure/contrib/test_clojure/special.clj21
-rw-r--r--src/clojure/contrib/test_clojure/test_utils.clj33
-rw-r--r--src/clojure/contrib/test_clojure/vars.clj34
28 files changed, 0 insertions, 4170 deletions
diff --git a/src/clojure/contrib/test_clojure/agents.clj b/src/clojure/contrib/test_clojure/agents.clj
deleted file mode 100644
index 34dfb2a1..00000000
--- a/src/clojure/contrib/test_clojure/agents.clj
+++ /dev/null
@@ -1,41 +0,0 @@
-;; Copyright (c) Shawn Hoover. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.agents
- (:use clojure.contrib.test-is))
-
-(deftest handle-all-throwables-during-agent-actions
- ;; Bug fixed in r1198; previously hung Clojure or didn't report agent errors
- ;; after OutOfMemoryError, yet wouldn't execute new actions.
- (let [agt (agent nil)]
- (send agt (fn [state] (throw (Throwable. "just testing Throwables"))))
- (try
- ;; Let the action finish; eat the "agent has errors" error that bubbles up
- (await agt)
- (catch RuntimeException _))
- (is (instance? Throwable (first (agent-errors agt))))
- (is (= 1 (count (agent-errors agt))))
-
- ;; And now send an action that should work
- (clear-agent-errors agt)
- (is (= nil @agt))
- (send agt nil?)
- (await agt)
- (is (true? @agt))))
-
-
-; http://clojure.org/agents
-
-; agent
-; deref, @-reader-macro, agent-errors
-; send send-off clear-agent-errors
-; await await-for
-; set-validator get-validator
-; add-watch remove-watch
-; shutdown-agents
-
diff --git a/src/clojure/contrib/test_clojure/atoms.clj b/src/clojure/contrib/test_clojure/atoms.clj
deleted file mode 100644
index 0b0dbd91..00000000
--- a/src/clojure/contrib/test_clojure/atoms.clj
+++ /dev/null
@@ -1,18 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.atoms
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/atoms
-
-; atom
-; deref, @-reader-macro
-; swap! reset!
-; compare-and-set!
-
diff --git a/src/clojure/contrib/test_clojure/clojure_main.clj b/src/clojure/contrib/test_clojure/clojure_main.clj
deleted file mode 100644
index f1a96465..00000000
--- a/src/clojure/contrib/test_clojure/clojure_main.clj
+++ /dev/null
@@ -1,18 +0,0 @@
-;; Copyright (c) Shawn Hoover. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.clojure-main
- (:use [clojure.contrib.java-utils :only (with-system-properties)]
- clojure.contrib.test-is)
- (:require [clojure.main :as main]))
-
-(deftest compile-path-respects-java-property
- ;; Bug fixed in r1177; previously was hardwired to the compile-time path.
- (with-system-properties {:clojure.compile.path "compile path test"}
- (main/with-bindings
- (is (= "compile path test" *compile-path*)))))
diff --git a/src/clojure/contrib/test_clojure/clojure_set.clj b/src/clojure/contrib/test_clojure/clojure_set.clj
deleted file mode 100644
index 3e698406..00000000
--- a/src/clojure/contrib/test_clojure/clojure_set.clj
+++ /dev/null
@@ -1,117 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.clojure-set
- (:use clojure.contrib.test-is)
- (:require [clojure.set :as set]))
-
-
-(deftest test-union
- (are [x y] (= x y)
- (set/union) #{}
-
- ; identity
- (set/union #{}) #{}
- (set/union #{1}) #{1}
- (set/union #{1 2 3}) #{1 2 3}
-
- ; 2 sets, at least one is empty
- (set/union #{} #{}) #{}
- (set/union #{} #{1}) #{1}
- (set/union #{} #{1 2 3}) #{1 2 3}
- (set/union #{1} #{}) #{1}
- (set/union #{1 2 3} #{}) #{1 2 3}
-
- ; 2 sets
- (set/union #{1} #{2}) #{1 2}
- (set/union #{1} #{1 2}) #{1 2}
- (set/union #{2} #{1 2}) #{1 2}
- (set/union #{1 2} #{3}) #{1 2 3}
- (set/union #{1 2} #{2 3}) #{1 2 3}
-
- ; 3 sets, some are empty
- (set/union #{} #{} #{}) #{}
- (set/union #{1} #{} #{}) #{1}
- (set/union #{} #{1} #{}) #{1}
- (set/union #{} #{} #{1}) #{1}
- (set/union #{1 2} #{2 3} #{}) #{1 2 3}
-
- ; 3 sets
- (set/union #{1 2} #{3 4} #{5 6}) #{1 2 3 4 5 6}
- (set/union #{1 2} #{2 3} #{1 3 4}) #{1 2 3 4}
-
- ; different data types
- (set/union #{1 2} #{:a :b} #{nil} #{false true} #{\c "abc"} #{[] [1 2]}
- #{{} {:a 1}} #{#{} #{1 2}})
- #{1 2 :a :b nil false true \c "abc" [] [1 2] {} {:a 1} #{} #{1 2}}
-
- ; different types of sets
- (set/union (hash-set) (hash-set 1 2) (hash-set 2 3))
- (hash-set 1 2 3)
- (set/union (sorted-set) (sorted-set 1 2) (sorted-set 2 3))
- (sorted-set 1 2 3)
- (set/union (hash-set) (hash-set 1 2) (hash-set 2 3)
- (sorted-set) (sorted-set 4 5) (sorted-set 5 6))
- (hash-set 1 2 3 4 5 6) ; also equals (sorted-set 1 2 3 4 5 6)
-))
-
-
-(deftest test-intersection
- ; at least one argument is needed
- (is (thrown? IllegalArgumentException (set/intersection)))
-
- (are [x y] (= x y)
- ; identity
- (set/intersection #{}) #{}
- (set/intersection #{1}) #{1}
- (set/intersection #{1 2 3}) #{1 2 3}
-
- ; 2 sets, at least one is empty
- (set/intersection #{} #{}) #{}
- (set/intersection #{} #{1}) #{}
- (set/intersection #{} #{1 2 3}) #{}
- (set/intersection #{1} #{}) #{}
- (set/intersection #{1 2 3} #{}) #{}
-
- ; 2 sets
- (set/intersection #{1 2} #{1 2}) #{1 2}
- (set/intersection #{1 2} #{3 4}) #{}
- (set/intersection #{1 2} #{1}) #{1}
- (set/intersection #{1 2} #{2}) #{2}
- (set/intersection #{1 2 4} #{2 3 4 5}) #{2 4}
-
- ; 3 sets, some are empty
- (set/intersection #{} #{} #{}) #{}
- (set/intersection #{1} #{} #{}) #{}
- (set/intersection #{1} #{1} #{}) #{}
- (set/intersection #{1} #{} #{1}) #{}
- (set/intersection #{1 2} #{2 3} #{}) #{}
-
- ; 3 sets
- (set/intersection #{1 2} #{2 3} #{5 2}) #{2}
- (set/intersection #{1 2 3} #{1 3 4} #{1 3}) #{1 3}
- (set/intersection #{1 2 3} #{3 4 5} #{8 2 3}) #{3}
-
- ; different types of sets
- (set/intersection (hash-set 1 2) (hash-set 2 3)) #{2}
- (set/intersection (sorted-set 1 2) (sorted-set 2 3)) #{2}
- (set/intersection
- (hash-set 1 2) (hash-set 2 3)
- (sorted-set 1 2) (sorted-set 2 3)) #{2} ))
-
-
-; difference
-;
-; select
-; project
-; rename-keys
-; rename
-; index
-; map-invert
-; join
-
diff --git a/src/clojure/contrib/test_clojure/clojure_xml.clj b/src/clojure/contrib/test_clojure/clojure_xml.clj
deleted file mode 100644
index ebcddc81..00000000
--- a/src/clojure/contrib/test_clojure/clojure_xml.clj
+++ /dev/null
@@ -1,18 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.clojure-xml
- (:use clojure.contrib.test-is)
- (:require [clojure.xml :as xml]))
-
-
-; parse
-
-; emit-element
-; emit
-
diff --git a/src/clojure/contrib/test_clojure/clojure_zip.clj b/src/clojure/contrib/test_clojure/clojure_zip.clj
deleted file mode 100644
index b400c863..00000000
--- a/src/clojure/contrib/test_clojure/clojure_zip.clj
+++ /dev/null
@@ -1,45 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.clojure-zip
- (:use clojure.contrib.test-is)
- (:require [clojure.zip :as zip]))
-
-
-; zipper
-;
-; seq-zip
-; vector-zip
-; xml-zip
-;
-; node
-; branch?
-; children
-; make-node
-; path
-; lefts
-; rights
-; down
-; up
-; root
-; right
-; rightmost
-; left
-; leftmost
-;
-; insert-left
-; insert-right
-; replace
-; edit
-; insert-child
-; append-child
-; next
-; prev
-; end?
-; remove
-
diff --git a/src/clojure/contrib/test_clojure/compilation.clj b/src/clojure/contrib/test_clojure/compilation.clj
deleted file mode 100644
index d3e59a7a..00000000
--- a/src/clojure/contrib/test_clojure/compilation.clj
+++ /dev/null
@@ -1,36 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.compilation
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/compilation
-
-; compile
-; gen-class, gen-interface
-
-
-(deftest test-compiler-metadata
- (let [m ^#'when]
- (are [x y] (= x y)
- (list? (:arglists m)) true
- (> (count (:arglists m)) 0) true
-
- (string? (:doc m)) true
- (> (.length (:doc m)) 0) true
-
- (string? (:file m)) true
- (> (.length (:file m)) 0) true
-
- (integer? (:line m)) true
- (> (:line m) 0) true
-
- (:macro m) true
- (:name m) 'when )))
-
-
diff --git a/src/clojure/contrib/test_clojure/control.clj b/src/clojure/contrib/test_clojure/control.clj
deleted file mode 100644
index 79bf93fb..00000000
--- a/src/clojure/contrib/test_clojure/control.clj
+++ /dev/null
@@ -1,114 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; Test "flow control" constructs.
-;;
-
-(ns clojure.contrib.test-clojure.control
- (:use clojure.contrib.test-is
- [clojure.contrib.test-clojure.test-utils :only (exception)]))
-
-;; *** Helper functions ***
-
-(defn maintains-identity [f]
- (are [x] (= (f x) x)
- 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
-
-(deftest test-do
- (are [x y] (= x y)
- ; 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
-
-
-(deftest test-cond
- (are [x y] (= x y)
- (cond) nil
-
- (cond nil true) nil
- (cond false true) nil
-
- (cond true 1 true (exception)) 1
- (cond nil 1 false 2 true 3 true 4) 3
- (cond nil 1 false 2 true 3 true (exception)) 3 )
-
- ; false
- (are [x] (= (cond x :a true :b) :b)
- nil false )
-
- ; true
- (are [x] (= (cond x :a true :b) :a)
- 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} )
-
- ; evaluation
- (are [x y] (= x y)
- (cond (> 3 2) (+ 1 2) true :result true (exception)) 3
- (cond (< 3 2) (+ 1 2) true :result true (exception)) :result )
-
- ; identity (= (cond true x) x)
- (maintains-identity (fn [_] (cond true _))) )
-
-
-; condp
-
-; [for, doseq (for.clj)]
-
-; dotimes, while
-
-; locking, monitor-enter, monitor-exit
-
diff --git a/src/clojure/contrib/test_clojure/data_structures.clj b/src/clojure/contrib/test_clojure/data_structures.clj
deleted file mode 100644
index 7ca8f4e6..00000000
--- a/src/clojure/contrib/test_clojure/data_structures.clj
+++ /dev/null
@@ -1,735 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-
-(ns clojure.contrib.test-clojure.data-structures
- (:use clojure.contrib.test-is
- [clojure.contrib.test-clojure.test-utils :only (all-are)]))
-
-
-;; *** Helper functions ***
-
-(defn diff [s1 s2]
- (seq (reduce disj (set s1) (set s2))))
-
-
-;; *** General ***
-
-(defstruct equality-struct :a :b)
-
-(deftest test-equality
- ; nil is not equal to any other value
- (are [x] (not (= nil x))
- true false
- 0 0.0
- \space
- "" #""
- () [] #{} {}
- (lazy-seq nil) ; SVN 1292: fixed (= (lazy-seq nil) nil)
- (lazy-seq ())
- (lazy-seq [])
- (lazy-seq {})
- (lazy-seq #{})
- (lazy-seq "")
- (lazy-seq (into-array []))
- (new Object) )
-
- ; numbers equality across types (see tests below - NOT IMPLEMENTED YET)
-
- ; ratios
- (is (= 1/2 0.5))
- (is (= 1/1000 0.001))
- (is (not= 2/3 0.6666666666666666))
-
- ; vectors equal other seqs by items equality
- (are [x y] (= x y)
- '() [] ; regression fixed in r1208; was not equal
- '(1) [1]
- '(1 2) [1 2]
-
- [] '() ; same again, but vectors first
- [1] '(1)
- [1 2] '(1 2) )
- (is (not= [1 2] '(2 1))) ; order of items matters
-
- ; list and vector vs. set and map
- (are [x y] (not= x y)
- ; only () equals []
- () #{}
- () {}
- [] #{}
- [] {}
- #{} {}
- ; only '(1) equals [1]
- '(1) #{1}
- [1] #{1} )
-
- ; sorted-map, hash-map and array-map - classes differ, but content is equal
-
-;; TODO: reimplement all-are with new do-template?
-;; (all-are (not= (class _1) (class _2))
-;; (sorted-map :a 1)
-;; (hash-map :a 1)
-;; (array-map :a 1))
-;; (all-are (= _1 _2)
-;; (sorted-map)
-;; (hash-map)
-;; (array-map))
-;; (all-are (= _1 _2)
-;; (sorted-map :a 1)
-;; (hash-map :a 1)
-;; (array-map :a 1))
-;; (all-are (= _1 _2)
-;; (sorted-map :a 1 :z 3 :c 2)
-;; (hash-map :a 1 :z 3 :c 2)
-;; (array-map :a 1 :z 3 :c 2))
-
- ; struct-map vs. sorted-map, hash-map and array-map
- (are [x] (and (not= (class (struct equality-struct 1 2)) (class x))
- (= (struct equality-struct 1 2) x))
- (sorted-map :a 1 :b 2)
- (hash-map :a 1 :b 2)
- (array-map :a 1 :b 2))
-
- ; sorted-set vs. hash-set
- (is (not= (class (sorted-set 1)) (class (hash-set 1))))
- (are [x y] (= x y)
- (sorted-set) (hash-set)
- (sorted-set 1) (hash-set 1)
- (sorted-set 3 2 1) (hash-set 3 2 1) ))
-
-
-;; *** Collections ***
-
-(deftest test-count
- (are [x y] (= x y)
- (count nil) 0
-
- (count ()) 0
- (count '(1)) 1
- (count '(1 2 3)) 3
-
- (count []) 0
- (count [1]) 1
- (count [1 2 3]) 3
-
- (count #{}) 0
- (count #{1}) 1
- (count #{1 2 3}) 3
-
- (count {}) 0
- (count {:a 1}) 1
- (count {:a 1 :b 2 :c 3}) 3
-
- (count "") 0
- (count "a") 1
- (count "abc") 3
-
- (count (into-array [])) 0
- (count (into-array [1])) 1
- (count (into-array [1 2 3])) 3
-
- (count (java.util.ArrayList. [])) 0
- (count (java.util.ArrayList. [1])) 1
- (count (java.util.ArrayList. [1 2 3])) 3
-
- (count (java.util.HashMap. {})) 0
- (count (java.util.HashMap. {:a 1})) 1
- (count (java.util.HashMap. {:a 1 :b 2 :c 3})) 3 )
-
- ; different types
- (are [x] (= (count [x]) 1)
- nil true false
- 0 0.0 "" \space
- () [] #{} {} ))
-
-
-(deftest test-conj
- ; doesn't work on strings or arrays
- (is (thrown? ClassCastException (conj "" \a)))
- (is (thrown? ClassCastException (conj (into-array []) 1)))
-
- (are [x y] (= x y)
- (conj nil 1) '(1)
- (conj nil 3 2 1) '(1 2 3)
-
- (conj nil nil) '(nil)
- (conj nil nil nil) '(nil nil)
- (conj nil nil nil 1) '(1 nil nil)
-
- ; list -> conj puts the item at the front of the list
- (conj () 1) '(1)
- (conj () 1 2) '(2 1)
-
- (conj '(2 3) 1) '(1 2 3)
- (conj '(2 3) 1 4 3) '(3 4 1 2 3)
-
- (conj () nil) '(nil)
- (conj () ()) '(())
-
- ; vector -> conj puts the item at the end of the vector
- (conj [] 1) [1]
- (conj [] 1 2) [1 2]
-
- (conj [2 3] 1) [2 3 1]
- (conj [2 3] 1 4 3) [2 3 1 4 3]
-
- (conj [] nil) [nil]
- (conj [] []) [[]]
-
- ; map -> conj expects another (possibly single entry) map as the item,
- ; and returns a new map which is the old map plus the entries
- ; from the new, which may overwrite entries of the old.
- ; conj also accepts a MapEntry or a vector of two items (key and value).
- (conj {} {}) {}
- (conj {} {:a 1}) {:a 1}
- (conj {} {:a 1 :b 2}) {:a 1 :b 2}
- (conj {} {:a 1 :b 2} {:c 3}) {:a 1 :b 2 :c 3}
- (conj {} {:a 1 :b 2} {:a 3 :c 4}) {:a 3 :b 2 :c 4}
-
- (conj {:a 1} {:a 7}) {:a 7}
- (conj {:a 1} {:b 2}) {:a 1 :b 2}
- (conj {:a 1} {:a 7 :b 2}) {:a 7 :b 2}
- (conj {:a 1} {:a 7 :b 2} {:c 3}) {:a 7 :b 2 :c 3}
- (conj {:a 1} {:a 7 :b 2} {:b 4 :c 5}) {:a 7 :b 4 :c 5}
-
- (conj {} (first {:a 1})) {:a 1} ; MapEntry
- (conj {:a 1} (first {:b 2})) {:a 1 :b 2}
- (conj {:a 1} (first {:a 7})) {:a 7}
- (conj {:a 1} (first {:b 2}) (first {:a 5})) {:a 5 :b 2}
-
- (conj {} [:a 1]) {:a 1} ; vector
- (conj {:a 1} [:b 2]) {:a 1 :b 2}
- (conj {:a 1} [:a 7]) {:a 7}
- (conj {:a 1} [:b 2] [:a 5]) {:a 5 :b 2}
-
- (conj {} {nil {}}) {nil {}}
- (conj {} {{} nil}) {{} nil}
- (conj {} {{} {}}) {{} {}}
-
- ; set
- (conj #{} 1) #{1}
- (conj #{} 1 2 3) #{1 2 3}
-
- (conj #{2 3} 1) #{3 1 2}
- (conj #{3 2} 1) #{1 2 3}
-
- (conj #{2 3} 2) #{2 3}
- (conj #{2 3} 2 3) #{2 3}
- (conj #{2 3} 4 1 2 3) #{1 2 3 4}
-
- (conj #{} nil) #{nil}
- (conj #{} #{}) #{#{}} ))
-
-
-;; *** Lists and Vectors ***
-
-(deftest test-peek
- ; doesn't work for sets and maps
- (is (thrown? ClassCastException (peek #{1})))
- (is (thrown? ClassCastException (peek {:a 1})))
-
- (are [x y] (= x y)
- (peek nil) nil
-
- ; list = first
- (peek ()) nil
- (peek '(1)) 1
- (peek '(1 2 3)) 1
-
- (peek '(nil)) nil ; special cases
- (peek '(1 nil)) 1
- (peek '(nil 2)) nil
- (peek '(())) ()
- (peek '(() nil)) ()
- (peek '(() 2 nil)) ()
-
- ; vector = last
- (peek []) nil
- (peek [1]) 1
- (peek [1 2 3]) 3
-
- (peek [nil]) nil ; special cases
- (peek [1 nil]) nil
- (peek [nil 2]) 2
- (peek [[]]) []
- (peek [[] nil]) nil
- (peek [[] 2 nil]) nil ))
-
-
-(deftest test-pop
- ; doesn't work for sets and maps
- (is (thrown? ClassCastException (pop #{1})))
- (is (thrown? ClassCastException (pop #{:a 1})))
-
- ; collection cannot be empty
- (is (thrown? IllegalStateException (pop ())))
- (is (thrown? IllegalStateException (pop [])))
-
- (are [x y] (= x y)
- (pop nil) nil
-
- ; list - pop first
- (pop '(1)) ()
- (pop '(1 2 3)) '(2 3)
-
- (pop '(nil)) ()
- (pop '(1 nil)) '(nil)
- (pop '(nil 2)) '(2)
- (pop '(())) ()
- (pop '(() nil)) '(nil)
- (pop '(() 2 nil)) '(2 nil)
-
- ; vector - pop last
- (pop [1]) []
- (pop [1 2 3]) [1 2]
-
- (pop [nil]) []
- (pop [1 nil]) [1]
- (pop [nil 2]) [nil]
- (pop [[]]) []
- (pop [[] nil]) [[]]
- (pop [[] 2 nil]) [[] 2] ))
-
-
-;; *** Lists (IPersistentList) ***
-
-(deftest test-list
- (are [x] (list? x)
- ()
- '()
- (list)
- (list 1 2 3) )
-
- ; order is important
- (are [x y] (not (= x y))
- (list 1 2) (list 2 1)
- (list 3 1 2) (list 1 2 3) )
-
- (are [x y] (= x y)
- '() ()
- (list) '()
- (list 1) '(1)
- (list 1 2) '(1 2)
-
- ; nesting
- (list 1 (list 2 3) (list 3 (list 4 5 (list 6 (list 7)))))
- '(1 (2 3) (3 (4 5 (6 (7)))))
-
- ; different data structures
- (list true false nil)
- '(true false nil)
- (list 1 2.5 2/3 "ab" \x 'cd :kw)
- '(1 2.5 2/3 "ab" \x cd :kw)
- (list (list 1 2) [3 4] {:a 1 :b 2} #{:c :d})
- '((1 2) [3 4] {:a 1 :b 2} #{:c :d})
-
- ; evaluation
- (list (+ 1 2) [(+ 2 3) 'a] (list (* 2 3) 8))
- '(3 [5 a] (6 8))
-
- ; special cases
- (list nil) '(nil)
- (list 1 nil) '(1 nil)
- (list nil 2) '(nil 2)
- (list ()) '(())
- (list 1 ()) '(1 ())
- (list () 2) '(() 2) ))
-
-
-;; *** Maps (IPersistentMap) ***
-
-(deftest test-find
- (are [x y] (= x y)
- (find {} :a) nil
-
- (find {:a 1} :a) [:a 1]
- (find {:a 1} :b) nil
-
- (find {:a 1 :b 2} :a) [:a 1]
- (find {:a 1 :b 2} :b) [:b 2]
- (find {:a 1 :b 2} :c) nil
-
- (find {} nil) nil
- (find {:a 1} nil) nil
- (find {:a 1 :b 2} nil) nil ))
-
-
-(deftest test-contains?
- ; contains? is designed to work preferably on maps and sets
- (are [x y] (= x y)
- (contains? {} :a) false
- (contains? {} nil) false
-
- (contains? {:a 1} :a) true
- (contains? {:a 1} :b) false
- (contains? {:a 1} nil) false
-
- (contains? {:a 1 :b 2} :a) true
- (contains? {:a 1 :b 2} :b) true
- (contains? {:a 1 :b 2} :c) false
- (contains? {:a 1 :b 2} nil) false
-
- ; sets
- (contains? #{} 1) false
- (contains? #{} nil) false
-
- (contains? #{1} 1) true
- (contains? #{1} 2) false
- (contains? #{1} nil) false
-
- (contains? #{1 2 3} 1) true
- (contains? #{1 2 3} 3) true
- (contains? #{1 2 3} 10) false
- (contains? #{1 2 3} nil) false)
-
- ; numerically indexed collections (e.g. vectors and Java arrays)
- ; => test if the numeric key is WITHIN THE RANGE OF INDEXES
- (are [x y] (= x y)
- (contains? [] 0) false
- (contains? [] -1) false
- (contains? [] 1) false
-
- (contains? [1] 0) true
- (contains? [1] -1) false
- (contains? [1] 1) false
-
- (contains? [1 2 3] 0) true
- (contains? [1 2 3] 2) true
- (contains? [1 2 3] 3) false
- (contains? [1 2 3] -1) false
-
- ; arrays
- (contains? (into-array []) 0) false
- (contains? (into-array []) -1) false
- (contains? (into-array []) 1) false
-
- (contains? (into-array [1]) 0) true
- (contains? (into-array [1]) -1) false
- (contains? (into-array [1]) 1) false
-
- (contains? (into-array [1 2 3]) 0) true
- (contains? (into-array [1 2 3]) 2) true
- (contains? (into-array [1 2 3]) 3) false
- (contains? (into-array [1 2 3]) -1) false)
-
- ; 'contains?' operates constant or logarithmic time,
- ; it WILL NOT perform a linear search for a value.
- (are [x] (= x false)
- (contains? '(1 2 3) 0)
- (contains? '(1 2 3) 1)
- (contains? '(1 2 3) 3)
- (contains? '(1 2 3) 10)
- (contains? '(1 2 3) nil)
- (contains? '(1 2 3) ()) ))
-
-
-(deftest test-keys
- (are [x y] (= x y) ; other than map data structures
- (keys ()) nil
- (keys []) nil
- (keys #{}) nil
- (keys "") nil )
-
- (are [x y] (= x y)
- ; (class {:a 1}) => clojure.lang.PersistentArrayMap
- (keys {}) nil
- (keys {:a 1}) '(:a)
- (diff (keys {:a 1 :b 2}) '(:a :b)) nil ; (keys {:a 1 :b 2}) '(:a :b)
-
- ; (class (sorted-map :a 1)) => clojure.lang.PersistentTreeMap
- (keys (sorted-map)) nil
- (keys (sorted-map :a 1)) '(:a)
- (diff (keys (sorted-map :a 1 :b 2)) '(:a :b)) nil ; (keys (sorted-map :a 1 :b 2)) '(:a :b)
-
- ; (class (hash-map :a 1)) => clojure.lang.PersistentHashMap
- (keys (hash-map)) nil
- (keys (hash-map :a 1)) '(:a)
- (diff (keys (hash-map :a 1 :b 2)) '(:a :b)) nil )) ; (keys (hash-map :a 1 :b 2)) '(:a :b)
-
-
-(deftest test-vals
- (are [x y] (= x y) ; other than map data structures
- (vals ()) nil
- (vals []) nil
- (vals #{}) nil
- (vals "") nil )
-
- (are [x y] (= x y)
- ; (class {:a 1}) => clojure.lang.PersistentArrayMap
- (vals {}) nil
- (vals {:a 1}) '(1)
- (diff (vals {:a 1 :b 2}) '(1 2)) nil ; (vals {:a 1 :b 2}) '(1 2)
-
- ; (class (sorted-map :a 1)) => clojure.lang.PersistentTreeMap
- (vals (sorted-map)) nil
- (vals (sorted-map :a 1)) '(1)
- (diff (vals (sorted-map :a 1 :b 2)) '(1 2)) nil ; (vals (sorted-map :a 1 :b 2)) '(1 2)
-
- ; (class (hash-map :a 1)) => clojure.lang.PersistentHashMap
- (vals (hash-map)) nil
- (vals (hash-map :a 1)) '(1)
- (diff (vals (hash-map :a 1 :b 2)) '(1 2)) nil )) ; (vals (hash-map :a 1 :b 2)) '(1 2)
-
-
-(deftest test-key
- (are [x] (= (key (first (hash-map x :value))) x)
- 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} ))
-
-
-(deftest test-val
- (are [x] (= (val (first (hash-map :key x))) x)
- 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} ))
-
-
-;; *** Sets ***
-
-(deftest test-hash-set
- (are [x] (set? x)
- #{}
- #{1 2}
- (hash-set)
- (hash-set 1 2) )
-
- ; order isn't important
- (are [x y] (= x y)
- #{1 2} #{2 1}
- #{3 1 2} #{1 2 3}
- (hash-set 1 2) (hash-set 2 1)
- (hash-set 3 1 2) (hash-set 1 2 3) )
-
- ; equal and unique
- (are [x] (and (= (hash-set x) #{x})
- (= (hash-set x x) #{x}))
- 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} )
-
- (are [x y] (= x y)
- ; equal classes
- (class #{}) (class (hash-set))
- (class #{1 2}) (class (hash-set 1 2))
-
- ; creating
- (hash-set) #{}
- (hash-set 1) #{1}
- (hash-set 1 2) #{1 2}
-
- ; nesting
- (hash-set 1 (hash-set 2 3) (hash-set 3 (hash-set 4 5 (hash-set 6 (hash-set 7)))))
- #{1 #{2 3} #{3 #{4 5 #{6 #{7}}}}}
-
- ; different data structures
- (hash-set true false nil)
- #{true false nil}
- (hash-set 1 2.5 2/3 "ab" \x 'cd :kw)
- #{1 2.5 2/3 "ab" \x 'cd :kw}
- (hash-set (list 1 2) [3 4] {:a 1 :b 2} #{:c :d})
- #{'(1 2) [3 4] {:a 1 :b 2} #{:c :d}}
-
- ; evaluation
- (hash-set (+ 1 2) [(+ 2 3) :a] (hash-set (* 2 3) 8))
- #{3 [5 :a] #{6 8}}
-
- ; special cases
- (hash-set nil) #{nil}
- (hash-set 1 nil) #{1 nil}
- (hash-set nil 2) #{nil 2}
- (hash-set #{}) #{#{}}
- (hash-set 1 #{}) #{1 #{}}
- (hash-set #{} 2) #{#{} 2} ))
-
-
-(deftest test-sorted-set
- ; only compatible types can be used
- (is (thrown? ClassCastException (sorted-set 1 "a")))
- (is (thrown? ClassCastException (sorted-set '(1 2) [3 4])))
-
- ; creates set?
- (are [x] (set? x)
- (sorted-set)
- (sorted-set 1 2) )
-
- ; equal and unique
- (are [x] (and (= (sorted-set x) #{x})
- (= (sorted-set x x) (sorted-set x)))
- 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}
- )
- ; cannot be cast to java.lang.Comparable
- (is (thrown? ClassCastException (sorted-set '(1 2) '(1 2))))
- (is (thrown? ClassCastException (sorted-set {:a 1 :b 2} {:a 1 :b 2})))
- (is (thrown? ClassCastException (sorted-set #{1 2} #{1 2})))
-
- (are [x y] (= x y)
- ; generating
- (sorted-set) #{}
- (sorted-set 1) #{1}
- (sorted-set 1 2) #{1 2}
-
- ; sorting
- (seq (sorted-set 5 4 3 2 1)) '(1 2 3 4 5)
-
- ; special cases
- (sorted-set nil) #{nil}
- (sorted-set 1 nil) #{nil 1}
- (sorted-set nil 2) #{nil 2}
- (sorted-set #{}) #{#{}} ))
-
-
-(deftest test-set
- ; set?
- (are [x] (set? (set x))
- () '(1 2)
- [] [1 2]
- #{} #{1 2}
- {} {:a 1 :b 2}
- (into-array []) (into-array [1 2])
- "" "abc" )
-
- ; unique
- (are [x] (= (set [x x]) #{x})
- 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} )
-
- ; conversion
- (are [x y] (= (set x) y)
- () #{}
- '(1 2) #{1 2}
-
- [] #{}
- [1 2] #{1 2}
-
- #{} #{} ; identity
- #{1 2} #{1 2} ; identity
-
- {} #{}
- {:a 1 :b 2} #{[:a 1] [:b 2]}
-
- (into-array []) #{}
- (into-array [1 2]) #{1 2}
-
- "" #{}
- "abc" #{\a \b \c} ))
-
-
-(deftest test-disj
- ; doesn't work on lists, vectors or maps
- (is (thrown? ClassCastException (disj '(1 2) 1)))
- (is (thrown? ClassCastException (disj [1 2] 1)))
- (is (thrown? ClassCastException (disj {:a 1} :a)))
-
- ; identity
- (are [x] (= (disj x) x)
- #{}
- #{1 2 3}
- ; different data types
- #{nil
- false true
- 0 42
- 0.0 3.14
- 2/3
- 0M 1M
- \c
- "" "abc"
- 'sym
- :kw
- [] [1 2]
- {} {:a 1 :b 2}
- #{} #{1 2}} )
-
- ; type identity
- (are [x] (= (class (disj x)) (class x))
- (hash-set)
- (hash-set 1 2)
- (sorted-set)
- (sorted-set 1 2) )
-
- (are [x y] (= x y)
- (disj #{} :a) #{}
- (disj #{} :a :b) #{}
-
- (disj #{:a} :a) #{}
- (disj #{:a} :a :b) #{}
- (disj #{:a} :c) #{:a}
-
- (disj #{:a :b :c :d} :a) #{:b :c :d}
- (disj #{:a :b :c :d} :a :d) #{:b :c}
- (disj #{:a :b :c :d} :a :b :c) #{:d}
- (disj #{:a :b :c :d} :d :a :c :b) #{}
-
- (disj #{nil} :a) #{nil}
- (disj #{nil} #{}) #{nil}
- (disj #{nil} nil) #{}
-
- (disj #{#{}} nil) #{#{}}
- (disj #{#{}} #{}) #{}
- (disj #{#{nil}} #{nil}) #{} ))
-
-
diff --git a/src/clojure/contrib/test_clojure/evaluation.clj b/src/clojure/contrib/test_clojure/evaluation.clj
deleted file mode 100644
index fdd84bba..00000000
--- a/src/clojure/contrib/test_clojure/evaluation.clj
+++ /dev/null
@@ -1,230 +0,0 @@
-;; Copyright (c) J. McConnell. All rights reserved. The use and
-;; distribution terms for this software are covered by the Common Public
-;; License 1.0 (http://opensource.org/licenses/cpl.php) which can be found
-;; in the file CPL.TXT at the root of this distribution. By using this
-;; software in any fashion, you are agreeing to be bound by the terms of
-;; this license. You must not remove this notice, or any other, from this
-;; software.
-;;
-;; clojure.contrib.test-clojure.evaluation.clj
-;;
-;; Tests for the Clojure functions documented at the URL:
-;;
-;; http://clojure.org/Evaluation
-;;
-;; by J. McConnell, http://ubermenschconsulting.com
-;; Created 22 October 2008
-
-(ns clojure.contrib.test-clojure.evaluation
- (:use clojure.contrib.test-is))
-
-(import '(java.lang Boolean)
- '(clojure.lang Compiler Compiler$CompilerException))
-
-(defmacro test-that
- "Provides a useful way for specifying the purpose of tests. If the first-level
- forms are lists that make a call to a test-is function, it supplies the
- purpose as the msg argument to those functions. Otherwise, the purpose just
- acts like a comment and the forms are run unchanged."
- [purpose & test-forms]
- (let [tests (map
- #(if (= (:ns (meta (resolve (first %))))
- (the-ns 'clojure.contrib.test-is))
- (concat % (list purpose))
- %)
- test-forms)]
- `(do ~@tests)))
-
-(deftest Eval
- (is (= (eval '(+ 1 2 3)) (Compiler/eval '(+ 1 2 3))))
- (is (= (eval '(list 1 2 3)) '(1 2 3)))
- (is (= (eval '(list + 1 2 3)) (list clojure.core/+ 1 2 3)))
- (test-that "Non-closure fns are supported as code"
- (is (= (eval (eval '(list + 1 2 3))) 6)))
- (is (= (eval (list '+ 1 2 3)) 6)))
-
-; not using Clojure's RT/classForName since a bug in it could hide a bug in
-; eval's resolution
-(defn class-for-name [name]
- (java.lang.Class/forName name))
-
-(defmacro in-test-ns [& body]
- `(binding [*ns* *ns*]
- (in-ns 'clojure.contrib.test-clojure.evaluation)
- ~@body))
-
-;;; Literals tests ;;;
-
-(defmacro #^{:private true} evaluates-to-itself? [expr]
- `(let [v# ~expr
- q# (quote ~expr)]
- (is (= (eval q#) q#) (str q# " does not evaluate to itself"))))
-
-(deftest Literals
- ; Strings, numbers, characters, nil and keywords should evaluate to themselves
- (evaluates-to-itself? "test")
- (evaluates-to-itself? "test
- multi-line
- string")
- (evaluates-to-itself? 1)
- (evaluates-to-itself? 1.0)
- (evaluates-to-itself? 1.123456789)
- (evaluates-to-itself? 1/2)
- (evaluates-to-itself? 1M)
- (evaluates-to-itself? 999999999999999999)
- (evaluates-to-itself? \a)
- (evaluates-to-itself? \newline)
- (evaluates-to-itself? nil)
- (evaluates-to-itself? :test)
- ; Boolean literals should evaluate to Boolean.{TRUE|FALSE}
- (is (identical? (eval true) Boolean/TRUE))
- (is (identical? (eval false) Boolean/FALSE)))
-
-;;; Symbol resolution tests ;;;
-
-(def foo "abc")
-(in-ns 'resolution-test)
-(def bar 123)
-(def #^{:private true} baz 456)
-(in-ns 'clojure.contrib.test-clojure.evaluation)
-
-(defn a-match? [re s] (not (nil? (re-matches re s))))
-
-(defmacro throws-with-msg
- ([re form] `(throws-with-msg ~re ~form Exception))
- ([re form x] `(throws-with-msg
- ~re
- ~form
- ~(if (instance? Exception x) x Exception)
- ~(if (instance? String x) x nil)))
- ([re form class msg]
- `(let [ex# (try
- ~form
- (catch ~class e# e#)
- (catch Exception e#
- (let [cause# (.getCause e#)]
- (if (= ~class (class cause#)) cause# (throw e#)))))]
- (is (a-match? ~re (.toString ex#))
- (or ~msg
- (str "Expected exception that matched " (pr-str ~re)
- ", but got exception with message: \"" ex#))))))
-
-(deftest SymbolResolution
- (test-that
- "If a symbol is namespace-qualified, the evaluated value is the value
- of the binding of the global var named by the symbol"
- (is (= (eval 'resolution-test/bar) 123)))
-
- (test-that
- "It is an error if there is no global var named by the symbol"
- (throws-with-msg
- #".*Unable to resolve symbol: bar.*" (eval 'bar)))
-
- (test-that
- "It is an error if the symbol reference is to a non-public var in a
- different namespace"
- (throws-with-msg
- #".*resolution-test/baz is not public.*"
- (eval 'resolution-test/baz)
- Compiler$CompilerException))
-
- (test-that
- "If a symbol is package-qualified, its value is the Java class named by the
- symbol"
- (is (= (eval 'java.lang.Math) (class-for-name "java.lang.Math"))))
-
- (test-that
- "If a symbol is package-qualified, it is an error if there is no Class named
- by the symbol"
- (is (thrown? Compiler$CompilerException (eval 'java.lang.FooBar))))
-
- (test-that
- "If a symbol is not qualified, the following applies, in this order:
-
- 1. If it names a special form it is considered a special form, and must
- be utilized accordingly.
-
- 2. A lookup is done in the current namespace to see if there is a mapping
- from the symbol to a class. If so, the symbol is considered to name a
- Java class object.
-
- 3. If in a local scope (i.e. in a function definition), a lookup is done
- to see if it names a local binding (e.g. a function argument or
- let-bound name). If so, the value is the value of the local binding.
-
- 4. A lookup is done in the current namespace to see if there is a mapping
- from the symbol to a var. If so, the value is the value of the binding
- of the var referred-to by the symbol.
-
- 5. It is an error."
-
- ; First
- (doall (for [form '(def if do let quote var fn loop recur throw try
- monitor-enter monitor-exit)]
- (is (thrown? Compiler$CompilerException (eval form)))))
- (let [if "foo"]
- (is (thrown? Compiler$CompilerException (eval 'if)))
-
- ; Second
- (is (= (eval 'Boolean) (class-for-name "java.lang.Boolean"))))
- (let [Boolean "foo"]
- (is (= (eval 'Boolean) (class-for-name "java.lang.Boolean"))))
-
- ; Third
- (is (= (eval '(let [foo "bar"] foo)) "bar"))
-
- ; Fourth
- (in-test-ns (is (= (eval 'foo) "abc")))
- (is (thrown? Compiler$CompilerException (eval 'bar))) ; not in this namespace
-
- ; Fifth
- (is (thrown? Compiler$CompilerException (eval 'foobar)))))
-
-;;; Metadata tests ;;;
-
-(defstruct struct-with-symbols (with-meta 'k {:a "A"}))
-
-(deftest Metadata
- (test-that
- "If a Symbol has metadata, it will not be part of the resulting value"
- (is (not (nil? (meta (with-meta (symbol "test") {:doc "doc"})))))
- (is (nil? (meta (eval (with-meta (symbol "test") {:doc "doc"}))))))
-
- (test-that
- "find returns key symbols and their metadata"
- (let [s (struct struct-with-symbols 1)]
- (is (= {:a "A"} (meta (first (find s 'k))))))))
-
-;;; Collections tests ;;;
-(def x 1)
-(def y 2)
-
-(deftest Collections
- (in-test-ns
- (test-that
- "Vectors and Maps yield vectors and (hash) maps whose contents are the
- evaluated values of the objects they contain."
- (is (= (eval '[x y 3]) [1 2 3]))
- (is (= (eval '{:x x :y y :z 3}) {:x 1 :y 2 :z 3}))
- (is (instance? clojure.lang.IPersistentMap (eval '{:x x :y y})))))
-
- (in-test-ns
- (test-that
- "Metadata maps yield maps whose contents are the evaluated values of
- the objects they contain. If a vector or map has metadata, the evaluated
- metadata map will become the metadata of the resulting value."
- (is (= (eval #^{:x x} '[x y]) #^{:x 1} [1 2]))))
-
- (test-that
- "An empty list () evaluates to an empty list."
- (is (= (eval '()) ()))
- (is (empty? (eval ())))
- (is (= (eval (list)) ())))
-
- (test-that
- "Non-empty lists are considered calls"
- (is (thrown? Compiler$CompilerException (eval '(1 2 3))))))
-
-(deftest Macros)
-
-(deftest Loading)
diff --git a/src/clojure/contrib/test_clojure/for.clj b/src/clojure/contrib/test_clojure/for.clj
deleted file mode 100644
index 1b3dcb4d..00000000
--- a/src/clojure/contrib/test_clojure/for.clj
+++ /dev/null
@@ -1,123 +0,0 @@
-;; Copyright (c) Chris Houser. All rights reserved. The use and
-;; distribution terms for this software are covered by the Common Public
-;; License 1.0 (http://opensource.org/licenses/cpl.php) which can be found
-;; in the file CPL.TXT at the root of this distribution. By using this
-;; software in any fashion, you are agreeing to be bound by the terms of
-;; this license. You must not remove this notice, or any other, from this
-;; software.
-;;
-;; Tests for the Clojure 'for' macro
-;;
-;; by Chouser, http://chouser.n01se.net
-;; Created Dec 2008
-
-(ns clojure.contrib.test-clojure.for
- (:use clojure.contrib.test-is))
-
-(deftest Docstring-Example
- (is (= (take 100 (for [x (range 100000000)
- y (range 1000000) :while (< y x)]
- [x y]))
- '([1 0] [2 0] [2 1] [3 0] [3 1] [3 2] [4 0] [4 1] [4 2] [4 3]
- [5 0] [5 1] [5 2] [5 3] [5 4]
- [6 0] [6 1] [6 2] [6 3] [6 4] [6 5]
- [7 0] [7 1] [7 2] [7 3] [7 4] [7 5] [7 6]
- [8 0] [8 1] [8 2] [8 3] [8 4] [8 5] [8 6] [8 7]
- [9 0] [9 1] [9 2] [9 3] [9 4] [9 5] [9 6] [9 7] [9 8]
- [10 0] [10 1] [10 2] [10 3] [10 4] [10 5] [10 6] [10 7] [10 8] [10 9]
- [11 0] [11 1] [11 2] [11 3] [11 4] [11 5] [11 6] [11 7] [11 8] [11 9]
- [11 10]
- [12 0] [12 1] [12 2] [12 3] [12 4] [12 5] [12 6] [12 7] [12 8] [12 9]
- [12 10] [12 11]
- [13 0] [13 1] [13 2] [13 3] [13 4] [13 5] [13 6] [13 7] [13 8] [13 9]
- [13 10] [13 11] [13 12]
- [14 0] [14 1] [14 2] [14 3] [14 4] [14 5] [14 6] [14 7] [14 8]))))
-
-(defmacro deftest-both [txt & ises]
- `(do
- (deftest ~(symbol (str "For-" txt)) ~@ises)
- (deftest ~(symbol (str "Doseq-" txt))
- ~@(map (fn [[x-is [x-= [x-for binds body] value]]]
- (when (and (= x-is 'is) (= x-= '=) (= x-for 'for))
- `(is (= (let [acc# (atom [])]
- (doseq ~binds (swap! acc# conj ~body))
- @acc#)
- ~value))))
- ises))))
-
-(deftest-both When
- (is (= (for [x (range 10) :when (odd? x)] x) '(1 3 5 7 9)))
- (is (= (for [x (range 4) y (range 4) :when (odd? y)] [x y])
- '([0 1] [0 3] [1 1] [1 3] [2 1] [2 3] [3 1] [3 3])))
- (is (= (for [x (range 4) y (range 4) :when (odd? x)] [x y])
- '([1 0] [1 1] [1 2] [1 3] [3 0] [3 1] [3 2] [3 3])))
- (is (= (for [x (range 4) :when (odd? x) y (range 4)] [x y])
- '([1 0] [1 1] [1 2] [1 3] [3 0] [3 1] [3 2] [3 3])))
- (is (= (for [x (range 5) y (range 5) :when (< x y)] [x y])
- '([0 1] [0 2] [0 3] [0 4] [1 2] [1 3] [1 4] [2 3] [2 4] [3 4]))))
-
-(defn only
- "Returns a lazy seq of increasing ints starting at 0. Trying to get
- the nth+1 value of the seq throws an exception. This is meant to
- help detecting over-eagerness in lazy seq consumers."
- [n]
- (lazy-cat (range n)
- (throw (Exception. "consumer went too far in lazy seq"))))
-
-(deftest-both While
- (is (= (for [x (only 6) :while (< x 5)] x) '(0 1 2 3 4)))
- (is (= (for [x (range 4) y (only 4) :while (< y 3)] [x y])
- '([0 0] [0 1] [0 2] [1 0] [1 1] [1 2]
- [2 0] [2 1] [2 2] [3 0] [3 1] [3 2])))
- (is (= (for [x (range 4) y (range 4) :while (< x 3)] [x y])
- '([0 0] [0 1] [0 2] [0 3] [1 0] [1 1] [1 2] [1 3]
- [2 0] [2 1] [2 2] [2 3])))
- (is (= (for [x (only 4) :while (< x 3) y (range 4)] [x y])
- '([0 0] [0 1] [0 2] [0 3] [1 0] [1 1] [1 2] [1 3]
- [2 0] [2 1] [2 2] [2 3])))
- (is (= (for [x (range 4) y (range 4) :while (even? x)] [x y])
- '([0 0] [0 1] [0 2] [0 3] [2 0] [2 1] [2 2] [2 3])))
- (is (= (for [x (only 2) :while (even? x) y (range 4)] [x y])
- '([0 0] [0 1] [0 2] [0 3])))
- (is (= (for [x (range 4) y (only 4) :while (< y x)] [x y])
- '([1 0] [2 0] [2 1] [3 0] [3 1] [3 2]))))
-
-(deftest-both While-and-When
- (is (= (for [x (only 6) :while (< x 5) y (range 4) :when (odd? y)] [x y])
- '([0 1] [0 3] [1 1] [1 3] [2 1] [2 3] [3 1] [3 3] [4 1] [4 3])))
- (is (= (for [x (range 4) :when (odd? x) y (only 6) :while (< y 5)] [x y])
- '([1 0] [1 1] [1 2] [1 3] [1 4] [3 0] [3 1] [3 2] [3 3] [3 4])))
- (is (= (for [x (only 6) :while (< x 5) y (range 4) :when (odd? (+ x y))]
- [x y])
- '([0 1] [0 3] [1 0] [1 2] [2 1] [2 3] [3 0] [3 2] [4 1] [4 3])))
- (is (= (for [x (range 4) :when (odd? x) y (only 2) :while (odd? (+ x y))]
- [x y])
- '([1 0] [3 0]))))
-
-(deftest-both While-and-When-Same-Binding
- (is (= (for [x (only 6) :while (< x 5) :when (odd? x)] x) '(1 3)))
- (is (= (for [x (only 6)
- :while (< x 5) ; if :while is false, :when should not be evaled
- :when (do (if (< x 5) (odd? x)))] x) '(1 3)))
- (is (= (for [a (range -2 5)
- :when (not= a 0) ; :when may guard :while
- :while (> (Math/abs (/ 1.0 a)) 1/3)] a) '(-2 -1 1 2))))
-
-(deftest-both Nesting
- (is (= (for [x '(a b) y (interpose x '(1 2)) z (list x y)] [x y z])
- '([a 1 a] [a 1 1] [a a a] [a a a] [a 2 a] [a 2 2]
- [b 1 b] [b 1 1] [b b b] [b b b] [b 2 b] [b 2 2])))
- (is (= (for [x ['a nil] y [x 'b]] [x y])
- '([a a] [a b] [nil nil] [nil b]))))
-
-(deftest-both Destructuring
- (is (= (for [{:syms [a b c]} (map #(zipmap '(a b c) (range % 5)) (range 3))
- x [a b c]]
- (Integer. (str a b c x)))
- '(120 121 122 1231 1232 1233 2342 2343 2344))))
-
-(deftest-both Let
- (is (= (for [x (range 3) y (range 3) :let [z (+ x y)] :when (odd? z)] [x y z])
- '([0 1 1] [1 0 1] [1 2 3] [2 1 3])))
- (is (= (for [x (range 6) :let [y (rem x 2)] :when (even? y) z [8 9]] [x z])
- '([0 8] [0 9] [2 8] [2 9] [4 8] [4 9]))))
diff --git a/src/clojure/contrib/test_clojure/java_interop.clj b/src/clojure/contrib/test_clojure/java_interop.clj
deleted file mode 100644
index 8c040255..00000000
--- a/src/clojure/contrib/test_clojure/java_interop.clj
+++ /dev/null
@@ -1,404 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.java-interop
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/java_interop
-; http://clojure.org/compilation
-
-
-(deftest test-dot
- ; (.instanceMember instance args*)
- (are [x] (= x "FRED")
- (.toUpperCase "fred")
- (. "fred" toUpperCase)
- (. "fred" (toUpperCase)) )
-
- (are [x] (= x true)
- (.startsWith "abcde" "ab")
- (. "abcde" startsWith "ab")
- (. "abcde" (startsWith "ab")) )
-
- ; (.instanceMember Classname args*)
- (are [x] (= x "java.lang.String")
- (.getName String)
- (. (identity String) getName)
- (. (identity String) (getName)) )
-
- ; (Classname/staticMethod args*)
- (are [x] (= x 7)
- (Math/abs -7)
- (. Math abs -7)
- (. Math (abs -7)) )
-
- ; Classname/staticField
- (are [x] (= x 2147483647)
- Integer/MAX_VALUE
- (. Integer MAX_VALUE) ))
-
-
-(deftest test-double-dot
- (is (= (.. System (getProperties) (get "os.name"))
- (. (. System (getProperties)) (get "os.name")))))
-
-
-(deftest test-doto
- (let [m (doto (new java.util.HashMap)
- (.put "a" 1)
- (.put "b" 2))]
- (are [x y] (= x y)
- (class m) java.util.HashMap
- m {"a" 1 "b" 2} )))
-
-
-(deftest test-new
- ; Integer
- (are [expr cls value] (and (= (class expr) cls)
- (= expr value))
- (new java.lang.Integer 42) java.lang.Integer 42
- (java.lang.Integer. 123) java.lang.Integer 123 )
-
- ; Date
- (are [x] (= (class x) java.util.Date)
- (new java.util.Date)
- (java.util.Date.) ))
-
-
-(deftest test-instance?
- ; evaluation
- (are [x y] (= x y)
- (instance? java.lang.Integer (+ 1 2)) true
- (instance? java.lang.Long (+ 1 2)) false )
-
- ; different types
- (are [type literal] (instance? literal type)
- 1 java.lang.Integer
- 1.0 java.lang.Double
- 1M java.math.BigDecimal
- \a java.lang.Character
- "a" java.lang.String )
-
- ; it is an int, nothing else
- (are [x y] (= (instance? x 42) y)
- java.lang.Integer true
- java.lang.Long false
- java.lang.Character false
- java.lang.String false ))
-
-
-; set!
-
-; memfn
-
-
-(deftest test-bean
- (let [b (bean java.awt.Color/black)]
- (are [x y] (= x y)
- (map? b) true
-
- (:red b) 0
- (:green b) 0
- (:blue b) 0
- (:RGB b) -16777216
-
- (:alpha b) 255
- (:transparency b) 1
-
- (:class b) java.awt.Color )))
-
-
-; proxy, proxy-super
-
-
-(deftest test-bases
- (are [x y] (= x y)
- (bases java.lang.Math)
- (list java.lang.Object)
- (bases java.lang.Integer)
- (list java.lang.Number java.lang.Comparable) ))
-
-(deftest test-supers
- (are [x y] (= x y)
- (supers java.lang.Math)
- #{java.lang.Object}
- (supers java.lang.Integer)
- #{java.lang.Number java.lang.Object
- java.lang.Comparable java.io.Serializable} ))
-
-
-; Arrays: [alength] aget aset [make-array to-array into-array to-array-2d aclone]
-; [float-array, int-array, etc]
-; amap, areduce
-
-(defmacro deftest-type-array [type-array type]
- `(deftest ~(symbol (str "test-" type-array))
- ; correct type
- (is (= (class (first (~type-array [1 2]))) (class (~type 1))))
-
- ; given size (and empty)
- (are [x] (and (= (alength (~type-array x)) x)
- (= (vec (~type-array x)) (repeat x 0)))
- 0 1 5 )
-
- ; copy of a sequence
- (are [x] (and (= (alength (~type-array x)) (count x))
- (= (vec (~type-array x)) x))
-;; [] ;; ERROR
- [1]
- [1 -2 3 0 5] )
-
- ; given size and init-value
- (are [x] (and (= (alength (~type-array x 42)) x)
- (= (vec (~type-array x 42)) (repeat x 42)))
- 0 1 5 )
-
- ; given size and init-seq
- (are [x y z] (and (= (alength (~type-array x y)) x)
- (= (vec (~type-array x y)) z))
- 0 [] []
- 0 [1] []
- 0 [1 2 3] []
- 1 [] [0]
- 1 [1] [1]
- 1 [1 2 3] [1]
- 5 [] [0 0 0 0 0]
- 5 [1] [1 0 0 0 0]
- 5 [1 2 3] [1 2 3 0 0]
- 5 [1 2 3 4 5] [1 2 3 4 5]
- 5 [1 2 3 4 5 6 7] [1 2 3 4 5] )))
-
-(deftest-type-array int-array int)
-(deftest-type-array long-array long)
-(deftest-type-array float-array float)
-(deftest-type-array double-array double)
-
-; separate test for exceptions (doesn't work with above macro...)
-(deftest test-type-array-exceptions
- (are [x] (thrown? NegativeArraySizeException x)
- (int-array -1)
- (long-array -1)
- (float-array -1)
- (double-array -1) ))
-
-
-(deftest test-make-array
- ; negative size
- (is (thrown? NegativeArraySizeException (make-array Integer -1)))
-
- ; one-dimensional
- (are [x] (= (alength (make-array Integer x)) x)
- 0 1 5 )
-
- (let [a (make-array Integer 5)]
- (aset a 3 42)
- (are [x y] (= x y)
- (aget a 3) 42
- (class (aget a 3)) Integer ))
-
- ; multi-dimensional
- (let [a (make-array Integer 3 2 4)]
- (aset a 0 1 2 987)
- (are [x y] (= x y)
- (alength a) 3
- (alength (first a)) 2
- (alength (first (first a))) 4
-
- (aget a 0 1 2) 987
- (class (aget a 0 1 2)) Integer )))
-
-
-(deftest test-to-array
- (let [v [1 "abc" :kw \c []]
- a (to-array v)]
- (are [x y] (= x y)
- ; length
- (alength a) (count v)
-
- ; content
- (vec a) v
- (class (aget a 0)) (class (nth v 0))
- (class (aget a 1)) (class (nth v 1))
- (class (aget a 2)) (class (nth v 2))
- (class (aget a 3)) (class (nth v 3))
- (class (aget a 4)) (class (nth v 4)) ))
-
- ; different kinds of collections
- (are [x] (and (= (alength (to-array x)) (count x))
- (= (vec (to-array x)) (vec x)))
- ()
- '(1 2)
- []
- [1 2]
- (sorted-set)
- (sorted-set 1 2)
-
- (int-array 0)
- (int-array [1 2 3])
-
- (to-array [])
- (to-array [1 2 3]) ))
-
-
-(deftest test-into-array
- ; compatible types only
- (is (thrown? IllegalArgumentException (into-array [1 "abc" :kw])))
- (is (thrown? IllegalArgumentException (into-array [1.2 4])))
- (is (thrown? IllegalArgumentException (into-array [(byte 2) (short 3)])))
-
- ; simple case
- (let [v [1 2 3 4 5]
- a (into-array v)]
- (are [x y] (= x y)
- (alength a) (count v)
- (vec a) v
- (class (first a)) (class (first v)) ))
-
- ; given type
- (let [a (into-array Integer/TYPE [(byte 2) (short 3) (int 4)])]
- (are [x] (= x Integer)
- (class (aget a 0))
- (class (aget a 1))
- (class (aget a 2)) ))
-
- ; different kinds of collections
- (are [x] (and (= (alength (into-array x)) (count x))
- (= (vec (into-array x)) (vec x))
- (= (alength (into-array Integer/TYPE x)) (count x))
- (= (vec (into-array Integer/TYPE x)) (vec x)))
- ()
- '(1 2)
- []
- [1 2]
- (sorted-set)
- (sorted-set 1 2)
-
- (int-array 0)
- (int-array [1 2 3])
-
- (to-array [])
- (to-array [1 2 3]) ))
-
-
-(deftest test-to-array-2d
- ; needs to be a collection of collection(s)
- (is (thrown? Exception (to-array-2d [1 2 3])))
-
- ; ragged array
- (let [v [[1] [2 3] [4 5 6]]
- a (to-array-2d v)]
- (are [x y] (= x y)
- (alength a) (count v)
- (alength (aget a 0)) (count (nth v 0))
- (alength (aget a 1)) (count (nth v 1))
- (alength (aget a 2)) (count (nth v 2))
-
- (vec (aget a 0)) (nth v 0)
- (vec (aget a 1)) (nth v 1)
- (vec (aget a 2)) (nth v 2) ))
-
- ; empty array
- (let [a (to-array-2d [])]
- (are [x y] (= x y)
- (alength a) 0
- (vec a) [] )))
-
-
-(deftest test-alength
- (are [x] (= (alength x) 0)
- (int-array 0)
- (long-array 0)
- (float-array 0)
- (double-array 0)
- (make-array Integer/TYPE 0)
- (to-array [])
- (into-array [])
- (to-array-2d []) )
-
- (are [x] (= (alength x) 1)
- (int-array 1)
- (long-array 1)
- (float-array 1)
- (double-array 1)
- (make-array Integer/TYPE 1)
- (to-array [1])
- (into-array [1])
- (to-array-2d [[1]]) )
-
- (are [x] (= (alength x) 3)
- (int-array 3)
- (long-array 3)
- (float-array 3)
- (double-array 3)
- (make-array Integer/TYPE 3)
- (to-array [1 "a" :k])
- (into-array [1 2 3])
- (to-array-2d [[1] [2 3] [4 5 6]]) ))
-
-
-(deftest test-aclone
- ; clone all arrays except 2D
- (are [x] (and (= (alength (aclone x)) (alength x))
- (= (vec (aclone x)) (vec x)))
- (int-array 0)
- (long-array 0)
- (float-array 0)
- (double-array 0)
- (make-array Integer/TYPE 0)
- (to-array [])
- (into-array [])
-
- (int-array [1 2 3])
- (long-array [1 2 3])
- (float-array [1 2 3])
- (double-array [1 2 3])
- (make-array Integer/TYPE 3)
- (to-array [1 "a" :k])
- (into-array [1 2 3]) )
-
- ; clone 2D
- (are [x] (and (= (alength (aclone x)) (alength x))
- (= (map alength (aclone x)) (map alength x))
- (= (map vec (aclone x)) (map vec x)))
- (to-array-2d [])
- (to-array-2d [[1] [2 3] [4 5 6]]) ))
-
-
-; Type Hints, *warn-on-reflection*
-; #^ints, #^floats, #^longs, #^doubles
-
-; Coercions: [int, long, float, double, char, boolean, short, byte]
-; num
-; ints/longs/floats/doubles
-
-(deftest test-boolean
- (are [x y] (and (instance? java.lang.Boolean (boolean x))
- (= (boolean x) y))
- nil false
- false false
- true true
-
- 0 true
- 1 true
- () true
- [1] true
-
- "" true
- \space true
- :kw true ))
-
-
-(deftest test-char
- ; int -> char
- (is (instance? java.lang.Character (char 65)))
-
- ; char -> char
- (is (instance? java.lang.Character (char \a)))
- (is (= (char \a) \a)))
-
-;; Note: More coercions in numbers.clj
diff --git a/src/clojure/contrib/test_clojure/logic.clj b/src/clojure/contrib/test_clojure/logic.clj
deleted file mode 100644
index 6c46b711..00000000
--- a/src/clojure/contrib/test_clojure/logic.clj
+++ /dev/null
@@ -1,202 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; Created 1/29/2009
-
-(ns clojure.contrib.test-clojure.logic
- (:use clojure.contrib.test-is
- [clojure.contrib.test-clojure.test-utils :only (exception)]))
-
-
-;; *** Tests ***
-
-(deftest test-if
- ; true/false/nil
- (are [x y] (= x y)
- (if true :t) :t
- (if true :t :f) :t
- (if true :t (exception)) :t
-
- (if false :t) nil
- (if false :t :f) :f
- (if false (exception) :f) :f
-
- (if nil :t) nil
- (if nil :t :f) :f
- (if nil (exception) :f) :f )
-
- ; zero/empty is true
- (are [x] (= (if x :t :f) :t)
- (byte 0)
- (short 0)
- (int 0)
- (long 0)
- (bigint 0)
- (float 0)
- (double 0)
- (bigdec 0)
-
- 0/2
- ""
- #""
- (symbol "")
-
- ()
- []
- {}
- #{}
- (into-array []) )
-
- ; anything except nil/false is true
- (are [x] (= (if x :t :f) :t)
- (byte 2)
- (short 2)
- (int 2)
- (long 2)
- (bigint 2)
- (float 2)
- (double 2)
- (bigdec 2)
-
- 2/3
- \a
- "abc"
- #"a*b"
- 'abc
- :kw
-
- '(1 2)
- [1 2]
- {:a 1 :b 2}
- #{1 2}
- (into-array [1 2])
-
- (new java.util.Date) ))
-
-
-(deftest test-nil-punning
- (are [x y] (= (if x :no :yes) y)
- (first []) :yes
- (next [1]) :yes
- (rest [1]) :no
-
- (butlast [1]) :yes
-
- (seq nil) :yes
- (seq []) :yes
-
- (sequence nil) :no
- (sequence []) :no
-
- (lazy-seq nil) :no
- (lazy-seq []) :no
-
- (filter #(> % 10) [1 2 3]) :no
- (map identity []) :no
- (apply concat []) :no
-
- (concat) :no
- (concat []) :no
-
- (reverse nil) :no
- (reverse []) :no
-
- (sort nil) :no
- (sort []) :no ))
-
-
-(deftest test-and
- (are [x y] (= x y)
- (and) true
- (and true) true
- (and nil) nil
- (and false) false
-
- (and true nil) nil
- (and true false) false
-
- (and 1 true :kw 'abc "abc") "abc"
-
- (and 1 true :kw nil 'abc "abc") nil
- (and 1 true :kw nil (exception) 'abc "abc") nil
-
- (and 1 true :kw 'abc "abc" false) false
- (and 1 true :kw 'abc "abc" false (exception)) false ))
-
-
-(deftest test-or
- (are [x y] (= x y)
- (or) nil
- (or true) true
- (or nil) nil
- (or false) false
-
- (or nil false true) true
- (or nil false 1 2) 1
- (or nil false "abc" :kw) "abc"
-
- (or false nil) nil
- (or nil false) false
- (or nil nil nil false) false
-
- (or nil true false) true
- (or nil true (exception) false) true
- (or nil false "abc" (exception)) "abc" ))
-
-
-(deftest test-not
- (is (thrown? IllegalArgumentException (not)))
- (are [x] (= (not x) true)
- nil
- false )
- (are [x] (= (not x) false)
- true
-
- ; numbers
- 0
- 0.0
- 42
- 1.2
- 0/2
- 2/3
-
- ; characters
- \space
- \tab
- \a
-
- ; strings
- ""
- "abc"
-
- ; regexes
- #""
- #"a*b"
-
- ; symbols
- (symbol "")
- 'abc
-
- ; keywords
- :kw
-
- ; collections/arrays
- ()
- '(1 2)
- []
- [1 2]
- {}
- {:a 1 :b 2}
- #{}
- #{1 2}
- (into-array [])
- (into-array [1 2])
-
- ; Java objects
- (new java.util.Date) ))
-
diff --git a/src/clojure/contrib/test_clojure/macros.clj b/src/clojure/contrib/test_clojure/macros.clj
deleted file mode 100644
index 40fd99ba..00000000
--- a/src/clojure/contrib/test_clojure/macros.clj
+++ /dev/null
@@ -1,16 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.macros
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/macros
-
-; ->
-; defmacro definline macroexpand-1 macroexpand
-
diff --git a/src/clojure/contrib/test_clojure/metadata.clj b/src/clojure/contrib/test_clojure/metadata.clj
deleted file mode 100644
index ea0cdbe1..00000000
--- a/src/clojure/contrib/test_clojure/metadata.clj
+++ /dev/null
@@ -1,17 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.metadata
- (:use clojure.contrib.test-is))
-
-
-; http://clojure.org/metadata
-
-; meta
-; with-meta
-
diff --git a/src/clojure/contrib/test_clojure/multimethods.clj b/src/clojure/contrib/test_clojure/multimethods.clj
deleted file mode 100644
index b273a0bd..00000000
--- a/src/clojure/contrib/test_clojure/multimethods.clj
+++ /dev/null
@@ -1,25 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.multimethods
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/multimethods
-
-; defmulti
-; defmethod
-; remove-method
-; prefer-method
-; methods
-; prefers
-
-; derive, [underive]
-; isa?
-; parents, ancestors, descendants
-; make-hierarchy
-
diff --git a/src/clojure/contrib/test_clojure/ns_libs.clj b/src/clojure/contrib/test_clojure/ns_libs.clj
deleted file mode 100644
index 50822d46..00000000
--- a/src/clojure/contrib/test_clojure/ns_libs.clj
+++ /dev/null
@@ -1,26 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.ns-libs
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/namespaces
-
-; in-ns ns create-ns
-; alias import intern refer
-; all-ns find-ns
-; ns-name ns-aliases ns-imports ns-interns ns-map ns-publics ns-refers
-; resolve ns-resolve namespace
-; ns-unalias ns-unmap remove-ns
-
-
-; http://clojure.org/libs
-
-; require use
-; loaded-libs
-
diff --git a/src/clojure/contrib/test_clojure/numbers.clj b/src/clojure/contrib/test_clojure/numbers.clj
deleted file mode 100644
index aa480d7c..00000000
--- a/src/clojure/contrib/test_clojure/numbers.clj
+++ /dev/null
@@ -1,390 +0,0 @@
-;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; scgilardi (gmail)
-;; Created 30 October 2008
-;;
-
-(ns clojure.contrib.test-clojure.numbers
- (:use clojure.contrib.test-is))
-
-
-; TODO:
-; ==
-; and more...
-
-
-;; *** Types ***
-
-(deftest Coerced-Byte
- (let [v (byte 3)]
- (are [x]
- (instance? Byte v)
- (number? v)
- (integer? v)
- (rational? v))))
-
-(deftest Coerced-Short
- (let [v (short 3)]
- (are [x]
- (instance? Short v)
- (number? v)
- (integer? v)
- (rational? v))))
-
-(deftest Coerced-Integer
- (let [v (int 3)]
- (are [x]
- (instance? Integer v)
- (number? v)
- (integer? v)
- (rational? v))))
-
-(deftest Coerced-Long
- (let [v (long 3)]
- (are [x]
- (instance? Long v)
- (number? v)
- (integer? v)
- (rational? v))))
-
-(deftest Coerced-BigInteger
- (let [v (bigint 3)]
- (are [x]
- (instance? BigInteger v)
- (number? v)
- (integer? v)
- (rational? v))))
-
-(deftest Coerced-Float
- (let [v (float 3)]
- (are [x]
- (instance? Float v)
- (number? v)
- (float? v))))
-
-(deftest Coerced-Double
- (let [v (double 3)]
- (are [x]
- (instance? Double v)
- (number? v)
- (float? v))))
-
-(deftest Coerced-BigDecimal
- (let [v (bigdec 3)]
- (are [x]
- (instance? BigDecimal v)
- (number? v)
- (decimal? v)
- (not (float? v)))))
-
-
-;; *** Functions ***
-
-(defonce DELTA 1e-12)
-
-(deftest test-add
- (are [x y] (= x y)
- (+) 0
- (+ 1) 1
- (+ 1 2) 3
- (+ 1 2 3) 6
-
- (+ -1) -1
- (+ -1 -2) -3
- (+ -1 +2 -3) -2
-
- (+ 1 -1) 0
- (+ -1 1) 0
-
- (+ 2/3) 2/3
- (+ 2/3 1) 5/3
- (+ 2/3 1/3) 1 )
-
- (are [x y] (< (- x y) DELTA)
- (+ 1.2) 1.2
- (+ 1.1 2.4) 3.5
- (+ 1.1 2.2 3.3) 6.6 )
-
- (is (> (+ Integer/MAX_VALUE 10) Integer/MAX_VALUE)) ; no overflow
- (is (thrown? ClassCastException (+ "ab" "cd"))) ) ; no string concatenation
-
-
-(deftest test-subtract
- (is (thrown? IllegalArgumentException (-)))
- (are [x y] (= x y)
- (- 1) -1
- (- 1 2) -1
- (- 1 2 3) -4
-
- (- -2) 2
- (- 1 -2) 3
- (- 1 -2 -3) 6
-
- (- 1 1) 0
- (- -1 -1) 0
-
- (- 2/3) -2/3
- (- 2/3 1) -1/3
- (- 2/3 1/3) 1/3 )
-
- (are [x y] (< (- x y) DELTA)
- (- 1.2) -1.2
- (- 2.2 1.1) 1.1
- (- 6.6 2.2 1.1) 3.3 )
-
- (is (< (- Integer/MIN_VALUE 10) Integer/MIN_VALUE)) ) ; no underflow
-
-
-(deftest test-multiply
- (are [x y] (= x y)
- (*) 1
- (* 2) 2
- (* 2 3) 6
- (* 2 3 4) 24
-
- (* -2) -2
- (* 2 -3) -6
- (* 2 -3 -1) 6
-
- (* 1/2) 1/2
- (* 1/2 1/3) 1/6
- (* 1/2 1/3 -1/4) -1/24 )
-
- (are [x y] (< (- x y) DELTA)
- (* 1.2) 1.2
- (* 2.0 1.2) 2.4
- (* 3.5 2.0 1.2) 8.4 )
-
- (is (> (* 3 (int (/ Integer/MAX_VALUE 2.0))) Integer/MAX_VALUE)) ) ; no overflow
-
-
-(deftest test-divide
- (are [x y] (= x y)
- (/ 1) 1
- (/ 2) 1/2
- (/ 3 2) 3/2
- (/ 4 2) 2
- (/ 24 3 2) 4
- (/ 24 3 2 -1) -4
-
- (/ -1) -1
- (/ -2) -1/2
- (/ -3 -2) 3/2
- (/ -4 -2) 2
- (/ -4 2) -2 )
-
- (are [x y] (< (- x y) DELTA)
- (/ 4.5 3) 1.5
- (/ 4.5 3.0 3.0) 0.5 )
-
- (is (thrown? ArithmeticException (/ 0)))
- (is (thrown? ArithmeticException (/ 2 0)))
- (is (thrown? IllegalArgumentException (/))) )
-
-
-;; mod
-;; http://en.wikipedia.org/wiki/Modulo_operation
-;; http://mathforum.org/library/drmath/view/52343.html
-;;
-;; is mod correct?
-;; http://groups.google.com/group/clojure/browse_frm/thread/2a0ee4d248f3d131#
-;;
-;; Issue 23: mod (modulo) operator
-;; http://code.google.com/p/clojure/issues/detail?id=23
-
-(deftest test-mod
- ; wrong number of args
- (is (thrown? IllegalArgumentException (mod)))
- (is (thrown? IllegalArgumentException (mod 1)))
- (is (thrown? IllegalArgumentException (mod 3 2 1)))
-
- ; divide by zero
- (is (thrown? ArithmeticException (mod 9 0)))
- (is (thrown? ArithmeticException (mod 0 0)))
-
- (are [x y] (= x y)
- (mod 4 2) 0
- (mod 3 2) 1
- (mod 6 4) 2
- (mod 0 5) 0
-
- (mod 2 1/2) 0
- (mod 2/3 1/2) 1/6
- (mod 1 2/3) 1/3
-
- (mod 4.0 2.0) 0.0
- (mod 4.5 2.0) 0.5
-
- ; |num| > |div|, num != k * div
- (mod 42 5) 2 ; (42 / 5) * 5 + (42 mod 5) = 8 * 5 + 2 = 42
- (mod 42 -5) -3 ; (42 / -5) * (-5) + (42 mod -5) = -9 * (-5) + (-3) = 42
- (mod -42 5) 3 ; (-42 / 5) * 5 + (-42 mod 5) = -9 * 5 + 3 = -42
- (mod -42 -5) -2 ; (-42 / -5) * (-5) + (-42 mod -5) = 8 * (-5) + (-2) = -42
-
- ; |num| > |div|, num = k * div
- (mod 9 3) 0 ; (9 / 3) * 3 + (9 mod 3) = 3 * 3 + 0 = 9
- (mod 9 -3) 0
- (mod -9 3) 0
- (mod -9 -3) 0
-
- ; |num| < |div|
- (mod 2 5) 2 ; (2 / 5) * 5 + (2 mod 5) = 0 * 5 + 2 = 2
- (mod 2 -5) -3 ; (2 / -5) * (-5) + (2 mod -5) = (-1) * (-5) + (-3) = 2
- (mod -2 5) 3 ; (-2 / 5) * 5 + (-2 mod 5) = (-1) * 5 + 3 = -2
- (mod -2 -5) -2 ; (-2 / -5) * (-5) + (-2 mod -5) = 0 * (-5) + (-2) = -2
-
- ; num = 0, div != 0
- (mod 0 3) 0 ; (0 / 3) * 3 + (0 mod 3) = 0 * 3 + 0 = 0
- (mod 0 -3) 0
- )
-)
-
-;; rem & quot
-;; http://en.wikipedia.org/wiki/Remainder
-
-(deftest test-rem
- ; wrong number of args
- (is (thrown? IllegalArgumentException (rem)))
- (is (thrown? IllegalArgumentException (rem 1)))
- (is (thrown? IllegalArgumentException (rem 3 2 1)))
-
- ; divide by zero
- (is (thrown? ArithmeticException (rem 9 0)))
- (is (thrown? ArithmeticException (rem 0 0)))
-
- (are [x y] (= x y)
- (rem 4 2) 0
- (rem 3 2) 1
- (rem 6 4) 2
- (rem 0 5) 0
-
- (rem 2 1/2) 0
- (rem 2/3 1/2) 1/6
- (rem 1 2/3) 1/3
-
- (rem 4.0 2.0) 0.0
- (rem 4.5 2.0) 0.5
-
- ; |num| > |div|, num != k * div
- (rem 42 5) 2 ; (8 * 5) + 2 == 42
- (rem 42 -5) 2 ; (-8 * -5) + 2 == 42
- (rem -42 5) -2 ; (-8 * 5) + -2 == -42
- (rem -42 -5) -2 ; (8 * -5) + -2 == -42
-
- ; |num| > |div|, num = k * div
- (rem 9 3) 0
- (rem 9 -3) 0
- (rem -9 3) 0
- (rem -9 -3) 0
-
- ; |num| < |div|
- (rem 2 5) 2
- (rem 2 -5) 2
- (rem -2 5) -2
- (rem -2 -5) -2
-
- ; num = 0, div != 0
- (rem 0 3) 0
- (rem 0 -3) 0
- )
-)
-
-(deftest test-quot
- ; wrong number of args
- (is (thrown? IllegalArgumentException (quot)))
- (is (thrown? IllegalArgumentException (quot 1)))
- (is (thrown? IllegalArgumentException (quot 3 2 1)))
-
- ; divide by zero
- (is (thrown? ArithmeticException (quot 9 0)))
- (is (thrown? ArithmeticException (quot 0 0)))
-
- (are [x y] (= x y)
- (quot 4 2) 2
- (quot 3 2) 1
- (quot 6 4) 1
- (quot 0 5) 0
-
- (quot 2 1/2) 4
- (quot 2/3 1/2) 1
- (quot 1 2/3) 1
-
- (quot 4.0 2.0) 2.0
- (quot 4.5 2.0) 2.0
-
- ; |num| > |div|, num != k * div
- (quot 42 5) 8 ; (8 * 5) + 2 == 42
- (quot 42 -5) -8 ; (-8 * -5) + 2 == 42
- (quot -42 5) -8 ; (-8 * 5) + -2 == -42
- (quot -42 -5) 8 ; (8 * -5) + -2 == -42
-
- ; |num| > |div|, num = k * div
- (quot 9 3) 3
- (quot 9 -3) -3
- (quot -9 3) -3
- (quot -9 -3) 3
-
- ; |num| < |div|
- (quot 2 5) 0
- (quot 2 -5) 0
- (quot -2 5) 0
- (quot -2 -5) 0
-
- ; num = 0, div != 0
- (quot 0 3) 0
- (quot 0 -3) 0
- )
-)
-
-
-;; *** Predicates ***
-
-;; pos? zero? neg?
-
-(deftest test-pos?-zero?-neg?
- (let [nums [[(byte 2) (byte 0) (byte -2)]
- [(short 3) (short 0) (short -3)]
- [(int 4) (int 0) (int -4)]
- [(long 5) (long 0) (long -5)]
- [(bigint 6) (bigint 0) (bigint -6)]
- [(float 7) (float 0) (float -7)]
- [(double 8) (double 0) (double -8)]
- [(bigdec 9) (bigdec 0) (bigdec -9)]
- [2/3 0 -2/3]]
- pred-result [[pos? [true false false]]
- [zero? [false true false]]
- [neg? [false false true]]] ]
- (doseq [pr pred-result]
- (doseq [n nums]
- (is (= (map (first pr) n) (second pr))
- (pr-str (first pr) n))))))
-
-
-;; even? odd?
-
-(deftest test-even?
- (are [x]
- (even? -4)
- (not (even? -3))
- (even? 0)
- (not (even? 5))
- (even? 8))
- (is (thrown? ArithmeticException (even? 1/2)))
- (is (thrown? ArithmeticException (even? (double 10)))))
-
-(deftest test-odd?
- (are [x]
- (not (odd? -4))
- (odd? -3)
- (not (odd? 0))
- (odd? 5)
- (not (odd? 8)))
- (is (thrown? ArithmeticException (odd? 1/2)))
- (is (thrown? ArithmeticException (odd? (double 10)))))
-
diff --git a/src/clojure/contrib/test_clojure/other_functions.clj b/src/clojure/contrib/test_clojure/other_functions.clj
deleted file mode 100644
index 17b1f3b8..00000000
--- a/src/clojure/contrib/test_clojure/other_functions.clj
+++ /dev/null
@@ -1,57 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.other-functions
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/other_functions
-
-; [= not= (tests in data_structures.clj and elsewhere)]
-
-
-(deftest test-identity
- ; exactly 1 argument needed
- (is (thrown? IllegalArgumentException (identity)))
- (is (thrown? IllegalArgumentException (identity 1 2)))
-
- (are [x] (= (identity x) x)
- 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} )
-
- ; evaluation
- (are [x y] (= (identity x) y)
- (+ 1 2) 3
- (> 5 0) true ))
-
-
-; time assert comment doc
-
-; partial
-; comp
-; complement
-; constantly
-
-; Printing
-; pr prn print println newline
-; pr-str prn-str print-str println-str [with-out-str (vars.clj)]
-
-; Regex Support
-; re-matcher re-find re-matches re-groups re-seq
-
diff --git a/src/clojure/contrib/test_clojure/parallel.clj b/src/clojure/contrib/test_clojure/parallel.clj
deleted file mode 100644
index 855e507b..00000000
--- a/src/clojure/contrib/test_clojure/parallel.clj
+++ /dev/null
@@ -1,26 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.parallel
- (:use clojure.contrib.test-is))
-
-;; !! Tests for the parallel library will be in a separate file clojure_parallel.clj !!
-
-; future-call
-; future
-; pmap
-; pcalls
-; pvalues
-
-
-;; pmap
-;;
-(deftest pmap-does-its-thing
- ;; regression fixed in r1218; was OutOfMemoryError
- (is (= '(1) (pmap inc [0]))))
-
diff --git a/src/clojure/contrib/test_clojure/predicates.clj b/src/clojure/contrib/test_clojure/predicates.clj
deleted file mode 100644
index 0206860d..00000000
--- a/src/clojure/contrib/test_clojure/predicates.clj
+++ /dev/null
@@ -1,139 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; Created 1/28/2009
-
-(ns clojure.contrib.test-clojure.predicates
- (:use clojure.contrib.test-is))
-
-
-;; *** Type predicates ***
-
-(def myvar 42)
-
-(def sample-data {
- :nil nil
-
- :bool-true true
- :bool-false false
-
- :byte (byte 7)
- :short (short 7)
- :int (int 7)
- :long (long 7)
- :bigint (bigint 7)
- :float (float 7)
- :double (double 7)
- :bigdec (bigdec 7)
-
- :ratio 2/3
-
- :character \a
- :symbol 'abc
- :keyword :kw
-
- :empty-string ""
- :empty-regex #""
- :empty-list ()
- :empty-lazy-seq (lazy-seq nil)
- :empty-vector []
- :empty-map {}
- :empty-set #{}
- :empty-array (into-array [])
-
- :string "abc"
- :regex #"a*b"
- :list '(1 2 3)
- :lazy-seq (lazy-seq [1 2 3])
- :vector [1 2 3]
- :map {:a 1 :b 2 :c 3}
- :set #{1 2 3}
- :array (into-array [1 2 3])
-
- :fn (fn [x] (* 2 x))
-
- :class java.util.Date
- :object (new java.util.Date)
-
- :var (var myvar)
- :delay (delay (+ 1 2))
-})
-
-
-(def type-preds {
- nil? [:nil]
-
- true? [:bool-true]
- false? [:bool-false]
- ; boolean?
-
- integer? [:byte :short :int :long :bigint]
- float? [:float :double]
- decimal? [:bigdec]
- ratio? [:ratio]
- rational? [:byte :short :int :long :bigint :ratio :bigdec]
- number? [:byte :short :int :long :bigint :ratio :bigdec :float :double]
-
- ; character?
- symbol? [:symbol]
- keyword? [:keyword]
-
- string? [:empty-string :string]
- ; regex?
-
- list? [:empty-list :list]
- vector? [:empty-vector :vector]
- map? [:empty-map :map]
- set? [:empty-set :set]
-
- coll? [:empty-list :list
- :empty-lazy-seq :lazy-seq
- :empty-vector :vector
- :empty-map :map
- :empty-set :set]
-
- seq? [:empty-list :list
- :empty-lazy-seq :lazy-seq]
- ; array?
-
- fn? [:fn]
- ifn? [:fn
- :empty-vector :vector :empty-map :map :empty-set :set
- :keyword :symbol :var]
-
- class? [:class]
- var? [:var]
- delay? [:delay]
-})
-
-
-;; Test all type predicates against all data types
-;;
-(defn- get-fn-name [f]
- (str
- (apply str (nthnext (first (.split (str f) "_"))
- (count "clojure.core$")))
- "?"))
-
-(deftest test-type-preds
- (doseq [tp type-preds]
- (doseq [dt sample-data]
- (if (some #(= % (first dt)) (second tp))
- (is ((first tp) (second dt))
- (pr-str (list (get-fn-name (first tp)) (second dt))))
- (is (not ((first tp) (second dt)))
- (pr-str (list 'not (list (get-fn-name (first tp)) (second dt)))))))))
-
-
-;; Additional tests:
-;; http://groups.google.com/group/clojure/browse_thread/thread/537761a06edb4b06/bfd4f0705b746a38
-;;
-(deftest test-string?-more
- (are (not (string? _))
- (new java.lang.StringBuilder "abc")
- (new java.lang.StringBuffer "xyz")))
diff --git a/src/clojure/contrib/test_clojure/printer.clj b/src/clojure/contrib/test_clojure/printer.clj
deleted file mode 100644
index 4e307099..00000000
--- a/src/clojure/contrib/test_clojure/printer.clj
+++ /dev/null
@@ -1,81 +0,0 @@
-;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; clojure.contrib.test-clojure.printer
-;;
-;; scgilardi (gmail)
-;; Created 29 October 2008
-
-(ns clojure.contrib.test-clojure.printer
- (:use clojure.contrib.test-is))
-
-(deftest print-length-empty-seq
- (let [coll () val "()"]
- (is (= val (binding [*print-length* 0] (print-str coll))))
- (is (= val (binding [*print-length* 1] (print-str coll))))))
-
-(deftest print-length-seq
- (let [coll (range 5)
- length-val '((0 "(...)")
- (1 "(0 ...)")
- (2 "(0 1 ...)")
- (3 "(0 1 2 ...)")
- (4 "(0 1 2 3 ...)")
- (5 "(0 1 2 3 4)"))]
- (doseq [[length val] length-val]
- (binding [*print-length* length]
- (is (= val (print-str coll)))))))
-
-(deftest print-length-empty-vec
- (let [coll [] val "[]"]
- (is (= val (binding [*print-length* 0] (print-str coll))))
- (is (= val (binding [*print-length* 1] (print-str coll))))))
-
-(deftest print-length-vec
- (let [coll [0 1 2 3 4]
- length-val '((0 "[...]")
- (1 "[0 ...]")
- (2 "[0 1 ...]")
- (3 "[0 1 2 ...]")
- (4 "[0 1 2 3 ...]")
- (5 "[0 1 2 3 4]"))]
- (doseq [[length val] length-val]
- (binding [*print-length* length]
- (is (= val (print-str coll)))))))
-
-(deftest print-level-seq
- (let [coll '(0 (1 (2 (3 (4)))))
- level-val '((0 "#")
- (1 "(0 #)")
- (2 "(0 (1 #))")
- (3 "(0 (1 (2 #)))")
- (4 "(0 (1 (2 (3 #))))")
- (5 "(0 (1 (2 (3 (4)))))"))]
- (doseq [[level val] level-val]
- (binding [*print-level* level]
- (is (= val (print-str coll)))))))
-
-(deftest print-level-length-coll
- (let [coll '(if (member x y) (+ (first x) 3) (foo (a b c d "Baz")))
- level-length-val
- '((0 1 "#")
- (1 1 "(if ...)")
- (1 2 "(if # ...)")
- (1 3 "(if # # ...)")
- (1 4 "(if # # #)")
- (2 1 "(if ...)")
- (2 2 "(if (member x ...) ...)")
- (2 3 "(if (member x y) (+ # 3) ...)")
- (3 2 "(if (member x ...) ...)")
- (3 3 "(if (member x y) (+ (first x) 3) ...)")
- (3 4 "(if (member x y) (+ (first x) 3) (foo (a b c d ...)))")
- (3 5 "(if (member x y) (+ (first x) 3) (foo (a b c d Baz)))"))]
- (doseq [[level length val] level-length-val]
- (binding [*print-level* level
- *print-length* length]
- (is (= val (print-str coll)))))))
diff --git a/src/clojure/contrib/test_clojure/reader.clj b/src/clojure/contrib/test_clojure/reader.clj
deleted file mode 100644
index 3c771934..00000000
--- a/src/clojure/contrib/test_clojure/reader.clj
+++ /dev/null
@@ -1,203 +0,0 @@
-;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; Tests for the Clojure functions documented at the URL:
-;;
-;; http://clojure.org/Reader
-;;
-;; scgilardi (gmail)
-;; Created 22 October 2008
-
-(ns clojure.contrib.test-clojure.reader
- (:use clojure.contrib.test-is))
-
-;; Symbols
-
-(deftest Symbols
- (is (= 'abc (symbol "abc")))
- (is (= '*+!-_? (symbol "*+!-_?")))
- (is (= 'abc:def:ghi (symbol "abc:def:ghi")))
- (is (= 'abc/def (symbol "abc" "def")))
- (is (= 'abc.def/ghi (symbol "abc.def" "ghi")))
- (is (= 'abc/def.ghi (symbol "abc" "def.ghi")))
- (is (= 'abc:def/ghi:jkl.mno (symbol "abc:def" "ghi:jkl.mno")))
- (is (instance? clojure.lang.Symbol 'alphabet))
- )
-
-;; Literals
-
-(deftest Literals
- ; 'nil 'false 'true are reserved by Clojure and are not symbols
- (is (= 'nil nil))
- (is (= 'false false))
- (is (= 'true true)) )
-
-;; Strings
-
-(deftest Strings
- (is (= "abcde" (str \a \b \c \d \e)))
- (is (= "abc
- def" (str \a \b \c \newline \space \space \d \e \f)))
- )
-
-;; Numbers
-
-(deftest Numbers
-
- ; Read Integer
- (is (instance? Integer 2147483647))
- (is (instance? Integer +1))
- (is (instance? Integer 1))
- (is (instance? Integer +0))
- (is (instance? Integer 0))
- (is (instance? Integer -0))
- (is (instance? Integer -1))
- (is (instance? Integer -2147483648))
-
- ; Read Long
- (is (instance? Long 2147483648))
- (is (instance? Long -2147483649))
- (is (instance? Long 9223372036854775807))
- (is (instance? Long -9223372036854775808))
-
- ;; Numeric constants of different types don't wash out. Regression fixed in
- ;; r1157. Previously the compiler saw 0 and 0.0 as the same constant and
- ;; caused the sequence to be built of Doubles.
- (let [x 0.0]
- (let [sequence (loop [i 0 l '()]
- (if (< i 5)
- (recur (inc i) (conj l i))
- l))]
- (is (= [4 3 2 1 0] sequence))
- (is (every? #(instance? Integer %)
- sequence))))
-
- ; Read BigInteger
- (is (instance? BigInteger 9223372036854775808))
- (is (instance? BigInteger -9223372036854775809))
- (is (instance? BigInteger 10000000000000000000000000000000000000000000000000))
- (is (instance? BigInteger -10000000000000000000000000000000000000000000000000))
-
- ; Read Double
- (is (instance? Double +1.0e1))
- (is (instance? Double +1.0))
- (is (instance? Double 1.0))
- (is (instance? Double +0.0))
- (is (instance? Double 0.0))
- (is (instance? Double -0.0))
- (is (instance? Double -1.0))
- (is (instance? Double -1.0e1))
-
- ; Read BigDecimal
- (is (instance? BigDecimal 9223372036854775808M))
- (is (instance? BigDecimal -9223372036854775809M))
- (is (instance? BigDecimal 2147483647M))
- (is (instance? BigDecimal +1M))
- (is (instance? BigDecimal 1M))
- (is (instance? BigDecimal +0M))
- (is (instance? BigDecimal 0M))
- (is (instance? BigDecimal -0M))
- (is (instance? BigDecimal -1M))
- (is (instance? BigDecimal -2147483648M))
- (is (instance? BigDecimal +1.0M))
- (is (instance? BigDecimal 1.0M))
- (is (instance? BigDecimal +0.0M))
- (is (instance? BigDecimal 0.0M))
- (is (instance? BigDecimal -0.0M))
- (is (instance? BigDecimal -1.0M))
-)
-
-;; Characters
-
-(deftest t-Characters)
-
-;; nil
-
-(deftest t-nil)
-
-;; Booleans
-
-(deftest t-Booleans)
-
-;; Keywords
-
-(deftest t-Keywords)
-
-;; Lists
-
-(deftest t-Lists)
-
-;; Vectors
-
-(deftest t-Vectors)
-
-;; Maps
-
-(deftest t-Maps)
-
-;; Sets
-
-(deftest t-Sets)
-
-;; Macro characters
-
-;; Quote (')
-
-(deftest t-Quote)
-
-;; Character (\)
-
-(deftest t-Character)
-
-;; Comment (;)
-
-(deftest t-Comment)
-
-;; Meta (^)
-
-(deftest t-Meta)
-
-;; Deref (@)
-
-(deftest t-Deref)
-
-;; Dispatch (#)
-
-;; #{} - see Sets above
-
-;; Regex patterns (#"pattern")
-
-(deftest t-Regex)
-
-;; Metadata (#^)
-
-(deftest t-Metadata)
-
-;; Var-quote (#')
-
-(deftest t-Var-quote)
-
-;; Anonymous function literal (#())
-
-(deftest t-Anonymouns-function-literal)
-
-;; Syntax-quote (`, note, the "backquote" character), Unquote (~) and
-;; Unquote-splicing (~@)
-
-(deftest t-Syntax-quote
- (are (= _1 _2)
- `() () ; was NPE before SVN r1337
- ))
-
-;; (read)
-;; (read stream)
-;; (read stream eof-is-error)
-;; (read stream eof-is-error eof-value)
-;; (read stream eof-is-error eof-value is-recursive)
-
-(deftest t-read)
diff --git a/src/clojure/contrib/test_clojure/refs.clj b/src/clojure/contrib/test_clojure/refs.clj
deleted file mode 100644
index dcc43cc4..00000000
--- a/src/clojure/contrib/test_clojure/refs.clj
+++ /dev/null
@@ -1,19 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.refs
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/refs
-
-; ref
-; deref, @-reader-macro
-; dosync io!
-; ensure ref-set alter commute
-; set-validator get-validator
-
diff --git a/src/clojure/contrib/test_clojure/sequences.clj b/src/clojure/contrib/test_clojure/sequences.clj
deleted file mode 100644
index 762e157a..00000000
--- a/src/clojure/contrib/test_clojure/sequences.clj
+++ /dev/null
@@ -1,982 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-
-(ns clojure.contrib.test-clojure.sequences
- (:use clojure.contrib.test-is))
-
-
-;; *** Tests ***
-
-; TODO:
-; apply, map, reduce, filter, remove
-; and more...
-
-
-(deftest test-equality
- ; lazy sequences
- (are [x y] (= x y)
- ; fixed SVN 1288 - LazySeq and EmptyList equals/equiv
- ; http://groups.google.com/group/clojure/browse_frm/thread/286d807be9cae2a5#
- (map inc nil) ()
- (map inc ()) ()
- (map inc []) ()
- (map inc #{}) ()
- (map inc {}) () ))
-
-
-(deftest test-lazy-seq
- (are [x] (seq? x)
- (lazy-seq nil)
- (lazy-seq [])
- (lazy-seq [1 2]))
-
- (are [x y] (= x y)
- (lazy-seq nil) ()
- (lazy-seq [nil]) '(nil)
-
- (lazy-seq ()) ()
- (lazy-seq []) ()
- (lazy-seq #{}) ()
- (lazy-seq {}) ()
- (lazy-seq "") ()
- (lazy-seq (into-array [])) ()
-
- (lazy-seq (list 1 2)) '(1 2)
- (lazy-seq [1 2]) '(1 2)
- (lazy-seq (sorted-set 1 2)) '(1 2)
- (lazy-seq (sorted-map :a 1 :b 2)) '([:a 1] [:b 2])
- (lazy-seq "abc") '(\a \b \c)
- (lazy-seq (into-array [1 2])) '(1 2) ))
-
-
-(deftest test-seq
- (is (not (seq? (seq []))))
- (is (seq? (seq [1 2])))
-
- (are [x y] (= x y)
- (seq nil) nil
- (seq [nil]) '(nil)
-
- (seq ()) nil
- (seq []) nil
- (seq #{}) nil
- (seq {}) nil
- (seq "") nil
- (seq (into-array [])) nil
-
- (seq (list 1 2)) '(1 2)
- (seq [1 2]) '(1 2)
- (seq (sorted-set 1 2)) '(1 2)
- (seq (sorted-map :a 1 :b 2)) '([:a 1] [:b 2])
- (seq "abc") '(\a \b \c)
- (seq (into-array [1 2])) '(1 2) ))
-
-
-(deftest test-cons
- (is (thrown? IllegalArgumentException (cons 1 2)))
- (are [x y] (= x y)
- (cons 1 nil) '(1)
- (cons nil nil) '(nil)
-
- (cons \a nil) '(\a)
- (cons \a "") '(\a)
- (cons \a "bc") '(\a \b \c)
-
- (cons 1 ()) '(1)
- (cons 1 '(2 3)) '(1 2 3)
-
- (cons 1 []) [1]
- (cons 1 [2 3]) [1 2 3]
-
- (cons 1 #{}) '(1)
- (cons 1 (sorted-set 2 3)) '(1 2 3)
-
- (cons 1 (into-array [])) '(1)
- (cons 1 (into-array [2 3])) '(1 2 3) ))
-
-
-(deftest test-empty
- (are [x y] (and (= (empty x) y)
- (= (class (empty x)) (class y)))
- nil nil
-
- () ()
- '(1 2) ()
-
- [] []
- [1 2] []
-
- {} {}
- {:a 1 :b 2} {}
-
- #{} #{}
- #{1 2} #{}
-
- (seq ()) nil ; (seq ()) => nil
- (seq '(1 2)) ()
-
- (seq []) nil ; (seq []) => nil
- (seq [1 2]) ()
-
- (seq "") nil ; (seq "") => nil
- (seq "ab") ()
-
- (lazy-seq ()) ()
- (lazy-seq '(1 2)) ()
-
- (lazy-seq []) ()
- (lazy-seq [1 2]) ()
-
- ; non-coll, non-seq => nil
- 42 nil
- 1.2 nil
- "abc" nil ))
-
-
-(deftest test-not-empty
- ; empty coll/seq => nil
- (are [x] (= (not-empty x) nil)
- ()
- []
- {}
- #{}
- (seq ())
- (seq [])
- (lazy-seq ())
- (lazy-seq []) )
-
- ; non-empty coll/seq => identity
- (are [x] (and (= (not-empty x) x)
- (= (class (not-empty x)) (class x)))
- '(1 2)
- [1 2]
- {:a 1}
- #{1 2}
- (seq '(1 2))
- (seq [1 2])
- (lazy-seq '(1 2))
- (lazy-seq [1 2]) ))
-
-
-(deftest test-first
- (is (thrown? IllegalArgumentException (first)))
- (is (thrown? IllegalArgumentException (first true)))
- (is (thrown? IllegalArgumentException (first false)))
- (is (thrown? IllegalArgumentException (first 1)))
- (is (thrown? IllegalArgumentException (first 1 2)))
- (is (thrown? IllegalArgumentException (first \a)))
- (is (thrown? IllegalArgumentException (first 's)))
- (is (thrown? IllegalArgumentException (first :k)))
- (are [x y] (= x y)
- (first nil) nil
-
- ; string
- (first "") nil
- (first "a") \a
- (first "abc") \a
-
- ; list
- (first ()) nil
- (first '(1)) 1
- (first '(1 2 3)) 1
-
- (first '(nil)) nil
- (first '(1 nil)) 1
- (first '(nil 2)) nil
- (first '(())) ()
- (first '(() nil)) ()
- (first '(() 2 nil)) ()
-
- ; vector
- (first []) nil
- (first [1]) 1
- (first [1 2 3]) 1
-
- (first [nil]) nil
- (first [1 nil]) 1
- (first [nil 2]) nil
- (first [[]]) []
- (first [[] nil]) []
- (first [[] 2 nil]) []
-
- ; set
- (first #{}) nil
- (first #{1}) 1
- (first (sorted-set 1 2 3)) 1
-
- (first #{nil}) nil
- (first (sorted-set 1 nil)) nil
- (first (sorted-set nil 2)) nil
- (first #{#{}}) #{}
- (first (sorted-set #{} nil)) nil
- ;(first (sorted-set #{} 2 nil)) nil
-
- ; map
- (first {}) nil
- (first (sorted-map :a 1)) '(:a 1)
- (first (sorted-map :a 1 :b 2 :c 3)) '(:a 1)
-
- ; array
- (first (into-array [])) nil
- (first (into-array [1])) 1
- (first (into-array [1 2 3])) 1
- (first (to-array [nil])) nil
- (first (to-array [1 nil])) 1
- (first (to-array [nil 2])) nil ))
-
-
-(deftest test-next
- (is (thrown? IllegalArgumentException (next)))
- (is (thrown? IllegalArgumentException (next true)))
- (is (thrown? IllegalArgumentException (next false)))
- (is (thrown? IllegalArgumentException (next 1)))
- (is (thrown? IllegalArgumentException (next 1 2)))
- (is (thrown? IllegalArgumentException (next \a)))
- (is (thrown? IllegalArgumentException (next 's)))
- (is (thrown? IllegalArgumentException (next :k)))
- (are [x y] (= x y)
- (next nil) nil
-
- ; string
- (next "") nil
- (next "a") nil
- (next "abc") '(\b \c)
-
- ; list
- (next ()) nil
- (next '(1)) nil
- (next '(1 2 3)) '(2 3)
-
- (next '(nil)) nil
- (next '(1 nil)) '(nil)
- (next '(1 ())) '(())
- (next '(nil 2)) '(2)
- (next '(())) nil
- (next '(() nil)) '(nil)
- (next '(() 2 nil)) '(2 nil)
-
- ; vector
- (next []) nil
- (next [1]) nil
- (next [1 2 3]) [2 3]
-
- (next [nil]) nil
- (next [1 nil]) [nil]
- (next [1 []]) [[]]
- (next [nil 2]) [2]
- (next [[]]) nil
- (next [[] nil]) [nil]
- (next [[] 2 nil]) [2 nil]
-
- ; set
- (next #{}) nil
- (next #{1}) nil
- (next (sorted-set 1 2 3)) '(2 3)
-
- (next #{nil}) nil
- (next (sorted-set 1 nil)) '(1)
- (next (sorted-set nil 2)) '(2)
- (next #{#{}}) nil
- (next (sorted-set #{} nil)) '(#{})
- ;(next (sorted-set #{} 2 nil)) #{}
-
- ; map
- (next {}) nil
- (next (sorted-map :a 1)) nil
- (next (sorted-map :a 1 :b 2 :c 3)) '((:b 2) (:c 3))
-
- ; array
- (next (into-array [])) nil
- (next (into-array [1])) nil
- (next (into-array [1 2 3])) '(2 3)
-
- (next (to-array [nil])) nil
- (next (to-array [1 nil])) '(nil)
- ;(next (to-array [1 (into-array [])])) (list (into-array []))
- (next (to-array [nil 2])) '(2)
- (next (to-array [(into-array [])])) nil
- (next (to-array [(into-array []) nil])) '(nil)
- (next (to-array [(into-array []) 2 nil])) '(2 nil) ))
-
-
-(deftest test-last
- (are [x y] (= x y)
- (last nil) nil
-
- ; list
- (last ()) nil
- (last '(1)) 1
- (last '(1 2 3)) 3
-
- (last '(nil)) nil
- (last '(1 nil)) nil
- (last '(nil 2)) 2
- (last '(())) ()
- (last '(() nil)) nil
- (last '(() 2 nil)) nil
-
- ; vector
- (last []) nil
- (last [1]) 1
- (last [1 2 3]) 3
-
- (last [nil]) nil
- (last [1 nil]) nil
- (last [nil 2]) 2
- (last [[]]) []
- (last [[] nil]) nil
- (last [[] 2 nil]) nil
-
- ; set
- (last #{}) nil
- (last #{1}) 1
- (last (sorted-set 1 2 3)) 3
-
- (last #{nil}) nil
- (last (sorted-set 1 nil)) 1
- (last (sorted-set nil 2)) 2
- (last #{#{}}) #{}
- (last (sorted-set #{} nil)) #{}
- ;(last (sorted-set #{} 2 nil)) nil
-
- ; map
- (last {}) nil
- (last (sorted-map :a 1)) [:a 1]
- (last (sorted-map :a 1 :b 2 :c 3)) [:c 3]
-
- ; string
- (last "") nil
- (last "a") \a
- (last "abc") \c
-
- ; array
- (last (into-array [])) nil
- (last (into-array [1])) 1
- (last (into-array [1 2 3])) 3
- (last (to-array [nil])) nil
- (last (to-array [1 nil])) nil
- (last (to-array [nil 2])) 2 ))
-
-
-;; (ffirst coll) = (first (first coll))
-;;
-(deftest test-ffirst
- (is (thrown? IllegalArgumentException (ffirst)))
- (are [x y] (= x y)
- (ffirst nil) nil
-
- (ffirst ()) nil
- (ffirst '((1 2) (3 4))) 1
-
- (ffirst []) nil
- (ffirst [[1 2] [3 4]]) 1
-
- (ffirst {}) nil
- (ffirst {:a 1}) :a
-
- (ffirst #{}) nil
- (ffirst #{[1 2]}) 1 ))
-
-
-;; (fnext coll) = (first (next coll)) = (second coll)
-;;
-(deftest test-fnext
- (is (thrown? IllegalArgumentException (fnext)))
- (are [x y] (= x y)
- (fnext nil) nil
-
- (fnext ()) nil
- (fnext '(1)) nil
- (fnext '(1 2 3 4)) 2
-
- (fnext []) nil
- (fnext [1]) nil
- (fnext [1 2 3 4]) 2
-
- (fnext {}) nil
- (fnext (sorted-map :a 1)) nil
- (fnext (sorted-map :a 1 :b 2)) [:b 2]
-
- (fnext #{}) nil
- (fnext #{1}) nil
- (fnext (sorted-set 1 2 3 4)) 2 ))
-
-
-;; (nfirst coll) = (next (first coll))
-;;
-(deftest test-nfirst
- (is (thrown? IllegalArgumentException (nfirst)))
- (are [x y] (= x y)
- (nfirst nil) nil
-
- (nfirst ()) nil
- (nfirst '((1 2 3) (4 5 6))) '(2 3)
-
- (nfirst []) nil
- (nfirst [[1 2 3] [4 5 6]]) '(2 3)
-
- (nfirst {}) nil
- (nfirst {:a 1}) '(1)
-
- (nfirst #{}) nil
- (nfirst #{[1 2]}) '(2) ))
-
-
-;; (nnext coll) = (next (next coll))
-;;
-(deftest test-nnext
- (is (thrown? IllegalArgumentException (nnext)))
- (are [x y] (= x y)
- (nnext nil) nil
-
- (nnext ()) nil
- (nnext '(1)) nil
- (nnext '(1 2)) nil
- (nnext '(1 2 3 4)) '(3 4)
-
- (nnext []) nil
- (nnext [1]) nil
- (nnext [1 2]) nil
- (nnext [1 2 3 4]) '(3 4)
-
- (nnext {}) nil
- (nnext (sorted-map :a 1)) nil
- (nnext (sorted-map :a 1 :b 2)) nil
- (nnext (sorted-map :a 1 :b 2 :c 3 :d 4)) '([:c 3] [:d 4])
-
- (nnext #{}) nil
- (nnext #{1}) nil
- (nnext (sorted-set 1 2)) nil
- (nnext (sorted-set 1 2 3 4)) '(3 4) ))
-
-
-(deftest test-nth
- ; maps, sets are not supported
- (is (thrown? UnsupportedOperationException (nth {} 0)))
- (is (thrown? UnsupportedOperationException (nth {:a 1 :b 2} 0)))
- (is (thrown? UnsupportedOperationException (nth #{} 0)))
- (is (thrown? UnsupportedOperationException (nth #{1 2 3} 0)))
-
- ; out of bounds
- (is (thrown? IndexOutOfBoundsException (nth '() 0)))
- (is (thrown? IndexOutOfBoundsException (nth '(1 2 3) 5)))
- (is (thrown? IndexOutOfBoundsException (nth '() -1)))
- (is (thrown? IndexOutOfBoundsException (nth '(1 2 3) -1)))
-
- (is (thrown? IndexOutOfBoundsException (nth [] 0)))
- (is (thrown? IndexOutOfBoundsException (nth [1 2 3] 5)))
- (is (thrown? IndexOutOfBoundsException (nth [] -1)))
- (is (thrown? ArrayIndexOutOfBoundsException (nth [1 2 3] -1))) ; ???
-
- (is (thrown? ArrayIndexOutOfBoundsException (nth (into-array []) 0)))
- (is (thrown? ArrayIndexOutOfBoundsException (nth (into-array [1 2 3]) 5)))
- (is (thrown? ArrayIndexOutOfBoundsException (nth (into-array []) -1)))
- (is (thrown? ArrayIndexOutOfBoundsException (nth (into-array [1 2 3]) -1)))
-
- (is (thrown? StringIndexOutOfBoundsException (nth "" 0)))
- (is (thrown? StringIndexOutOfBoundsException (nth "abc" 5)))
- (is (thrown? StringIndexOutOfBoundsException (nth "" -1)))
- (is (thrown? StringIndexOutOfBoundsException (nth "abc" -1)))
-
- (is (thrown? IndexOutOfBoundsException (nth (java.util.ArrayList. []) 0)))
- (is (thrown? IndexOutOfBoundsException (nth (java.util.ArrayList. [1 2 3]) 5)))
- (is (thrown? ArrayIndexOutOfBoundsException (nth (java.util.ArrayList. []) -1))) ; ???
- (is (thrown? ArrayIndexOutOfBoundsException (nth (java.util.ArrayList. [1 2 3]) -1))) ; ???
-
- (are [x y] (= x y)
- (nth '(1) 0) 1
- (nth '(1 2 3) 0) 1
- (nth '(1 2 3 4 5) 1) 2
- (nth '(1 2 3 4 5) 4) 5
- (nth '(1 2 3) 5 :not-found) :not-found
-
- (nth [1] 0) 1
- (nth [1 2 3] 0) 1
- (nth [1 2 3 4 5] 1) 2
- (nth [1 2 3 4 5] 4) 5
- (nth [1 2 3] 5 :not-found) :not-found
-
- (nth (into-array [1]) 0) 1
- (nth (into-array [1 2 3]) 0) 1
- (nth (into-array [1 2 3 4 5]) 1) 2
- (nth (into-array [1 2 3 4 5]) 4) 5
- (nth (into-array [1 2 3]) 5 :not-found) :not-found
-
- (nth "a" 0) \a
- (nth "abc" 0) \a
- (nth "abcde" 1) \b
- (nth "abcde" 4) \e
- (nth "abc" 5 :not-found) :not-found
-
- (nth (java.util.ArrayList. [1]) 0) 1
- (nth (java.util.ArrayList. [1 2 3]) 0) 1
- (nth (java.util.ArrayList. [1 2 3 4 5]) 1) 2
- (nth (java.util.ArrayList. [1 2 3 4 5]) 4) 5
- (nth (java.util.ArrayList. [1 2 3]) 5 :not-found) :not-found )
-
- ; regex Matchers
- (let [m (re-matcher #"(a)(b)" "ababaa")]
- (re-find m) ; => ["ab" "a" "b"]
- (are [x y] (= x y)
- (nth m 0) "ab"
- (nth m 1) "a"
- (nth m 2) "b"
- (nth m 3 :not-found) :not-found
- (nth m -1 :not-found) :not-found )
- (is (thrown? IndexOutOfBoundsException (nth m 3)))
- (is (thrown? IndexOutOfBoundsException (nth m -1))))
-
- (let [m (re-matcher #"c" "ababaa")]
- (re-find m) ; => nil
- (are [x y] (= x y)
- (nth m 0 :not-found) :not-found
- (nth m 2 :not-found) :not-found
- (nth m -1 :not-found) :not-found )
- (is (thrown? IllegalStateException (nth m 0)))
- (is (thrown? IllegalStateException (nth m 2)))
- (is (thrown? IllegalStateException (nth m -1)))))
-
-
-; distinct was broken for nil & false:
-; fixed in rev 1278:
-; http://code.google.com/p/clojure/source/detail?r=1278
-;
-(deftest test-distinct
- (are [x y] (= x y)
- (distinct ()) ()
- (distinct '(1)) '(1)
- (distinct '(1 2 3)) '(1 2 3)
- (distinct '(1 2 3 1 1 1)) '(1 2 3)
- (distinct '(1 1 1 2)) '(1 2)
- (distinct '(1 2 1 2)) '(1 2)
-
- (distinct []) ()
- (distinct [1]) '(1)
- (distinct [1 2 3]) '(1 2 3)
- (distinct [1 2 3 1 2 2 1 1]) '(1 2 3)
- (distinct [1 1 1 2]) '(1 2)
- (distinct [1 2 1 2]) '(1 2)
-
- (distinct "") ()
- (distinct "a") '(\a)
- (distinct "abc") '(\a \b \c)
- (distinct "abcabab") '(\a \b \c)
- (distinct "aaab") '(\a \b)
- (distinct "abab") '(\a \b) )
-
- (are [x] (= (distinct [x x]) [x])
- 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} ))
-
-
-(deftest test-interpose
- (are [x y] (= x y)
- (interpose 0 []) ()
- (interpose 0 [1]) '(1)
- (interpose 0 [1 2]) '(1 0 2)
- (interpose 0 [1 2 3]) '(1 0 2 0 3) ))
-
-
-(deftest test-interleave
- (are [x y] (= x y)
- (interleave [1 2] [3 4]) '(1 3 2 4)
-
- (interleave [1] [3 4]) '(1 3)
- (interleave [1 2] [3]) '(1 3)
-
- (interleave [] [3 4]) ()
- (interleave [1 2] []) ()
- (interleave [] []) () ))
-
-
-(deftest test-zipmap
- (are [x y] (= x y)
- (zipmap [:a :b] [1 2]) {:a 1 :b 2}
-
- (zipmap [:a] [1 2]) {:a 1}
- (zipmap [:a :b] [1]) {:a 1}
-
- (zipmap [] [1 2]) {}
- (zipmap [:a :b] []) {}
- (zipmap [] []) {} ))
-
-
-(deftest test-concat
- (are [x y] (= x y)
- (concat) ()
-
- (concat []) ()
- (concat [1 2]) '(1 2)
-
- (concat [1 2] [3 4]) '(1 2 3 4)
- (concat [] [3 4]) '(3 4)
- (concat [1 2] []) '(1 2)
- (concat [] []) ()
-
- (concat [1 2] [3 4] [5 6]) '(1 2 3 4 5 6) ))
-
-
-(deftest test-cycle
- (are [x y] (= x y)
- (cycle []) ()
-
- (take 3 (cycle [1])) '(1 1 1)
- (take 5 (cycle [1 2 3])) '(1 2 3 1 2)
-
- (take 3 (cycle [nil])) '(nil nil nil) ))
-
-
-(deftest test-partition
- (are [x y] (= x y)
- (partition 2 [1 2 3]) '((1 2))
- (partition 2 [1 2 3 4]) '((1 2) (3 4))
- (partition 2 []) ()
-
- (partition 2 3 [1 2 3 4 5 6 7]) '((1 2) (4 5))
- (partition 2 3 [1 2 3 4 5 6 7 8]) '((1 2) (4 5) (7 8))
- (partition 2 3 []) ()
-
- (partition 1 []) ()
- (partition 1 [1 2 3]) '((1) (2) (3))
-
- (partition 5 [1 2 3]) ()
-
-; (partition 0 [1 2 3]) (repeat nil) ; infinite sequence of nil
- (partition -1 [1 2 3]) ()
- (partition -2 [1 2 3]) () ))
-
-
-(deftest test-reverse
- (are [x y] (= x y)
- (reverse nil) () ; since SVN 1294
- (reverse []) ()
- (reverse [1]) '(1)
- (reverse [1 2 3]) '(3 2 1) ))
-
-
-(deftest test-take
- (are [x y] (= x y)
- (take 1 [1 2 3 4 5]) '(1)
- (take 3 [1 2 3 4 5]) '(1 2 3)
- (take 5 [1 2 3 4 5]) '(1 2 3 4 5)
- (take 9 [1 2 3 4 5]) '(1 2 3 4 5)
-
- (take 0 [1 2 3 4 5]) ()
- (take -1 [1 2 3 4 5]) ()
- (take -2 [1 2 3 4 5]) () ))
-
-
-(deftest test-drop
- (are [x y] (= x y)
- (drop 1 [1 2 3 4 5]) '(2 3 4 5)
- (drop 3 [1 2 3 4 5]) '(4 5)
- (drop 5 [1 2 3 4 5]) ()
- (drop 9 [1 2 3 4 5]) ()
-
- (drop 0 [1 2 3 4 5]) '(1 2 3 4 5)
- (drop -1 [1 2 3 4 5]) '(1 2 3 4 5)
- (drop -2 [1 2 3 4 5]) '(1 2 3 4 5) ))
-
-
-(deftest test-take-nth
- (are [x y] (= x y)
- (take-nth 1 [1 2 3 4 5]) '(1 2 3 4 5)
- (take-nth 2 [1 2 3 4 5]) '(1 3 5)
- (take-nth 3 [1 2 3 4 5]) '(1 4)
- (take-nth 4 [1 2 3 4 5]) '(1 5)
- (take-nth 5 [1 2 3 4 5]) '(1)
- (take-nth 9 [1 2 3 4 5]) '(1)
-
- ; infinite seq of 1s = (repeat 1)
- ;(take-nth 0 [1 2 3 4 5])
- ;(take-nth -1 [1 2 3 4 5])
- ;(take-nth -2 [1 2 3 4 5])
- ))
-
-
-(deftest test-take-while
- (are [x y] (= x y)
- (take-while pos? []) ()
- (take-while pos? [1 2 3 4]) '(1 2 3 4)
- (take-while pos? [1 2 3 -1]) '(1 2 3)
- (take-while pos? [1 -1 2 3]) '(1)
- (take-while pos? [-1 1 2 3]) ()
- (take-while pos? [-1 -2 -3]) () ))
-
-
-(deftest test-drop-while
- (are [x y] (= x y)
- (drop-while pos? []) ()
- (drop-while pos? [1 2 3 4]) ()
- (drop-while pos? [1 2 3 -1]) '(-1)
- (drop-while pos? [1 -1 2 3]) '(-1 2 3)
- (drop-while pos? [-1 1 2 3]) '(-1 1 2 3)
- (drop-while pos? [-1 -2 -3]) '(-1 -2 -3) ))
-
-
-(deftest test-butlast
- (are [x y] (= x y)
- (butlast []) nil
- (butlast [1]) nil
- (butlast [1 2 3]) '(1 2) ))
-
-
-(deftest test-drop-last
- (are [x y] (= x y)
- ; as butlast
- (drop-last []) ()
- (drop-last [1]) ()
- (drop-last [1 2 3]) '(1 2)
-
- ; as butlast, but lazy
- (drop-last 1 []) ()
- (drop-last 1 [1]) ()
- (drop-last 1 [1 2 3]) '(1 2)
-
- (drop-last 2 []) ()
- (drop-last 2 [1]) ()
- (drop-last 2 [1 2 3]) '(1)
-
- (drop-last 5 []) ()
- (drop-last 5 [1]) ()
- (drop-last 5 [1 2 3]) ()
-
- (drop-last 0 []) ()
- (drop-last 0 [1]) '(1)
- (drop-last 0 [1 2 3]) '(1 2 3)
-
- (drop-last -1 []) ()
- (drop-last -1 [1]) '(1)
- (drop-last -1 [1 2 3]) '(1 2 3)
-
- (drop-last -2 []) ()
- (drop-last -2 [1]) '(1)
- (drop-last -2 [1 2 3]) '(1 2 3) ))
-
-
-(deftest test-split-at
- (is (vector? (split-at 2 [])))
- (is (vector? (split-at 2 [1 2 3])))
-
- (are [x y] (= x y)
- (split-at 2 []) [() ()]
- (split-at 2 [1 2 3 4 5]) [(list 1 2) (list 3 4 5)]
-
- (split-at 5 [1 2 3]) [(list 1 2 3) ()]
- (split-at 0 [1 2 3]) [() (list 1 2 3)]
- (split-at -1 [1 2 3]) [() (list 1 2 3)]
- (split-at -5 [1 2 3]) [() (list 1 2 3)] ))
-
-
-(deftest test-split-with
- (is (vector? (split-with pos? [])))
- (is (vector? (split-with pos? [1 2 -1 0 3 4])))
-
- (are [x y] (= x y)
- (split-with pos? []) [() ()]
- (split-with pos? [1 2 -1 0 3 4]) [(list 1 2) (list -1 0 3 4)]
-
- (split-with pos? [-1 2 3 4 5]) [() (list -1 2 3 4 5)]
- (split-with number? [1 -2 "abc" \x]) [(list 1 -2) (list "abc" \x)] ))
-
-
-(deftest test-repeat
- (is (thrown? IllegalArgumentException (repeat)))
-
- ; infinite sequence => use take
- (are [x y] (= x y)
- (take 0 (repeat 7)) ()
- (take 1 (repeat 7)) '(7)
- (take 2 (repeat 7)) '(7 7)
- (take 5 (repeat 7)) '(7 7 7 7 7) )
-
- ; limited sequence
- (are [x y] (= x y)
- (repeat 0 7) ()
- (repeat 1 7) '(7)
- (repeat 2 7) '(7 7)
- (repeat 5 7) '(7 7 7 7 7)
-
- (repeat -1 7) ()
- (repeat -3 7) () )
-
- ; test different data types
- (are [x] (= (repeat 3 x) (list x x x))
- 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} ))
-
-
-(deftest test-range
- (are [x y] (= x y)
- (range 0) () ; exclusive end!
- (range 1) '(0)
- (range 5) '(0 1 2 3 4)
-
- (range -1) ()
- (range -3) ()
-
- (range 2.5) '(0 1)
- (range 7/3) '(0 1)
-
- (range 0 3) '(0 1 2)
- (range 0 1) '(0)
- (range 0 0) ()
- (range 0 -3) ()
-
- (range 3 6) '(3 4 5)
- (range 3 4) '(3)
- (range 3 3) ()
- (range 3 1) ()
- (range 3 0) ()
- (range 3 -2) ()
-
- (range -2 5) '(-2 -1 0 1 2 3 4)
- (range -2 0) '(-2 -1)
- (range -2 -1) '(-2)
- (range -2 -2) ()
- (range -2 -5) ()
-
- (range 3 9 0) ()
- (range 3 9 1) '(3 4 5 6 7 8)
- (range 3 9 2) '(3 5 7)
- (range 3 9 3) '(3 6)
- (range 3 9 10) '(3)
- (range 3 9 -1) () ))
-
-
-(deftest test-empty?
- (are [x] (empty? x)
- nil
- ()
- (lazy-seq nil) ; => ()
- []
- {}
- #{}
- ""
- (into-array []) )
-
- (are [x] (not (empty? x))
- '(1 2)
- (lazy-seq [1 2])
- [1 2]
- {:a 1 :b 2}
- #{1 2}
- "abc"
- (into-array [1 2]) ))
-
-
-(deftest test-every?
- ; always true for nil or empty coll/seq
- (are [x] (= (every? pos? x) true)
- nil
- () [] {} #{}
- (lazy-seq [])
- (into-array []) )
-
- (are [x y] (= x y)
- true (every? pos? [1])
- true (every? pos? [1 2])
- true (every? pos? [1 2 3 4 5])
-
- false (every? pos? [-1])
- false (every? pos? [-1 -2])
- false (every? pos? [-1 -2 3])
- false (every? pos? [-1 2])
- false (every? pos? [1 -2])
- false (every? pos? [1 2 -3])
- false (every? pos? [1 2 -3 4]) )
-
- (are [x y] (= x y)
- true (every? #{:a} [:a :a])
-;! false (every? #{:a} [:a :b]) ; Issue 68: every? returns nil instead of false
-;! false (every? #{:a} [:b :b]) ; http://code.google.com/p/clojure/issues/detail?id=68
- ))
-
-
-(deftest test-not-every?
- ; always false for nil or empty coll/seq
- (are [x] (= (not-every? pos? x) false)
- nil
- () [] {} #{}
- (lazy-seq [])
- (into-array []) )
-
- (are [x y] (= x y)
- false (not-every? pos? [1])
- false (not-every? pos? [1 2])
- false (not-every? pos? [1 2 3 4 5])
-
- true (not-every? pos? [-1])
- true (not-every? pos? [-1 -2])
- true (not-every? pos? [-1 -2 3])
- true (not-every? pos? [-1 2])
- true (not-every? pos? [1 -2])
- true (not-every? pos? [1 2 -3])
- true (not-every? pos? [1 2 -3 4]) )
-
- (are [x y] (= x y)
- false (not-every? #{:a} [:a :a])
- true (not-every? #{:a} [:a :b])
- true (not-every? #{:a} [:b :b]) ))
-
-
-(deftest test-not-any?
- ; always true for nil or empty coll/seq
- (are [x] (= (not-any? pos? x) true)
- nil
- () [] {} #{}
- (lazy-seq [])
- (into-array []) )
-
- (are [x y] (= x y)
- false (not-any? pos? [1])
- false (not-any? pos? [1 2])
- false (not-any? pos? [1 2 3 4 5])
-
- true (not-any? pos? [-1])
- true (not-any? pos? [-1 -2])
-
- false (not-any? pos? [-1 -2 3])
- false (not-any? pos? [-1 2])
- false (not-any? pos? [1 -2])
- false (not-any? pos? [1 2 -3])
- false (not-any? pos? [1 2 -3 4]) )
-
- (are [x y] (= x y)
- false (not-any? #{:a} [:a :a])
- false (not-any? #{:a} [:a :b])
- true (not-any? #{:a} [:b :b]) ))
-
-
-; TODO: some
-
diff --git a/src/clojure/contrib/test_clojure/special.clj b/src/clojure/contrib/test_clojure/special.clj
deleted file mode 100644
index 298ef534..00000000
--- a/src/clojure/contrib/test_clojure/special.clj
+++ /dev/null
@@ -1,21 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; Test special forms, macros and metadata
-;;
-
-(ns clojure.contrib.test-clojure.special
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/special_forms
-
-; let, letfn
-; quote
-; var
-; fn
-
diff --git a/src/clojure/contrib/test_clojure/test_utils.clj b/src/clojure/contrib/test_clojure/test_utils.clj
deleted file mode 100644
index fc858f2d..00000000
--- a/src/clojure/contrib/test_clojure/test_utils.clj
+++ /dev/null
@@ -1,33 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.test-utils
- (:use [clojure.contrib.combinatorics :only (combinations)]))
-
-
-(defn exception
- "Use this function to ensure that execution of a program doesn't
- reach certain point."
- []
- (throw (new Exception "Exception which should never occur")))
-
-
-(defmacro all-are
- "Test all-with-all.
- (all-are (= _1 _2)
- a b c)
- =>
- (do
- (is (= a b))
- (is (= a c))
- (is (= b c)))"
- [expr & args]
- (concat
- (list 'clojure.contrib.template/do-template (list 'clojure.contrib.test-is/is expr))
- (apply concat (combinations args 2))))
-
diff --git a/src/clojure/contrib/test_clojure/vars.clj b/src/clojure/contrib/test_clojure/vars.clj
deleted file mode 100644
index f3b2e8ff..00000000
--- a/src/clojure/contrib/test_clojure/vars.clj
+++ /dev/null
@@ -1,34 +0,0 @@
-;; Copyright (c) Frantisek Sodomka. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-
-(ns clojure.contrib.test-clojure.vars
- (:use clojure.contrib.test-is))
-
-; http://clojure.org/vars
-
-; def
-; defn defn- defonce
-
-; declare intern binding find-var var
-
-(def a)
-(deftest test-binding
- (are (= _1 _2)
- (eval `(binding [a 4] a)) 4 ; regression in Clojure SVN r1370
- ))
-
-
-; with-local-vars var-get var-set alter-var-root [var? (predicates.clj)]
-; with-in-str with-out-str
-; with-open
-; with-precision
-
-; set-validator get-validator
-
-; doc find-doc test
-