Skip to content

Commit 2f91dca

Browse files
committed
Add tests for when-some, plus one for when-let.
when-some and when-let behave very similarly. This adds the opposite case of one of these tests to when-let.
1 parent c9f662d commit 2f91dca

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

test/clojure/core_test/when_let.cljc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
(is (nil? (when-let [x nil] x))))
1212
(testing "basic single-binding tests using seqs"
1313
(is (= '(0 1 2 3 4) (when-let [x (range 5)] x))))
14+
(testing "unlike, when-some, we're looking for not-nil specifically, so false evaluates"
15+
(is (nil? (when-let [x false] x))))
1416
(testing "seq is only called once"
1517
(let [calls (atom 0)
1618
seq-fn (fn s [] (lazy-seq
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
2+
(ns clojure.core-test.when-some
3+
(:require [clojure.test :as t :refer [deftest is testing]]
4+
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
5+
6+
(when-var-exists when-some
7+
(deftest test-when-some
8+
(testing "basic single-binding tests using vectors or nil"
9+
(is (= [0 1 2 3 4] (when-some [x [0 1 2 3 4] ] x)))
10+
(is (not (nil? (when-some [x [nil]] x))))
11+
(is (= [] (when-some [x []] x)))
12+
(is (nil? (when-some [x nil] x))))
13+
(testing "basic single-binding tests using seqs"
14+
(is (= '(0 1 2 3 4) (when-some [x (range 5)] x))))
15+
(testing "unlike when-let, we're looking for not-nil specifically, so false evaluates"
16+
(is (= false (when-some [x false] x))))
17+
(testing "seq is only called once"
18+
(let [calls (atom 0)
19+
seq-fn (fn s [] (lazy-seq
20+
(swap! calls inc)
21+
(cons 1 (s))))
22+
s (take 5 (seq-fn))]
23+
(is (= '(1 1 1 1 1) (when-some [x s] x)))
24+
(is (= @calls 5))))
25+
(testing "without a body, truth doesn't matter"
26+
(is (nil? (when-some [x nil])))
27+
(is (nil? (when-some [x [false]])))
28+
(is (nil? (when-some [x [true]]))))))

0 commit comments

Comments
 (0)