ast: {Input,Output}Registers()

This commit is contained in:
Michael McLoughlin
2018-12-02 22:29:30 -08:00
parent 59548ee9f6
commit 7d4e18f4f4
4 changed files with 84 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
package operand
import (
"reflect"
"testing"
"github.com/mmcloughlin/avo/reg"
@@ -26,3 +27,23 @@ func TestMemAsm(t *testing.T) {
}
}
}
func TestRegisters(t *testing.T) {
cases := []struct {
Op Op
Expect []reg.Register
}{
{reg.R11, []reg.Register{reg.R11}},
{Mem{Base: reg.EAX}, []reg.Register{reg.EAX}},
{Mem{Base: reg.RBX, Index: reg.R10}, []reg.Register{reg.RBX, reg.R10}},
{Imm(42), nil},
{Rel(42), nil},
{LabelRef("idk"), nil},
}
for _, c := range cases {
got := Registers(c.Op)
if !reflect.DeepEqual(got, c.Expect) {
t.Errorf("Registers(%#v) = %#v expected %#v", c.Op, got, c.Expect)
}
}
}