Files
gemigreerd-js-maker/testing/jsmaker-program-regression.rkt
2026-06-08 13:21:57 +02:00

63 lines
1.9 KiB
Racket

#lang racket/base
(require "../main.rkt"
"jsmaker-test-framework.rkt")
(define ordinary-let-program
(string-append
(js (define (ordinaryLet x)
(let ([x 1] [y x])
(return y))))
"\nconsole.log(JSON.stringify(ordinaryLet(99)));\n"))
(run-js-if-available 'ordinary-let-runtime ordinary-let-program "99")
(define let-star-program
(string-append
(js (define (sequentialLet x)
(let* ([x 1] [y x])
(return y))))
"\nconsole.log(JSON.stringify(sequentialLet(99)));\n"))
(run-js-if-available 'let-star-runtime let-star-program "1")
(define named-let-program
(string-append
(js (define (sumTo n)
(let loop ([i 0] [acc 0])
(if (> i n)
(return acc)
(loop (+ i 1) (+ acc i))))))
"\nconsole.log(JSON.stringify(sumTo(10)));\n"))
(run-js-if-available 'named-let-runtime named-let-program "55")
(define ref-program
(string-append
(js (define (at xs i)
(return (js-ref xs i))))
"\nconsole.log(JSON.stringify(at([10,20,30],1)));\n"))
(run-js-if-available 'ref-runtime ref-program "20")
(define ref-set-program
(string-append
(js (define (put xs i value)
(set! (js-ref xs i) value)
(return xs)))
"\nconsole.log(JSON.stringify(put([1,2,3],1,9)));\n"))
(run-js-if-available 'ref-set-runtime ref-set-program "[1,9,3]")
(define ref-string-key-program
(string-append
(js (define (nameOf obj)
(return (js-ref obj "name"))))
"\nconsole.log(JSON.stringify(nameOf({name:\"Ada\"})));\n"))
(run-js-if-available 'ref-string-key-runtime ref-string-key-program "\"Ada\"")
(define lambda-program
(string-append
(js (define (makeAdder x)
(return (lambda (y) (return (+ x y))))))
"\nconsole.log(JSON.stringify(makeAdder(2)(3)));\n"))
(run-js-if-available 'lambda-runtime lambda-program "5")
(module+ main
(test-summary 'jsmaker-program-regression))