package test import "testing" import "github.com/firestuff/subcoding/asm" func TestTooManyOperands(t *testing.T) { _, err := asm.AssembleString(` functions: - - [nop, 0] `) if err == nil { t.Fatal("Lack of error when passing operand to nop") } } func TestTooFewOperands(t *testing.T) { _, err := asm.AssembleString(` functions: - - [mov, g0] `) if err == nil { t.Fatal("Lack of error when passing only one operand to mov") } } func TestIncorrectSigned(t *testing.T) { _, err := asm.AssembleString(` functions: - - [ltu, 0, -1] `) if err == nil { t.Fatal("Lack of error when passing signed value to ltu") } } func TestHex(t *testing.T) { prog, err := asm.AssembleString(` functions: - - [mov, g0, 0xfeedc0de] `) if err != nil { t.Fatal(err) } val := prog.Functions[0].Instructions[0].Operands[1].Value if val != 4276994270 { t.Fatalf("Mismatch: expected=4276994270, actual=%d", val) } } func TestBinary(t *testing.T) { prog, err := asm.AssembleString(` functions: - - [mov, g0, 0b100101] `) if err != nil { t.Fatal(err) } val := prog.Functions[0].Instructions[0].Operands[1].Value if val != 37 { t.Fatalf("Mismatch: expected=37, actual=%d", val) } }