3.7.3.1 Version 1 Test Suites
(require cpsc411/test-suite/public/v1) | |
package: cpsc411-lib |
procedure
(v1-public-test-suite pass-list interp-list check-paren-x64 interp-paren-x64) → test-suite? pass-list : (listof (-> any/c any/c)) interp-list : (listof (or/c #f (-> any/c any/c))) check-paren-x64 : (-> any/c paren-x64-v1?) interp-paren-x64 : (-> paren-x64-v1? (in-range 0 255))
pass-list is expected to be a list of passes that compile from paren-x64-v1? to x64, compatible with current-pass-list.
interp-list must be the same length as pass-list, and should be a list of interpreters for the source language of the corresponding pass in pass-list, or #f to indicate this pass has no interpreter and cannot be independently tested. Such passes will be composed together and tested against the next available interpreter. The test suite uses execute with an empty pass list as the final target language interpreter.
For example, given a pass list (list check-paren-x64 generate-x64 wrap-x64-run-time wrap-x64-boilerplate) and interpreter list (list interp-paren-x64 interp-paren-x64 #f #f), check-paren-x64 will be tested by interpretering both the input and output with interp-paren-x64. The passes generate-x64, wrap-x64-run-time, and wrap-x64-boilerplate are composed together, and tested by interpreting source programs with interp-paren-x64, and target programs through execution.