From acc561366f3fe6ec0377103f52ef0f7e923711c9 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Mon, 1 Aug 2022 19:35:19 -0700 Subject: Modify the project structure. Now the lib directory contains what will eventually end up on the user's /usr/lib/csc. When I write make install, it will copy all of the .csc files from lib into the destination lib directory. This means I can start working on the standard library in lib/scheme. --- lib/csc/encoding-test.csc | 121 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 lib/csc/encoding-test.csc (limited to 'lib/csc/encoding-test.csc') diff --git a/lib/csc/encoding-test.csc b/lib/csc/encoding-test.csc new file mode 100644 index 0000000..6b28d8e --- /dev/null +++ b/lib/csc/encoding-test.csc @@ -0,0 +1,121 @@ +(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)))))))) -- cgit v1.3.1