tail returns and complex stuff

This commit is contained in:
2026-05-27 17:00:11 +02:00
parent 92d4461203
commit 9026d2cbdf
4 changed files with 105 additions and 35 deletions
+26 -25
View File
@@ -27,42 +27,43 @@ const document = {
JS
(jsexpr->string paragraph-text)))
(define (side-effect-expr preamble program check-expr)
(format "(() => {~a
(function() {
~a
})();
return (~a);
})()"
preamble
program
check-expr))
(define tests
(list
(js-program-test
(js-expression-test
'dom-ex01-highlight-long-words
exercise01
"paragraph.innerHTML"
(jsexpr->string "Short <span style=\"background: yellow\">extraordinary</span> words remain.")
#:preamble (dom-preamble "Short extraordinary words remain."))
(side-effect-expr (dom-preamble "Short extraordinary words remain.") exercise01 "paragraph.innerHTML")
(jsexpr->string "Short <span style=\"background: yellow\">extraordinary</span> words remain."))
(js-program-test
(js-expression-test
'dom-ex02-add-source-link
exercise02
"state.afterParagraph"
(jsexpr->string '(("afterend" "<a href=\"https://forcemipsum.com/\">Source: ForceM Ipsum</a>")))
#:preamble (dom-preamble "Force ipsum text."))
(side-effect-expr (dom-preamble "Force ipsum text.") exercise02 "state.afterParagraph")
(jsexpr->string '(("afterend" "<a href=\"https://forcemipsum.com/\">Source: ForceM Ipsum</a>"))))
(js-program-test
(js-expression-test
'dom-ex03-split-sentences
exercise03
"paragraph.innerHTML"
(jsexpr->string "First sentence.<br>Second sentence.<br>Third.<br>")
#:preamble (dom-preamble "First sentence. Second sentence. Third."))
(side-effect-expr (dom-preamble "First sentence. Second sentence. Third.") exercise03 "paragraph.innerHTML")
(jsexpr->string "First sentence.<br>Second sentence.<br>Third.<br>"))
(js-program-test
(js-expression-test
'dom-ex04-count-words-after-heading
exercise04
"state.afterHeading"
(jsexpr->string '(("afterend" "<p>4 words</p>")))
#:preamble (dom-preamble "These are four words"))
(side-effect-expr (dom-preamble "These are four words") exercise04 "state.afterHeading")
(jsexpr->string '(("afterend" "<p>4 words</p>"))))
(js-program-test
(js-expression-test
'dom-ex05-replace-punctuation-faces
exercise05
"paragraph.innerHTML"
(jsexpr->string "Really🤔 Yes😲 No🤔")
#:preamble (dom-preamble "Really? Yes! No?"))))
(side-effect-expr (dom-preamble "Really? Yes! No?") exercise05 "paragraph.innerHTML")
(jsexpr->string "Really🤔 Yes😲 No🤔"))))
(define engine (find-js-engine))
(run-jsmaker-regression 'jsmaker-dom-exercises tests "/tmp/jsmaker-dom-exercises.js" #:engine engine)