(define-library (csc encoding-test) (import (scheme base) (only (csc testing) assert-equal test) (csc encoding)) (begin (test encode-mov (assert-equal #u8(0 1 2) (encode '((mov (local 1) (local 2)))))) (test encode-int (assert-equal #u8(2 1 #x15 0 0 0 0 0 0 0) (encode '((mov (local 1) (const 10)))))) (test encode-negative-int (assert-equal #u8(2 1 #xed #xff #xff #xff #xff #xff #xff #xff) (encode '((mov (local 1) (const -10)))))) (test encode-true (assert-equal #u8(2 1 #xa 0 0 0 0 0 0 0) (encode '((mov (local 1) (const #t)))))) (test encode-false (assert-equal #u8(2 1 #x2 0 0 0 0 0 0 0) (encode '((mov (local 1) (const #f)))))) (test encode-nil (assert-equal #u8(2 1 #x12 0 0 0 0 0 0 0) (encode '((mov (local 1) (const ())))))) (test encode-jmpif (assert-equal #u8(4 1 2) (encode '((jmpif (local 1) (local 2)))))) (test encode-jmp (assert-equal #u8(8 1) (encode '((jmp (local 1)))))) (test encode-alloc (assert-equal #u8(12 1 2) (encode '((alloc (local 1) (local 2)))))) (test encode-peek (assert-equal #u8(17 1 2 1 0 0 0 0 0 0 0) (encode '((peek (local 1) (local 2) (const 0)))))) (test encode-poke (assert-equal #u8(23 #x15 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0) (encode '((poke (const 10) (local 1) (const 0)))))) (test encode-add (assert-equal #u8(24 1 2 3) (encode '((add (local 1) (local 2) (local 3)))))) (test encode-sub (assert-equal #u8(28 1 2 3) (encode '((sub (local 1) (local 2) (local 3)))))) (test encode-mul (assert-equal #u8(32 1 2 3) (encode '((mul (local 1) (local 2) (local 3)))))) (test encode-div (assert-equal #u8(36 1 2 3) (encode '((div (local 1) (local 2) (local 3)))))) (test encode-mod (assert-equal #u8(40 1 2 3) (encode '((mod (local 1) (local 2) (local 3)))))) (test encode-peekbyte (assert-equal #u8(44 1 2 3) (encode '((peekbyte (local 1) (local 2) (local 3)))))) (test encode-pokebyte (assert-equal #u8(48 1 2 3) (encode '((pokebyte (local 1) (local 2) (local 3)))))) (test encode-exit (assert-equal #u8(#x36 #x1 0 0 0 0 0 0 0) (encode '((exit (const 0))))))))