diff --git a/test/propeller/utils_test.cljc b/test/propeller/utils_test.cljc index d11ea87..15a4984 100644 --- a/test/propeller/utils_test.cljc +++ b/test/propeller/utils_test.cljc @@ -32,9 +32,55 @@ (t/is (= 1 (u/count-points '()))) (t/is (= 2 (u/count-points '(:a))))) +<<<<<<< Updated upstream ;(t/deftest seq-zip-test ; (t/is )) ;(t/deftest depth-test ; (t/is (= 3 (u/depth ())))) +======= +(t/testing "choose-random-k" + (t/testing "should return indices that are a member of the original array" + (t/is (every? identity (map #(contains? (set (range 10)) %) (s/choose-random-k 3 (range 10)))))) + (t/testing "should return a list of size k" + (t/is (= (count (s/choose-random-k 7 (range 10))) 7)))) + +(t/testing "delete-at-indices" + (t/testing "should actually remove indicated items" + (t/is (= '(:hi1 :hi2) (s/delete-at-indices '(0 3) '(:hi0 :hi1 :hi2 :hi3))))) + (t/testing "should work with numerical indices" + (t/is (= '(:hi1 :hi2 :hi3) (s/delete-at-indices '(0) '(:hi0 :hi1 :hi2 :hi3))))) + (t/testing "should not delete anything for index out of bounds" + (t/is (= '(:hi1 :hi2 :hi3) (s/delete-at-indices '(0 10) '(:hi0 :hi1 :hi2 :hi3)))) + (t/is (= '(:hi1 :hi2 :hi3) (s/delete-at-indices '(0 -10) '(:hi0 :hi1 :hi2 :hi3)))) + (t/is (= '(:hi1 :hi2 :hi3) (s/delete-at-indices '(-0 -10) '(:hi0 :hi1 :hi2 :hi3))))) + (t/testing "should only delete at single index once" + (t/is (= '(:hi1 :hi2) (s/delete-at-indices '(0 0 0 0 3 3 3) '(:hi0 :hi1 :hi2 :hi3))))) + (t/testing "should return empty list when deleting from empty list" + (t/is (= '() (s/delete-at-indices '(0) '())))) + (t/testing "should be able to delete at arbitrary indices" + (t/is (= (count (s/delete-at-indices (s/choose-random-k 3 (range 10)) (range 10))) 7)))) + +(t/testing "delete-random-k" + (t/testing "should remove the correct amount of items" + (t/is (= (count (s/delete-k-random 3 (range 10))) 7)) + (t/is (= (count (s/delete-k-random 10 (range 10))) 0)) + (t/is (= (count (s/delete-k-random 0 (range 10))) 10))) + (t/testing "should not fail if k >> size of collection" + (t/is (= (count (s/delete-k-random 300 (range 10))) 0)) + (t/is (= (s/delete-k-random 300 '(:hi1 :hi2 :hi3)) '()))) + (t/testing "should not fail if the collection is empty" + (t/is (= (count (s/delete-k-random 300 '())) 0)) + (t/is (= (count (s/delete-k-random 0 '())) 0))) + (t/testing "should maintain order of the remaining items" + (t/is (apply < (s/delete-k-random 3 (range 10)))))) + +(t/testing "auto-simplify-plushy" + (t/testing "should handle having an empty plushy" + (t/is (= (s/auto-simplify-plushy {} '() 100 (fn [argmap data plushy] 0) {} 3 false) '()))) + (let [plushy '(:exec_dup 1 :integer_add close :in1 :integer_add 0 :in1 :in1 :integer_mult :integer_add)] + (t/testing "should decrease size of plushy that always has perfect scores" + (t/is (< (count (s/auto-simplify-plushy {} plushy 5 (fn [argmap data plushy] 0) {} 3 false)) (count plushy))) + (t/is (< (count (s/auto-simplify-plushy {} plushy 1 (fn [argmap data plushy] 0) {} 10 false)) (count plushy)))))) +>>>>>>> Stashed changes