From 63e60ee4760610b5a093021a7f34c55d0df086f9 Mon Sep 17 00:00:00 2001 From: Shantanu Sardesai Date: Mon, 10 Nov 2025 23:52:56 +0530 Subject: [PATCH 1/2] Prep `double?` for `jank` More context can be found [here](https://github.com/jank-lang/jank/pull/583#issuecomment-3503038668). --- test/clojure/core_test/double_qmark.cljc | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/clojure/core_test/double_qmark.cljc b/test/clojure/core_test/double_qmark.cljc index 5f0878b7..d0fc5d50 100644 --- a/test/clojure/core_test/double_qmark.cljc +++ b/test/clojure/core_test/double_qmark.cljc @@ -32,6 +32,34 @@ true 0.0M true 1.0M true -1.0M] + :jank + [false 0 + false 1 + false -1 + false r/max-int + false r/min-int + true 0.0 + true 1.0 + true -1.0 + ;; Since currently jank doesn't support `float` (`jank::f32`) literal values only `double` (`jank::f64`) + ;; literal values, there is no difference in the implementation of `float` and `double`. + true (float 0.0) + true (float 1.0) + true (float -1.0) + true (double 0.0) + true (double 1.0) + true (double -1.0) + true r/max-double + true r/min-double + true ##Inf + true ##-Inf + true ##NaN + false 0N + false 1N + false -1N + false 0.0M + false 1.0M + false -1.0M] :default [false 0 false 1 From 591dd7f035b0fea23559af61baae9d051e3c5f20 Mon Sep 17 00:00:00 2001 From: Shantanu Sardesai Date: Tue, 18 Nov 2025 09:37:49 +0530 Subject: [PATCH 2/2] Simplify common test cases --- test/clojure/core_test/double_qmark.cljc | 132 +++++++++-------------- 1 file changed, 52 insertions(+), 80 deletions(-) diff --git a/test/clojure/core_test/double_qmark.cljc b/test/clojure/core_test/double_qmark.cljc index d0fc5d50..12174424 100644 --- a/test/clojure/core_test/double_qmark.cljc +++ b/test/clojure/core_test/double_qmark.cljc @@ -6,86 +6,58 @@ (when-var-exists clojure.core/double? (deftest test-double? (are [expected x] (= expected (double? x)) - #?@(:cljs ; In CLJS, all numbers satisfy `double?` - [true 0 - true 1 - true -1 - true r/max-int - true r/min-int - true 0.0 - true 1.0 - true -1.0 - true (float 0.0) ; surprising since (float? (double 0.0)) = true - true (float 1.0) ; surprising since (float? (double 1.0)) = true - true (float -1.0) ; surprising since (float? (double -1.0)) = true - true (double 0.0) - true (double 1.0) - true (double -1.0) - true r/max-double - true r/min-double - true ##Inf - true ##-Inf - true ##NaN - true 0N - true 1N - true -1N - true 0.0M - true 1.0M - true -1.0M] - :jank - [false 0 - false 1 - false -1 - false r/max-int - false r/min-int - true 0.0 - true 1.0 - true -1.0 - ;; Since currently jank doesn't support `float` (`jank::f32`) literal values only `double` (`jank::f64`) - ;; literal values, there is no difference in the implementation of `float` and `double`. - true (float 0.0) - true (float 1.0) - true (float -1.0) - true (double 0.0) - true (double 1.0) - true (double -1.0) - true r/max-double - true r/min-double - true ##Inf - true ##-Inf - true ##NaN - false 0N - false 1N - false -1N - false 0.0M - false 1.0M - false -1.0M] - :default - [false 0 - false 1 - false -1 - false r/max-int - false r/min-int - true 0.0 - true 1.0 - true -1.0 - false (float 0.0) ; surprising since (float? (double 0.0)) = true - false (float 1.0) ; surprising since (float? (double 1.0)) = true - false (float -1.0) ; surprising since (float? (double -1.0)) = true - true (double 0.0) - true (double 1.0) - true (double -1.0) - true r/max-double - true r/min-double - true ##Inf - true ##-Inf - true ##NaN - false 0N - false 1N - false -1N - false 0.0M - false 1.0M - false -1.0M]) + #?@(:cljs + [true 0 + true 1 + true -1 + true r/max-int + true r/min-int] + :default + [false 0 + false 1 + false -1 + false r/max-int + false r/min-int]) + true 0.0 + true 1.0 + true -1.0 + #?@(:jank + [;; Since currently jank doesn't support `float` (`jank::f32`) literal values only `double` (`jank::f64`) + ;; literal values, there is no difference in the implementation of `float` and `double`. + true (float 0.0) + true (float 1.0) + true (float -1.0)] + :cljs + [true (float 0.0) + true (float 1.0) + true (float -1.0)] + :default + [false (float 0.0) ; surprising since (float? (double 0.0)) = true + false (float 1.0) ; surprising since (float? (double 1.0)) = true + false (float -1.0) ; surprising since (float? (double -1.0)) = true + ]) + true (double 0.0) + true (double 1.0) + true (double -1.0) + true r/max-double + true r/min-double + true ##Inf + true ##-Inf + true ##NaN + #?@(:cljs + [true 0N + true 1N + true -1N + true 0.0M + true 1.0M + true -1.0M] + :default + [false 0N + false 1N + false -1N + false 0.0M + false 1.0M + false -1.0M]) #?@(:cljs [] ; CLJS doesn't have ratios :default [false 0/2