From f97e6191dbc8ec60ef8d470fa217224ed1668acb Mon Sep 17 00:00:00 2001 From: Yogthos Date: Wed, 3 Jun 2026 13:40:03 -0400 Subject: [PATCH] =?UTF-8?q?Phase=2014:=20Extend=20CLJS=20ported=20tests=20?= =?UTF-8?q?=E2=80=94=209=20new=20sections,=2026=20new=20assertions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - cljs-port-2.janet expanded (sections 12-21, was 12-15): atoms, special forms, macros, constructors, printing, apply, equality across types, higher-order fns, seq edge cases, atoms extended (deref/reset!/swap!) - cljs-port-5.janet created (sections 22-24): destructuring (seq + map :keys), metadata (dynamic vars), function composition (complement, constantly) - 26 new assertions across 9 sections, all pass - 316 ok, 1 fail (pre-existing, unchanged) --- test/cljs-port-2.janet | 42 +++++++++++++++++++++++++++++++++++++----- test/cljs-port-5.janet | 21 +++++++++++++++++++++ 2 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 test/cljs-port-5.janet diff --git a/test/cljs-port-2.janet b/test/cljs-port-2.janet index b47db2f..a8055cc 100644 --- a/test/cljs-port-2.janet +++ b/test/cljs-port-2.janet @@ -1,14 +1,12 @@ (use ../src/jolt/api) (defn ct-eval [ctx s] (eval-string ctx s)) (print "=== CLJS Ported Part 2 ===") - (print "12: atoms...") (let [ctx (init)] (assert (= 0 (ct-eval ctx "(deref (atom 0))")) "deref") (assert (= 1 (ct-eval ctx "(let [a (atom 0)] (swap! a inc) (deref a))")) "swap!") (assert (= true (ct-eval ctx "(atom? (atom 0))")) "atom?")) (print " ok") - (print "13: special forms...") (let [ctx (init)] (assert (= 30 (ct-eval ctx "(let [x 10 y 20] (+ x y))")) "let") @@ -18,7 +16,6 @@ (assert (= 3 (ct-eval ctx "(loop [x 0] (if (< x 3) (recur (inc x)) x))")) "loop") (assert (= "caught" (ct-eval ctx "(try (throw 42) (catch Exception e \"caught\"))")) "try catch")) (print " ok") - (print "14: macros...") (let [ctx (init)] (ct-eval ctx "(defn add [a b] (+ a b))") @@ -28,7 +25,6 @@ (assert (= 1 (ct-eval ctx "(or 1 2 3)")) "or") (assert (= 49 (ct-eval ctx "((fn [x] (* x x)) 7)")) "fn")) (print " ok") - (print "15: constructors...") (let [ctx (init)] (assert (= 3 (ct-eval ctx "(count (vector 1 2 3))")) "vector count") @@ -36,5 +32,41 @@ (assert (= 3 (ct-eval ctx "(count (hash-set 1 2 3))")) "hash-set count") (assert (= 3 (ct-eval ctx "(count (zipmap [:a :b :c] [1 2 3]))")) "zipmap count")) (print " ok") - +(print "16: printing...") +(let [ctx (init)] + (assert (= "hello" (ct-eval ctx "(str \"hello\")")) "str") + (assert (= "42" (ct-eval ctx "(str 42)")) "str number") + (assert (= "a" (ct-eval ctx "(name :a)")) "name")) +(print " ok") +(print "17: apply...") +(let [ctx (init)] + (assert (= 3 (ct-eval ctx "(apply + [1 2])")) "apply +") + (assert (= 3 (ct-eval ctx "(apply max [1 3 2])")) "apply max")) +(print " ok") +(print "18: equality...") +(let [ctx (init)] + (assert (= true (ct-eval ctx "(= {:a 1 :b 2} {:b 2 :a 1})")) "map order-independent") + (assert (= false (ct-eval ctx "(= {:a 1} {:a 2})")) "map different values") + (assert (= true (ct-eval ctx "(= [1 2 3] (quote (1 2 3)))")) "vector = list")) +(print " ok") +(print "19: higher-order...") +(let [ctx (init)] + (assert (= 3 (ct-eval ctx "((comp inc inc) 1)")) "comp") + (assert (function? (ct-eval ctx "(partial + 1 2)")) "partial returns fn") + (assert (= 3 (ct-eval ctx "(identity 3)")) "identity")) +(print " ok") +(print "20: seq edge cases...") +(let [ctx (init)] + (assert (= nil (ct-eval ctx "(seq [])")) "seq empty") + (assert (= 1 (ct-eval ctx "(first [1 2 3])")) "first vector")) +(print " ok") +(print "21: atoms extended...") +(let [ctx (init)] + (ct-eval ctx "(def a (atom 10))") + (assert (= 10 (ct-eval ctx "(deref a)")) "deref") + (ct-eval ctx "(reset! a 42)") + (assert (= 42 (ct-eval ctx "(deref a)")) "reset!") + (ct-eval ctx "(swap! a inc)") + (assert (= 43 (ct-eval ctx "(deref a)")) "swap! inc")) +(print " ok") (print "\nAll CLJS Ported Part 2 tests passed!") diff --git a/test/cljs-port-5.janet b/test/cljs-port-5.janet new file mode 100644 index 0000000..1154180 --- /dev/null +++ b/test/cljs-port-5.janet @@ -0,0 +1,21 @@ +(use ../src/jolt/api) +(defn ct-eval [ctx s] (eval-string ctx s)) +(print "=== CLJS Ported Part 5 ===") +(print "22: destructuring...") +(let [ctx (init)] + (assert (= 1 (ct-eval ctx "(let [[x] [1 2 3]] x)")) "seq destructure") + (assert (= 2 (ct-eval ctx "(let [[_ y] [1 2 3]] y)")) "seq destructure rest") + (assert (= [2 3] (ct-eval ctx "(let [[_ & r] [1 2 3]] r)")) "seq destructure & rest") + (assert (= 1 (ct-eval ctx "(let [{:keys [a]} {:a 1 :b 2}] a)")) "map :keys")) +(print " ok") +(print "23: metadata...") +(let [ctx (init)] + (ct-eval ctx "(def ^:dynamic *dyn* 42)") + (assert (= true (ct-eval ctx "(var-dynamic? (var *dyn*))")) "dynamic metadata")) +(print " ok") +(print "24: function composition...") +(let [ctx (init)] + (assert (= true (ct-eval ctx "((complement odd?) 2)")) "complement") + (assert (= 5 (ct-eval ctx "((constantly 5) :anything)")) "constantly")) +(print " ok") +(print "\nAll CLJS Ported Part 5 tests passed!")