33 lines
864 B
Racket
33 lines
864 B
Racket
#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))
|