(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))))))))