aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrantisek Sodomka <fsodomka@gmail.com>2009-02-15 21:37:09 +0000
committerFrantisek Sodomka <fsodomka@gmail.com>2009-02-15 21:37:09 +0000
commit5107e9d5b03204c2a60b47a669821939de7c07ac (patch)
treeaaea7f59a21cdd15c99c5ccc8ed64fda6a73e57e
parenteb1979100191ae02cd11c29b162545d6ff696e67 (diff)
test data_structures: hash-set; sequences: zipmap
-rw-r--r--src/clojure/contrib/test_clojure/data_structures.clj136
-rw-r--r--src/clojure/contrib/test_clojure/sequences.clj12
2 files changed, 117 insertions, 31 deletions
diff --git a/src/clojure/contrib/test_clojure/data_structures.clj b/src/clojure/contrib/test_clojure/data_structures.clj
index 057c582f..1460e75d 100644
--- a/src/clojure/contrib/test_clojure/data_structures.clj
+++ b/src/clojure/contrib/test_clojure/data_structures.clj
@@ -13,36 +13,110 @@
(deftest test-list
(are (list? _)
- ()
- '()
- (list)
- (list 1 2 3)
- )
+ ()
+ '()
+ (list)
+ (list 1 2 3) )
+
+ ; order is important
+ (are (not (= _1 _2))
+ (list 1 2) (list 2 1)
+ (list 3 1 2) (list 1 2 3) )
+
+ (are (= _1 _2)
+ '() ()
+ (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) ))
+
+
+(deftest test-hash-set
+ (are (set? _)
+ #{}
+ #{1 2}
+ (hash-set)
+ (hash-set 1 2) )
+
+ ; order isn't important
(are (= _1 _2)
- '() ()
- (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)
- )
- (is (not= (list 1 2) (list 2 1)))
-)
+ #{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 (and (= (hash-set _) #{_})
+ (= (hash-set _ _) #{_}))
+ 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 (= _1 _2)
+ ; 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} ))
diff --git a/src/clojure/contrib/test_clojure/sequences.clj b/src/clojure/contrib/test_clojure/sequences.clj
index ffd49fcb..78953734 100644
--- a/src/clojure/contrib/test_clojure/sequences.clj
+++ b/src/clojure/contrib/test_clojure/sequences.clj
@@ -361,6 +361,18 @@
(interleave [] []) nil ))
+(deftest test-zipmap
+ (are (= _1 _2)
+ (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 (= _1 _2)
(concat) nil