From 7eb44c586c8694189ec1ab7b23191ca9741328c0 Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:14:57 +0300 Subject: [PATCH 1/9] Tests allow nil's and powerset allows any colls --- test/recursion_test.clj | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index 29257ff..b114cd8 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -2,6 +2,10 @@ (:use recursion midje.sweet)) +(defn empty? [x] + (and (seq? x) + (clojure.core/empty? x))) + (facts "product" (product []) => 1 (product [1 2 3]) => 6 @@ -37,7 +41,7 @@ (facts "my-filter" (my-filter odd? [1 2 3 4]) => '(1 3) (my-filter (fn [x] (> x 9000)) [12 49 90 9001]) => '(9001) - (my-filter even? [1 3 5 7]) => '()) + (my-filter even? [1 3 5 7]) => empty?) (facts "sequence-contains?" (sequence-contains? 3 [1 2 3]) => true @@ -47,14 +51,14 @@ (facts "my-take-while" (my-take-while odd? [1 2 3 4]) => '(1) (my-take-while odd? [1 3 4 5]) => '(1 3) - (my-take-while even? [1 3 4 5]) => '() - (my-take-while odd? []) => '()) + (my-take-while even? [1 3 4 5]) => empty? + (my-take-while odd? []) => empty?) (facts "my-drop-while" (my-drop-while odd? [1 2 3 4]) => '(2 3 4) (my-drop-while odd? [1 3 4 5]) => '(4 5) (my-drop-while even? [1 3 4 5]) => '(1 3 4 5) - (my-drop-while odd? []) => '()) + (my-drop-while odd? []) => empty?) (facts "seq=" (seq= [1 2 4] '(1 2 4)) => true @@ -64,7 +68,7 @@ (facts "my-map" (my-map + [1 2 3] [4 4 4]) => '(5 6 7) (my-map + [1 2 3 4] [0 0 0]) => '(1 2 3) - (my-map + [1 2 3] []) => '()) + (my-map + [1 2 3] []) => empty?) (facts "power" (power 2 2) => 4 @@ -85,10 +89,10 @@ (facts "my-repeat" (my-repeat 2 :a) => '(:a :a) (my-repeat 3 "lol") => '("lol" "lol" "lol") - (my-repeat -1 :a) => '()) + (my-repeat -1 :a) => empty?) (facts "my-range" - (my-range 0) => '() + (my-range 0) => empty? (my-range 1) => '(0) (my-range 2) => '(1 0) (my-range 3) => '(2 1 0)) @@ -132,19 +136,19 @@ (facts "my-drop" (my-drop 2 [1 2 3 4]) => '(3 4) - (my-drop 4 [:a :b]) => '()) + (my-drop 4 [:a :b]) => empty?) (facts "halve" (halve [1 2 3 4]) => ['(1 2) '(3 4)] (halve [1 2 3 4 5]) => ['(1 2) '(3 4 5)] - (halve [1]) => ['() '(1)]) + (halve [1]) => [empty? '(1)]) (facts "seq-merge" (seq-merge [4] [1 2 6 7]) => '(1 2 4 6 7) (seq-merge [1 5 7 9] [2 2 8 10]) => '(1 2 2 5 7 8 9 10)) (facts "merge-sort" - (merge-sort []) => '() + (merge-sort []) => empty? (merge-sort [1 2 3]) => '(1 2 3) (merge-sort [5 3 4 17 2 100 1]) => '(1 2 3 4 5 17 100)) @@ -153,11 +157,19 @@ (split-into-monotonics [0 5 4 7 1 3]) => '((0 5) (4 7) (1 3))) (facts "permutations" - (permutations []) => '(()) + (permutations []) => [[]] + (count (permutations (range 5))) => 120 (permutations [1 5 3]) => (just [[1 5 3] [5 1 3] [5 3 1] [1 3 5] [3 1 5] [3 5 1]] :in-any-order)) (facts "powerset" - (powerset []) => #{#{}} - (powerset [1 2 4]) => #{#{} #{4} #{2} #{2 4} #{1} #{1 4} #{1 2} #{1 2 4}}) \ No newline at end of file + (powerset []) => [[]] + (powerset [1 2 4]) => (just empty? + (just 4 :in-any-order) + (just 2 :in-any-order) + (just 2 4 :in-any-order) + (just 1 :in-any-order) + (just 1 4 :in-any-order) + (just 1 2 :in-any-order) + (just 1 2 4 :in-any-order) :in-any-order)) From cd0f1fa55525e9164e579e7243f29e5d7e4839df Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:17:59 +0300 Subject: [PATCH 2/9] fix empty --- test/recursion_test.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index b114cd8..486a897 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -3,7 +3,7 @@ midje.sweet)) (defn empty? [x] - (and (seq? x) + (and (sequential? x) (clojure.core/empty? x))) (facts "product" From 52b19cf2a12d209a3094d3620f269e4c51eec90b Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:19:32 +0300 Subject: [PATCH 3/9] fix moar --- test/recursion_test.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index 486a897..461d0fa 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -164,7 +164,7 @@ :in-any-order)) (facts "powerset" - (powerset []) => [[]] + (powerset []) => [empty?] (powerset [1 2 4]) => (just empty? (just 4 :in-any-order) (just 2 :in-any-order) From 94d98014f0af30a1bb094a283d73a6582f492000 Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:22:05 +0300 Subject: [PATCH 4/9] fix --- test/recursion_test.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index 461d0fa..55cf9c5 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -157,10 +157,10 @@ (split-into-monotonics [0 5 4 7 1 3]) => '((0 5) (4 7) (1 3))) (facts "permutations" - (permutations []) => [[]] + (permutations []) => [empty?] (count (permutations (range 5))) => 120 (permutations [1 5 3]) - => (just [[1 5 3] [5 1 3] [5 3 1] [1 3 5] [3 1 5] [3 5 1]] + => (just [1 5 3] [5 1 3] [5 3 1] [1 3 5] [3 1 5] [3 5 1] :in-any-order)) (facts "powerset" From 16de4b0a4f6d7bfa4e7d8223b1154106727e54c0 Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:27:55 +0300 Subject: [PATCH 5/9] Moar tests --- test/recursion_test.clj | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index 55cf9c5..2d3f6f5 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -141,7 +141,7 @@ (facts "halve" (halve [1 2 3 4]) => ['(1 2) '(3 4)] (halve [1 2 3 4 5]) => ['(1 2) '(3 4 5)] - (halve [1]) => [empty? '(1)]) + (halve [1]) => (just empty? '(1))) (facts "seq-merge" (seq-merge [4] [1 2 6 7]) => '(1 2 4 6 7) @@ -157,14 +157,14 @@ (split-into-monotonics [0 5 4 7 1 3]) => '((0 5) (4 7) (1 3))) (facts "permutations" - (permutations []) => [empty?] + (permutations []) => (just empty?) (count (permutations (range 5))) => 120 (permutations [1 5 3]) => (just [1 5 3] [5 1 3] [5 3 1] [1 3 5] [3 1 5] [3 5 1] :in-any-order)) (facts "powerset" - (powerset []) => [empty?] + (powerset []) => (just empty?) (powerset [1 2 4]) => (just empty? (just 4 :in-any-order) (just 2 :in-any-order) @@ -172,4 +172,5 @@ (just 1 :in-any-order) (just 1 4 :in-any-order) (just 1 2 :in-any-order) - (just 1 2 4 :in-any-order) :in-any-order)) + (just 1 2 4 :in-any-order) :in-any-order) + (count (powerset (range 10))) => 1024) From 5dc4de35c621f91e5eaffbcda0b8a33eb1caed92 Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:47:39 +0300 Subject: [PATCH 6/9] piip --- test/recursion_test.clj | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index 2d3f6f5..a129af7 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -165,12 +165,14 @@ (facts "powerset" (powerset []) => (just empty?) - (powerset [1 2 4]) => (just empty? - (just 4 :in-any-order) - (just 2 :in-any-order) - (just 2 4 :in-any-order) - (just 1 :in-any-order) - (just 1 4 :in-any-order) - (just 1 2 :in-any-order) - (just 1 2 4 :in-any-order) :in-any-order) + (powerset [1 2 4]) => (some-checker + (just empty? + (just 4 :in-any-order) + (just 2 :in-any-order) + (just 2 4 :in-any-order) + (just 1 :in-any-order) + (just 1 4 :in-any-order) + (just 1 2 :in-any-order) + (just 1 2 4 :in-any-order) :in-any-order) + (just #{#{} #{4} #{2} #{2 4} #{1} #{1 4} #{1 2} #{1 2 4}})) (count (powerset (range 10))) => 1024) From 88af506c8975ec9ca7719fe4c0c1cb5104df4cd2 Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:49:32 +0300 Subject: [PATCH 7/9] Fix tests for powerset --- test/recursion_test.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index a129af7..66ac898 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -164,7 +164,7 @@ :in-any-order)) (facts "powerset" - (powerset []) => (just empty?) + (powerset []) => (some-checker (just empty?) #{#{}} (powerset [1 2 4]) => (some-checker (just empty? (just 4 :in-any-order) From 6bc03ebc13ac83281b8f80b8e1989617f77b934e Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:51:36 +0300 Subject: [PATCH 8/9] fix tests --- test/recursion_test.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index 66ac898..6375bd7 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -164,7 +164,7 @@ :in-any-order)) (facts "powerset" - (powerset []) => (some-checker (just empty?) #{#{}} + (powerset []) => (some-checker (just empty?) #{#{}}) (powerset [1 2 4]) => (some-checker (just empty? (just 4 :in-any-order) From b90ae7486a08642b86bc654d37622656515e2756 Mon Sep 17 00:00:00 2001 From: Juhana Laurinharju Date: Tue, 23 Oct 2012 22:52:21 +0300 Subject: [PATCH 9/9] fix tests --- test/recursion_test.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/recursion_test.clj b/test/recursion_test.clj index 6375bd7..a20f279 100644 --- a/test/recursion_test.clj +++ b/test/recursion_test.clj @@ -164,7 +164,7 @@ :in-any-order)) (facts "powerset" - (powerset []) => (some-checker (just empty?) #{#{}}) + (powerset []) => (some-checker (just empty?) (just #{#{}})) (powerset [1 2 4]) => (some-checker (just empty? (just 4 :in-any-order)