eoc/test-cvar.rkt

52 lines
1.0 KiB
Racket

#lang racket
(provide cvar-tests)
(require rackunit)
(require "test-util.rkt")
(require "cvar.rkt")
(define seq-1
(Return (Int 0)))
(define seq-2
(Seq (Assign (Var 'x) (Int 3))
(Return (Prim '- (list (Int 1) (Var 'x))))))
(define seq-3
(Seq (Assign (Var 'x) (Int 42))
(Return (Int 42))))
(define seq-4
(Seq (Assign (Var 'x) (Int 42))
(Return (Prim '+ (list (Int 1) (Var 'x))))))
(define seq-5
(Return (Prim 'read '())))
(define (make-start-seq seq)
(CProgram '() `((start . ,seq))))
(define cvar-tests
(test-suite
"CVar tests"
(test-case
"CVar interpretation tests"
(check-equal?
(interp-CVar (make-start-seq seq-1))
0)
(check-equal?
(interp-CVar (make-start-seq seq-2))
-2)
(check-equal?
(interp-CVar (make-start-seq seq-3))
42)
(check-equal?
(interp-CVar (make-start-seq seq-4))
43)
(with-input-from-num-list '(21)
(lambda ()
(check-equal?
(interp-CVar (make-start-seq seq-5))
21))))))