aboutsummaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-06-04 01:01:31 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-06-04 01:01:31 +0200
commit6960f8870fd6a65955db7f9f5ee04aa6848d56ac (patch)
tree46bcfb6e4b63df04f29177e23fde789b0c361c3a /parse_test.go
parente5580c6bd2cee66c2bf8e10f6ebc4301e8d0f86b (diff)
Add tests
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/parse_test.go b/parse_test.go
new file mode 100644
index 0000000..cb29333
--- /dev/null
+++ b/parse_test.go
@@ -0,0 +1,43 @@
+package j1
+
+import (
+ "fmt"
+ "testing"
+)
+
+func TestDecode(t *testing.T) {
+ testCases := []struct {
+ bin uint16
+ ins Instruction
+ }{
+ {0x0000, Jump(0x0000)},
+ {0x1fff, Jump(0x1fff)},
+ {0x2000, Cond(0x0000)},
+ {0x3fff, Cond(0x1fff)},
+ {0x4000, Call(0x0000)},
+ {0x5fff, Call(0x1fff)},
+ {0x8000, Lit(0x0000)},
+ {0xffff, Lit(0x7fff)},
+ {0x6000, ALU{Opcode: 0}},
+ {0x7000, ALU{Opcode: 0, RtoPC: true}},
+ {0x6080, ALU{Opcode: 0, TtoN: true}},
+ {0x6040, ALU{Opcode: 0, TtoR: true}},
+ {0x6020, ALU{Opcode: 0, NtoAtT: true}},
+ {0x600c, ALU{Opcode: 0, Rdir: -1}},
+ {0x6004, ALU{Opcode: 0, Rdir: 1}},
+ {0x6003, ALU{Opcode: 0, Ddir: -1}},
+ {0x6001, ALU{Opcode: 0, Ddir: 1}},
+ {0x6f00, ALU{Opcode: 15}},
+ {0x70e5, ALU{Opcode: 0, RtoPC: true, TtoN: true, TtoR: true, NtoAtT: true, Rdir: 1, Ddir: 1}},
+ {0x7fef, ALU{Opcode: 15, RtoPC: true, TtoN: true, TtoR: true, NtoAtT: true, Rdir: -1, Ddir: -1}},
+ }
+
+ for _, tc := range testCases {
+ t.Run(fmt.Sprint(tc.ins), func(t *testing.T) {
+ ins := Decode(tc.bin)
+ if ins != tc.ins {
+ t.Errorf("got %v, want %v", ins, tc.ins)
+ }
+ })
+ }
+}