Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions test/clojure/core_test/fnil.cljc
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
(ns clojure.core-test.fnil
(:require [clojure.test :as t]))

(defn test-fn [& x]
(into [] x))

(def arg 'not-nil)

(t/deftest fnil-test
(let [arity-1 (fnil test-fn 100)]
(t/is (= [100] (arity-1 nil)))
(t/is (= [arg] (arity-1 arg))))
(let [arity-2 (fnil test-fn 100 200)]
(t/is (= [100 200] (arity-2 nil nil)))
(t/is (= [arg 200] (arity-2 arg nil)))
(t/is (= [100 arg] (arity-2 nil arg)))
(t/is (= [arg arg] (arity-2 arg arg))))
(let [arity-3 (fnil test-fn 100 200 300)]
(t/is (= [100 200 300] (arity-3 nil nil nil)))
(t/is (= [arg 200 300] (arity-3 arg nil nil)))
(t/is (= [100 arg 300] (arity-3 nil arg nil)))
(t/is (= [100 200 arg] (arity-3 nil nil arg)))
(t/is (= [arg arg 300] (arity-3 arg arg nil)))
(t/is (= [100 arg arg] (arity-3 nil arg arg)))
(t/is (= [arg 200 arg] (arity-3 arg nil arg)))
(t/is (= [arg arg arg] (arity-3 arg arg arg))))
(let [arity-+ (fnil test-fn 100 200 300)]
(t/is (= [100 200 300 arg] (arity-+ nil nil nil arg)))
(t/is (= [arg 200 300 arg] (arity-+ arg nil nil arg)))
(t/is (= [100 arg 300 arg] (arity-+ nil arg nil arg)))
(t/is (= [100 200 arg arg] (arity-+ nil nil arg arg)))))
Loading