diff options
author | devender <devender.gollapally@gmail.com> | 2009-12-10 21:43:14 -0800 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2010-01-27 22:20:33 -0500 |
commit | caaa0f4c96ddf43b6bbe3d760f49701c3f183783 (patch) | |
tree | 5462c94e37782f3352e3d2267581f37b476a141a | |
parent | bac6f727dce54c224ff2649095e4c7b5d4495694 (diff) |
adding more tests for set Fixes #220
Signed-off-by: Chouser <chouser@n01se.net>
-rw-r--r-- | test/clojure/test_clojure/clojure_set.clj | 84 |
1 files changed, 73 insertions, 11 deletions
diff --git a/test/clojure/test_clojure/clojure_set.clj b/test/clojure/test_clojure/clojure_set.clj index 3339134d..b57fa774 100644 --- a/test/clojure/test_clojure/clojure_set.clj +++ b/test/clojure/test_clojure/clojure_set.clj @@ -13,7 +13,6 @@ (:use clojure.test) (:require [clojure.set :as set])) - (deftest test-union (are [x y] (= x y) (set/union) #{} @@ -63,7 +62,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))) @@ -107,14 +105,78 @@ (hash-set 1 2) (hash-set 2 3) (sorted-set 1 2) (sorted-set 2 3)) #{2} )) +(deftest test-difference + (are [x y] (= x y) + ; identity + (set/difference #{}) #{} + (set/difference #{1}) #{1} + (set/difference #{1 2 3}) #{1 2 3} + + ; 2 sets + (set/difference #{1 2} #{1 2}) #{} + (set/difference #{1 2} #{3 4}) #{1 2} + (set/difference #{1 2} #{1}) #{2} + (set/difference #{1 2} #{2}) #{1} + (set/difference #{1 2 4} #{2 3 4 5}) #{1} + + ; 3 sets + (set/difference #{1 2} #{2 3} #{5 2}) #{1} + (set/difference #{1 2 3} #{1 3 4} #{1 3}) #{2} + (set/difference #{1 2 3} #{3 4 5} #{8 2 3}) #{1} )) + +(deftest test-select + (are [x y] (= x y) + (set/select integer? #{}) #{} + (set/select integer? #{1 2}) #{1 2} + (set/select integer? #{1 2 :a :b :c}) #{1 2} + (set/select integer? #{:a :b :c}) #{}) ) + +(def compositions + #{{:name "Art of the Fugue" :composer "J. S. Bach"} + {:name "Musical Offering" :composer "J. S. Bach"} + {:name "Requiem" :composer "Giuseppe Verdi"} + {:name "Requiem" :composer "W. A. Mozart"}}) + +(deftest test-project + (are [x y] (= x y) + (set/project compositions [:name]) #{{:name "Art of the Fugue"} + {:name "Requiem"} + {:name "Musical Offering"}} + (set/project compositions [:composer]) #{{:composer "W. A. Mozart"} + {:composer "Giuseppe Verdi"} + {:composer "J. S. Bach"}} + (set/project compositions [:year]) #{{}} + (set/project #{{}} [:name]) #{{}} )) + +(deftest test-rename + (are [x y] (= x y) + (set/rename compositions {:name :title}) #{{:title "Art of the Fugue" :composer "J. S. Bach"} + {:title "Musical Offering" :composer "J. S. Bach"} + {:title "Requiem" :composer "Giuseppe Verdi"} + {:title "Requiem" :composer "W. A. Mozart"}} + (set/rename compositions {:year :decade}) #{{:name "Art of the Fugue" :composer "J. S. Bach" :decade nil} + {:name "Musical Offering" :composer "J. S. Bach" :decade nil} + {:name "Requiem" :composer "Giuseppe Verdi" :decade nil} + {:name "Requiem" :composer "W. A. Mozart" :decade nil}} + (set/rename #{{}} {:year :decade}) #{{:decade nil}})) + +(deftest test-rename-keys + (are [x y] (= x y) + (set/rename-keys {:a "one" :b "two"} {:a :z}) {:z "one" :b "two"} + )) + +(deftest test-index + (are [x y] (= x y) + (set/index #{{:c 2} {:b 1} {:a 1 :b 2}} [:b]) {{:b 2} #{{:a 1 :b 2}}, {:b 1} #{{:b 1}} {} #{{:c 2}}} + )) -; difference -; -; select -; project -; rename-keys -; rename -; index -; map-invert -; join +(deftest test-join + (are [x y] (= x y) + (set/join compositions compositions) compositions + (set/join compositions #{{:name "Art of the Fugue" :genre "Classical"}}) + #{{:name "Art of the Fugue" :composer "J. S. Bach" :genre "Classical"}} + )) +(deftest test-map-invert + (are [x y] (= x y) + (set/map-invert {:a "one" :b "two"}) {"one" :a "two" :b}))
\ No newline at end of file |