#lang racket/base (require rackunit "../main.rkt" "jsmaker-test-framework.rkt") (provide usecase-tests) (define counter-program (string-append (js (define (make-counter start) (let ([value start]) (return (lambda () (begin (set! value (+ value 1)) (return value))))))) "const c = make_counter(5);\n" "console.log(c());\n" "console.log(c());\n")) (define usecase-tests (test-suite "small use cases" (test-case "closures and set!" (check-js-contains? counter-program "function make_counter(start)") (check-js-contains? counter-program "value = value + 1;") (when (node-available?) (check-equal? (run-js/trimmed counter-program) "6\n7"))))) (module+ test (require rackunit/text-ui) (run-tests usecase-tests))