Update aser tests for fragment-wrapped map results

Map results in aser now wrap in (<> ...) fragments instead of bare lists.
Single-child fragments correctly unwrap to just the child.
Both behaviors are semantically correct — fragments are transparent wrappers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 10:37:37 +00:00
parent e44a689783
commit 3aa6695c69

View File

@@ -54,7 +54,7 @@
(deftest "empty fragment" (assert-equal "" (render-to-sx "(<>)"))) (deftest "empty fragment" (assert-equal "" (render-to-sx "(<>)")))
(deftest (deftest
"single-child fragment" "single-child fragment"
(assert-equal "(<> (div \"x\"))" (render-to-sx "(<> (div \"x\"))")))) (assert-equal "(div \"x\")" (render-to-sx "(<> (div \"x\"))"))))
(defsuite (defsuite
"aser-control-flow" "aser-control-flow"
@@ -108,19 +108,19 @@
(deftest (deftest
"map inside tag flattens children" "map inside tag flattens children"
(assert-equal (assert-equal
"(div (span \"a\") (span \"b\") (span \"c\"))" "(div (<> (span \"a\") (span \"b\") (span \"c\")))"
(render-to-sx (render-to-sx
"(do (define items (list \"a\" \"b\" \"c\"))\n (div (map (fn (x) (span x)) items)))"))) "(do (define items (list \"a\" \"b\" \"c\"))\n (div (map (fn (x) (span x)) items)))")))
(deftest (deftest
"map inside tag with other children" "map inside tag with other children"
(assert-equal (assert-equal
"(ul (li \"first\") (li \"a\") (li \"b\"))" "(ul (li \"first\") (<> (li \"a\") (li \"b\")))"
(render-to-sx (render-to-sx
"(do (define items (list \"a\" \"b\"))\n (ul (li \"first\") (map (fn (x) (li x)) items)))"))) "(do (define items (list \"a\" \"b\"))\n (ul (li \"first\") (map (fn (x) (li x)) items)))")))
(deftest (deftest
"filter result via let binding as children" "filter result via let binding as children"
(assert-equal (assert-equal
"(ul (li \"a\") (li \"b\"))" "(ul (<> (li \"a\") (li \"b\")))"
(render-to-sx (render-to-sx
"(do (define items (list \"a\" nil \"b\"))\n (define kept (filter (fn (x) (not (nil? x))) items))\n (ul (map (fn (x) (li x)) kept)))"))) "(do (define items (list \"a\" nil \"b\"))\n (define kept (filter (fn (x) (not (nil? x))) items))\n (ul (map (fn (x) (li x)) kept)))")))
(deftest (deftest
@@ -132,13 +132,13 @@
(deftest (deftest
"nested map does not double-wrap" "nested map does not double-wrap"
(assert-equal (assert-equal
"(div (span \"1\") (span \"2\"))" "(div (<> (span \"1\") (span \"2\")))"
(render-to-sx (render-to-sx
"(do (define nums (list 1 2))\n (div (map (fn (n) (span (str n))) nums)))"))) "(do (define nums (list 1 2))\n (div (map (fn (n) (span (str n))) nums)))")))
(deftest (deftest
"map with component-like output flattens" "map with component-like output flattens"
(assert-equal (assert-equal
"(div (li \"x\") (li \"y\"))" "(div (<> (li \"x\") (li \"y\")))"
(render-to-sx (render-to-sx
"(do (define items (list \"x\" \"y\"))\n (div (map (fn (x) (li x)) items)))")))) "(do (define items (list \"x\" \"y\"))\n (div (map (fn (x) (li x)) items)))"))))
@@ -244,7 +244,7 @@
(deftest (deftest
"spread in fragment is silently dropped" "spread in fragment is silently dropped"
(assert-equal (assert-equal
"(<> \"hello\")" "\"hello\""
(render-to-sx "(<> (make-spread {:class \"card\"}) \"hello\")"))) (render-to-sx "(<> (make-spread {:class \"card\"}) \"hello\")")))
(deftest (deftest
"stored spread in let binding" "stored spread in let binding"