-
Notifications
You must be signed in to change notification settings - Fork 0
/
assembler_test.go
46 lines (42 loc) · 896 Bytes
/
assembler_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package vm
import "testing"
func TestParseOpCode(t *testing.T) {
tests := []struct {
input string
output byte
}{
{input: "ADD", output: 0xA0},
{input: " ADD ", output: 0xA0},
{input: "\t AdD ", output: 0xA0},
{input: "\n ADD ", output: 0xA0},
{input: "aDd", output: 0xA0},
}
var got InstructionDesc
var err error
for _, test := range tests {
got, err = parseOpCode(test.input)
if err != nil {
t.Fatal(err)
}
if got.OpCode != test.output {
t.Fatalf("got %x expected %x", got, test.output)
}
}
}
func TestAssembler(t *testing.T) {
tests := []struct {
input string
output Word
}{{input: "ADD $4 $5", output: 0xA0040500}}
var got Word
var err error
for _, test := range tests {
got, err = AssembleInstruction(test.input)
if err != nil {
t.Fatal(err)
}
if got != test.output {
t.Fatalf("got %x expected %x", got, test.output)
}
}
}