[honu] combine string-append and the evaluator
This commit is contained in:
parent
7dde37bee1
commit
2b5e5c5b57
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue
Block a user