From 18ebacb00bd163d94d928900080a2075f92c56fb Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Sat, 13 Aug 2022 23:47:05 +0200 Subject: [PATCH] Revamp tests --- complete-tests.rkt | 52 ++++++++++++++++ complete-tests/test1.bril | 62 +++++++++++++++++++ complete-tests/test1.rvar | 5 ++ run-all-tests.rkt | 9 +++ tests/all-tests.rkt | 24 +++++++ .../test-aarch64-run.rkt | 0 .../test-cvar-to-bril.rkt | 10 +-- test-cvar.rkt => tests/test-cvar.rkt | 2 +- .../test-explicate-control.rkt | 0 .../test-remove-complex-opera.rkt | 0 test-rint.rkt => tests/test-rint.rkt | 6 +- test-rvar.rkt => tests/test-rvar.rkt | 6 +- test-uniquify.rkt => tests/test-uniquify.rkt | 10 +-- test-util.rkt => tests/test-util.rkt | 0 14 files changed, 169 insertions(+), 17 deletions(-) create mode 100644 complete-tests.rkt create mode 100644 complete-tests/test1.bril create mode 100644 complete-tests/test1.rvar create mode 100644 run-all-tests.rkt create mode 100644 tests/all-tests.rkt rename test-aarch64-run.rkt => tests/test-aarch64-run.rkt (100%) rename test-cvar-to-bril.rkt => tests/test-cvar-to-bril.rkt (82%) rename test-cvar.rkt => tests/test-cvar.rkt (97%) rename test-explicate-control.rkt => tests/test-explicate-control.rkt (100%) rename test-remove-complex-opera.rkt => tests/test-remove-complex-opera.rkt (100%) rename test-rint.rkt => tests/test-rint.rkt (88%) rename test-rvar.rkt => tests/test-rvar.rkt (94%) rename test-uniquify.rkt => tests/test-uniquify.rkt (95%) rename test-util.rkt => tests/test-util.rkt (100%) diff --git a/complete-tests.rkt b/complete-tests.rkt new file mode 100644 index 0000000..56a2e35 --- /dev/null +++ b/complete-tests.rkt @@ -0,0 +1,52 @@ +#lang racket + +(provide read-bril-file read-rvar-file complete-tests) + +(require json rackunit (only-in bril program-to-jsexpr)) + +(require "uniquify.rkt") +(require "remove-complex-oper.rkt") +(require "explicate-control.rkt") +(require "cvar-to-bril.rkt") + +(define-namespace-anchor anc) +(define ns (namespace-anchor->namespace anc)) + +(define (read-bril-file path) + (with-input-from-file path + (lambda () (read-json)))) + +(define (read-rvar-file path) + (with-input-from-file path + (lambda () + (parameterize ([current-namespace ns]) + (namespace-attach-module-declaration ns '"rvar.rkt") + (namespace-require '"rvar.rkt") + (eval (read)))))) + +(define (rvar-to-cvar program) + (explicate-control (remove-complex-opera*-2 (uniquify program)))) + +(define (rvar-to-bril-json program) + (program-to-jsexpr (cvar-to-bril (rvar-to-cvar program)))) + +(define (complete-rvar-test test-desc rvar-path bril-path) + (test-case + test-desc + (let ([rvar (read-rvar-file rvar-path)] + [bril (read-bril-file bril-path)]) + (test-case + "RVar->bril" + (parameterize ([current-namespace ns]) + (namespace-attach-module-declaration ns '"rvar.rkt") + (namespace-require '"rvar.rkt") + (check-equal? bril (rvar-to-bril-json rvar))))))) + +(define complete-tests + (test-suite + "Complete Tests" + (complete-rvar-test + "Simple RVar Tests" + "complete-tests/test1.rvar" + "complete-tests/test1.bril"))) + diff --git a/complete-tests/test1.bril b/complete-tests/test1.bril new file mode 100644 index 0000000..759550a --- /dev/null +++ b/complete-tests/test1.bril @@ -0,0 +1,62 @@ +{ + "functions": [ + { + "args": [], + "instrs": [ + { + "label": "start" + }, + { + "dest": "tmp.0", + "op": "const", + "type": "int", + "value": 1 + }, + { + "dest": "tmp.1", + "op": "const", + "type": "int", + "value": 0 + }, + { + "args": [ + "tmp.1", + "tmp.0" + ], + "dest": "tmp.1", + "funcs": [], + "labels": [], + "op": "sub", + "type": "int" + }, + { + "dest": "tmp.2", + "op": "const", + "type": "int", + "value": 2 + }, + { + "args": [ + "tmp.1", + "tmp.2" + ], + "dest": "tmp.3", + "funcs": [], + "labels": [], + "op": "add", + "type": "int" + }, + { + "args": [ + "tmp.3" + ], + "funcs": [], + "labels": [], + "op": "return" + } + ], + "name": "main" + } + ] +} + diff --git a/complete-tests/test1.rvar b/complete-tests/test1.rvar new file mode 100644 index 0000000..8c67d70 --- /dev/null +++ b/complete-tests/test1.rvar @@ -0,0 +1,5 @@ +(Program '() + (Prim '+ + (list (Prim '- (list (Int 1))) + (Int 2)))) + diff --git a/run-all-tests.rkt b/run-all-tests.rkt new file mode 100644 index 0000000..f3186cd --- /dev/null +++ b/run-all-tests.rkt @@ -0,0 +1,9 @@ +#lang racket + +(require rackunit rackunit/text-ui) +(require "tests/all-tests.rkt") +(require "complete-tests.rkt") + +(run-tests all-tests) +(run-tests complete-tests) + diff --git a/tests/all-tests.rkt b/tests/all-tests.rkt new file mode 100644 index 0000000..6eb575e --- /dev/null +++ b/tests/all-tests.rkt @@ -0,0 +1,24 @@ +#lang racket + +(provide all-tests) + +(require rackunit) +(require "test-rint.rkt") +(require "test-rvar.rkt") +(require "test-cvar.rkt") +(require "test-uniquify.rkt") +;(require "test-remove-complex-opera.rkt") +;(require "test-explicate-control.rkt") +(require "test-cvar-to-bril.rkt") + +(define all-tests + (test-suite + "All tests" + rint-tests + rvar-tests + cvar-tests + uniquify-tests + ;remove-complex-opera-tests + ;explicate-control-tests + cvar-to-bril-tests)) + diff --git a/test-aarch64-run.rkt b/tests/test-aarch64-run.rkt similarity index 100% rename from test-aarch64-run.rkt rename to tests/test-aarch64-run.rkt diff --git a/test-cvar-to-bril.rkt b/tests/test-cvar-to-bril.rkt similarity index 82% rename from test-cvar-to-bril.rkt rename to tests/test-cvar-to-bril.rkt index 4d1fca7..720f946 100644 --- a/test-cvar-to-bril.rkt +++ b/tests/test-cvar-to-bril.rkt @@ -3,11 +3,11 @@ (provide cvar-to-bril-tests) (require rackunit) -(require "cvar-to-bril.rkt") -(require "uniquify.rkt") -(require "remove-complex-oper.rkt") -(require "explicate-control.rkt") -(require "rvar.rkt") +(require "../cvar-to-bril.rkt") +(require "../uniquify.rkt") +(require "../remove-complex-oper.rkt") +(require "../explicate-control.rkt") +(require "../rvar.rkt") (require bril/interpreter) (define listings diff --git a/test-cvar.rkt b/tests/test-cvar.rkt similarity index 97% rename from test-cvar.rkt rename to tests/test-cvar.rkt index 67dfcb2..488408a 100644 --- a/test-cvar.rkt +++ b/tests/test-cvar.rkt @@ -4,7 +4,7 @@ (require rackunit) (require "test-util.rkt") -(require "cvar.rkt") +(require "../cvar.rkt") (define seq-1 (Return (Int 0))) diff --git a/test-explicate-control.rkt b/tests/test-explicate-control.rkt similarity index 100% rename from test-explicate-control.rkt rename to tests/test-explicate-control.rkt diff --git a/test-remove-complex-opera.rkt b/tests/test-remove-complex-opera.rkt similarity index 100% rename from test-remove-complex-opera.rkt rename to tests/test-remove-complex-opera.rkt diff --git a/test-rint.rkt b/tests/test-rint.rkt similarity index 88% rename from test-rint.rkt rename to tests/test-rint.rkt index 794fe73..d8211a0 100644 --- a/test-rint.rkt +++ b/tests/test-rint.rkt @@ -1,10 +1,10 @@ #lang racket -(provide test-rint-tests) +(provide rint-tests) (require rackunit) (require "test-util.rkt") -(require "rint.rkt") +(require "../rint.rkt") (define eight (Int 8)) (define rd (Prim 'read '())) @@ -12,7 +12,7 @@ (define ast1.1 (Prim '+ (list rd neg-eight))) (define program (Program '() ast1.1)) -(define test-rint-tests +(define rint-tests (test-suite "RInt interpretation tests" (test-case diff --git a/test-rvar.rkt b/tests/test-rvar.rkt similarity index 94% rename from test-rvar.rkt rename to tests/test-rvar.rkt index 90a198b..2565b40 100644 --- a/test-rvar.rkt +++ b/tests/test-rvar.rkt @@ -1,14 +1,14 @@ #lang racket -(provide test-rvar-tests) +(provide rvar-tests) (require rackunit) -(require "rvar.rkt") +(require "../rvar.rkt") (define (interp-exp env e) ((send (new interp-RVar-class) interp-exp env) e)) -(define test-rvar-tests +(define rvar-tests (test-suite "RVar interpretation testsuite" diff --git a/test-uniquify.rkt b/tests/test-uniquify.rkt similarity index 95% rename from test-uniquify.rkt rename to tests/test-uniquify.rkt index afa8950..a348eb1 100644 --- a/test-uniquify.rkt +++ b/tests/test-uniquify.rkt @@ -1,12 +1,12 @@ #lang racket -(provide test-uniquify-tests) +(provide uniquify-tests) (require rackunit) -(require "rvar.rkt") -(require "uniquify.rkt") -(require/expose "uniquify.rkt" (uniquify-exp)) +(require "../rvar.rkt") +(require "../uniquify.rkt") +(require/expose "../uniquify.rkt" (uniquify-exp)) ; returns both the resulting symtable and the uniquified program (define (list-uniquify-exp symtable) @@ -26,7 +26,7 @@ (Var 'y)) (Prim '+ (list (Var 'x) (Int 5)))))) -(define test-uniquify-tests +(define uniquify-tests (test-suite "Uniquify pass testsuite" (test-case diff --git a/test-util.rkt b/tests/test-util.rkt similarity index 100% rename from test-util.rkt rename to tests/test-util.rkt