tail returns and complex stuff
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -63,12 +63,6 @@
|
||||
(js-expression-test 'for-fold (js/expression (for/fold ([s 0]) ([x (in-list (list 1 2 3))]) (+ x s))) "6")
|
||||
(js-expression-test 'map-filter (js/expression (filter (lambda (x) (> x 2)) (map (lambda (x) (+ x 1)) (list 1 2 3)))) "[3,4]")
|
||||
(js-expression-test 'hash-ref (js/expression (hash-ref (hash 'a 1 'b 2) 'b)) "2")
|
||||
(js-expression-test 'compile-time-eval-var
|
||||
(let ((x 10)
|
||||
(y 20))
|
||||
(js/expression (let ((a (eval (* x y))))
|
||||
(+ a a))))
|
||||
"400")
|
||||
(js-expression-test 'compile-time-eval-number
|
||||
(js/expression (eval (+ 1 2)))
|
||||
"3")
|
||||
|
||||
Reference in New Issue
Block a user