eoc/test-rvar.rkt

40 lines
888 B
Racket

#lang racket
(require "test-util.rkt")
(require "rvar.rkt")
(define (interp-exp env e)
((send (new interp-RVar-class) interp-exp env) e))
(test-eq
(let ([env `((a . 1) (b . 2))])
(interp-exp env (Var 'a)))
1)
(test-eq
(let ([env `((a . 1) (b . 2))])
(interp-exp env (Prim '+ (list (Var 'a) (Int 3)))))
4)
(test-eq
(let ([env `((a . 1) (b . 2))])
(interp-exp env (Prim '- `(,(Int 3)))))
-3)
(test-eq
(let ([env `((a . 1) (b . 2))])
(interp-exp env (Prim '+ (list (Var 'a) (Prim `- (list (Var 'b)))))))
-1)
(test-eq
(interp-exp `() (Let 'a
(Prim '+ (list (Int 1) (Int 2)))
(Prim '+ (list (Var 'a) (Int 3)))))
6)
(test-eq
(interp-RVar (Program `() (Let 'a
(Prim '+ (list (Int 1) (Int 2)))
(Prim '+ (list (Var 'a) (Int 3))))))
6)