[honu] combine string-append and the evaluator

This commit is contained in:
Jon Rafkind 2012-05-21 14:32:48 -06:00
parent 7dde37bee1
commit 2b5e5c5b57

View File

@ -11,50 +11,48 @@
(lambda ()
(make-evaluator 'honu))))
(define (honu input)
(with-input-from-string input
(define (honu . input)
(with-input-from-string (apply string-append input)
(lambda ()
((honu-eval) (honu-read-syntax)))))
(define input string-append)
(define-syntax-rule (honu-tests checks ...)
(parameterize ([honu-eval (make-honu-evaluator)]) checks ...))
(honu-tests
(check-equal? (honu @input{1}) 1)
(check-equal? (honu @input{5}) 5)
(check-equal? (honu @input{1 + 1}) (+ 1 1))
(check-equal? (honu @input{1 + 2 * 3}) (+ 1 (* 2 3)))
(check-equal? (honu @input{3 * 2 + 1}) (+ (* 3 2) 1))
(check-equal? (honu @input{1 + 4 ^ 2 * 3}) (+ 1 (* (expt 4 2) 3)))
(check-equal? (honu @input{1 + 4 ^ 3 ^ 2}) (+ 1 (expt 4 (expt 3 2))))
(check-equal? (honu @input{4 ^ 3 ^ 2 + 1}) (+ (expt 4 (expt 3 2)) 1))
(check-equal? @honu{1} 1)
(check-equal? @honu{5} 5)
(check-equal? @honu{1 + 1} (+ 1 1))
(check-equal? @honu{1 + 2 * 3} (+ 1 (* 2 3)))
(check-equal? @honu{3 * 2 + 1} (+ (* 3 2) 1))
(check-equal? @honu{1 + 4 ^ 2 * 3} (+ 1 (* (expt 4 2) 3)))
(check-equal? @honu{1 + 4 ^ 3 ^ 2} (+ 1 (expt 4 (expt 3 2))))
(check-equal? @honu{4 ^ 3 ^ 2 + 1} (+ (expt 4 (expt 3 2)) 1))
(check-equal? (honu @input{
(check-equal? @honu{
var n = 5
cond
n < 10: 'x1,
n > 10: 'x2
})
}
'x1)
(check-equal? (honu @input{
(check-equal? @honu{
if (2 > 1)
1
else
0
})
}
1)
(check-equal? (honu @input{[x + 1: x = [1, 2, 3]]}) '(2 3 4))
(check-equal? (honu @input{[x + y: x = [1, 2, 3], y = [4, 5, 6]]}) '(5 7 9))
(check-equal? @honu{[x + 1: x = [1, 2, 3]]} '(2 3 4))
(check-equal? @honu{[x + y: x = [1, 2, 3], y = [4, 5, 6]]} '(5 7 9))
)
(honu-tests
(check-equal? (honu @input{function foo(x){
(check-equal? @honu{function foo(x){
x * 2
}
foo(5)
})
}
10))