Convert test-cvar.rkt tests to rackunit, test for subtraction

This commit is contained in:
Enrico Lumetti 2022-08-10 23:33:51 +02:00
parent e4d469ea95
commit b80f8768a8
1 changed files with 32 additions and 20 deletions

View File

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