aboutsummaryrefslogtreecommitdiffstats
path: root/csc/linker-test.csc
blob: 084e9aefc072395cfa57ff4864d7de0606f99ebd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(import (scheme base)
        (only (csc encoding) encode)
        (only (csc testing)
          assert-equal
          test)
        (csc linker))


(test link-if
  (assert-equal
    (encode '((const 5) (const 1) (if 2) (const 5) add exit))
    (link '((const 5) (const 1) (if "label1") (const 5) add (label "label1") exit))))


(test link-backwards-if
  (assert-equal
    (encode '((const 10) (const 5) add (if -3)))
    (link '((const 10) (label "label1") (const 5) add (if "label1")))))


(test link-call
  (assert-equal
    (encode '((call 3) (const 10) exit (const 5) exit))
    (link '((call "label1") (const 10) (label "label0") exit (label "label1") (const 5) exit))))