diff options
author | Frantisek Sodomka <fsodomka@gmail.com> | 2009-02-15 21:37:09 +0000 |
---|---|---|
committer | Frantisek Sodomka <fsodomka@gmail.com> | 2009-02-15 21:37:09 +0000 |
commit | 5107e9d5b03204c2a60b47a669821939de7c07ac (patch) | |
tree | aaea7f59a21cdd15c99c5ccc8ed64fda6a73e57e | |
parent | eb1979100191ae02cd11c29b162545d6ff696e67 (diff) |
test data_structures: hash-set; sequences: zipmap
-rw-r--r-- | src/clojure/contrib/test_clojure/data_structures.clj | 136 | ||||
-rw-r--r-- | src/clojure/contrib/test_clojure/sequences.clj | 12 |
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 |