#lang racket (provide lvar-tests) (require rackunit) (require "lvar.rkt") (define (interp-exp env e) ((send (new interp-LVar-class) interp-exp env) e)) (define lvar-tests (test-suite "LVar interpretation testsuite" (check-equal? (let ([env `((a . 1) (b . 2))]) (interp-exp env (Var 'a))) 1) (check-equal? (let ([env `((a . 1) (b . 2))]) (interp-exp env (Prim '+ (list (Var 'a) (Int 3))))) 4) (check-equal? (let ([env `((a . 1) (b . 2))]) (interp-exp env (Prim '- `(,(Int 3))))) -3) (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) (check-equal? (interp-exp `() (Let 'a (Prim '+ (list (Int 1) (Int 2))) (Prim '+ (list (Var 'a) (Int 3))))) 6) (check-equal? (interp-LVar (Program `() (Let 'a (Prim '+ (list (Int 1) (Int 2))) (Prim '+ (list (Var 'a) (Int 3)))))) 6)))