eoc/racket/lvar/test-lvar.rkt

51 lines
1.2 KiB
Racket

#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)))