diff options
author | Jason Wolfe <jason@w01fe.com> | 2010-09-21 11:56:13 -0700 |
---|---|---|
committer | Stuart Halloway <stu@thinkrelevance.com> | 2010-10-12 19:47:07 -0400 |
commit | 5ca0c1feb7f7260aad257e52f2ddb0d426e2db77 (patch) | |
tree | 518b40f3fec0c804e8d6acc3ab61f3fc56277dfb | |
parent | 351e05a242740cc415524d03e1d424de516eed75 (diff) |
Fix clojure.set/subset? and superset? bugs with false/nil elements
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
-rw-r--r-- | src/clj/clojure/set.clj | 4 | ||||
-rw-r--r-- | test/clojure/test_clojure/clojure_set.clj | 25 |
2 files changed, 23 insertions, 6 deletions
diff --git a/src/clj/clojure/set.clj b/src/clj/clojure/set.clj index af0f65f6..69233ad1 100644 --- a/src/clj/clojure/set.clj +++ b/src/clj/clojure/set.clj @@ -145,7 +145,7 @@ :tag Boolean} [set1 set2] (and (<= (count set1) (count set2)) - (every? set2 set1))) + (every? #(contains? set2 %) set1))) (defn superset? "Is set1 a superset of set2?" @@ -153,7 +153,7 @@ :tag Boolean} [set1 set2] (and (>= (count set1) (count set2)) - (every? set1 set2))) + (every? #(contains? set1 %) set2))) (comment (refer 'set) diff --git a/test/clojure/test_clojure/clojure_set.clj b/test/clojure/test_clojure/clojure_set.clj index 1aa745a4..8d511af4 100644 --- a/test/clojure/test_clojure/clojure_set.clj +++ b/test/clojure/test_clojure/clojure_set.clj @@ -187,11 +187,19 @@ #{} #{1} #{1} #{1} #{1 2} #{1 2} - #{1 2} #{1 2 42}) + #{1 2} #{1 2 42} + #{false} #{false} + #{nil} #{nil} + #{nil} #{nil false} + #{1 2 nil} #{1 2 nil 4}) (are [notsub super] (not (set/subset? notsub super)) #{1} #{} #{2} #{1} - #{1 3} #{1})) + #{1 3} #{1} + #{nil} #{false} + #{false} #{nil} + #{false nil} #{nil} + #{1 2 nil} #{1 2})) (deftest test-superset? (are [super sub] (set/superset? super sub) @@ -199,8 +207,17 @@ #{1} #{} #{1} #{1} #{1 2} #{1 2} - #{1 2 42} #{1 2}) + #{1 2 42} #{1 2} + #{false} #{false} + #{nil} #{nil} + #{false nil} #{false} + #{1 2 4 nil false} #{1 2 nil}) (are [notsuper sub] (not (set/superset? notsuper sub)) #{} #{1} #{2} #{1} - #{1} #{1 3})) + #{1} #{1 3} + #{nil} #{false} + #{false} #{nil} + #{nil} #{false nil} + #{nil 2 3} #{false nil 2 3})) + |