Fix rvar subtraction, convert tests to rackunit
This commit is contained in:
parent
14d6b476bd
commit
e4d469ea95
1
rvar.rkt
1
rvar.rkt
|
|
@ -23,6 +23,7 @@
|
|||
[(Var name) (eval-symbol env name)]
|
||||
[(Prim 'read '()) (read-fixnum)]
|
||||
[(Prim '- (list e)) (fx- 0 ((interp-exp env) e))]
|
||||
[(Prim '- `(,e1 ,e2)) (fx- ((interp-exp env) e1) ((interp-exp env) e2))]
|
||||
[(Prim '+ `(,e1 ,e2)) (fx+ ((interp-exp env) e1) ((interp-exp env) e2))]
|
||||
[(Let var rexp body)
|
||||
(let ([value ((interp-exp env) rexp)])
|
||||
|
|
|
|||
|
|
@ -1,39 +1,50 @@
|
|||
#lang racket
|
||||
|
||||
(require "test-util.rkt")
|
||||
(provide test-rvar-tests)
|
||||
|
||||
(require rackunit)
|
||||
(require "rvar.rkt")
|
||||
|
||||
(define (interp-exp env e)
|
||||
((send (new interp-RVar-class) interp-exp env) e))
|
||||
|
||||
(test-eq
|
||||
(define test-rvar-tests
|
||||
(test-suite
|
||||
"RVar interpretation testsuite"
|
||||
|
||||
(check-equal?
|
||||
(let ([env `((a . 1) (b . 2))])
|
||||
(interp-exp env (Var 'a)))
|
||||
1)
|
||||
|
||||
(test-eq
|
||||
(check-equal?
|
||||
(let ([env `((a . 1) (b . 2))])
|
||||
(interp-exp env (Prim '+ (list (Var 'a) (Int 3)))))
|
||||
4)
|
||||
|
||||
(test-eq
|
||||
(check-equal?
|
||||
(let ([env `((a . 1) (b . 2))])
|
||||
(interp-exp env (Prim '- `(,(Int 3)))))
|
||||
-3)
|
||||
|
||||
(test-eq
|
||||
(check-equal?
|
||||
(let ([env `((a . 1))])
|
||||
(interp-exp env (Prim '- (list (Int 3) (Var 'a)))))
|
||||
2)
|
||||
|
||||
(check-equal?
|
||||
(let ([env `((a . 1) (b . 2))])
|
||||
(interp-exp env (Prim '+ (list (Var 'a) (Prim `- (list (Var 'b)))))))
|
||||
-1)
|
||||
|
||||
(test-eq
|
||||
(check-equal?
|
||||
(interp-exp `() (Let 'a
|
||||
(Prim '+ (list (Int 1) (Int 2)))
|
||||
(Prim '+ (list (Var 'a) (Int 3)))))
|
||||
6)
|
||||
|
||||
(test-eq
|
||||
(check-equal?
|
||||
(interp-RVar (Program `() (Let 'a
|
||||
(Prim '+ (list (Int 1) (Int 2)))
|
||||
(Prim '+ (list (Var 'a) (Int 3))))))
|
||||
6)
|
||||
6)))
|
||||
|
|
|
|||
Loading…
Reference in New Issue