diff options
Diffstat (limited to 'lib/csc/linker-test.csc')
| -rw-r--r-- | lib/csc/linker-test.csc | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/csc/linker-test.csc b/lib/csc/linker-test.csc new file mode 100644 index 0000000..adbcf91 --- /dev/null +++ b/lib/csc/linker-test.csc @@ -0,0 +1,49 @@ +(define-library (csc linker-test) + (import (scheme base) + (only (csc format) + sprintf) + (only (csc hash-map) + alist->map + hash-bytevector + make-comparer + make-map) + (only (csc list) + all) + (only (csc testing) + assert-equal + test) + (csc linker)) + (begin + + + (test link-labels + (assert-equal + '((alloc (local 0) (const 0)) + (jmp (const 2)) + (jmp (const 1))) + (link + '(((label 0) + (jmp (label 1)) + (label 1) + (jmp (label 0))))))) + + + (test link-labels-are-unique-per-program + (assert-equal + '((alloc (local 0) (const 0)) + (jmp (const 1)) + (jmp (const 2))) + (link + '(((label 0) + (jmp (label 0))) + ((label 0) + (jmp (label 0))))))) + + + (test link-globals + (assert-equal + '((alloc (local 0) (const 11)) + (peek (local 1) (local 0) (const 10))) + (link + '(((peek (local 1) (local 0) (global cons (csc based))))) + (alist->map compare-globals '(((global cons (csc based)) . 10)))))))) |
