c65gm/internal/preproc/pragma_test.go

82 lines
1.8 KiB
Go

package preproc
import "testing"
func TestNewPragma(t *testing.T) {
p := NewPragma()
if len(p.pragmaSetStack) != 1 {
t.Errorf("expected initial stack length 1, got %d", len(p.pragmaSetStack))
}
if p.GetCurrentPragmaSetIndex() != 0 {
t.Errorf("expected initial index 0, got %d", p.GetCurrentPragmaSetIndex())
}
}
func TestAddPragma(t *testing.T) {
p := NewPragma()
p.AddPragma("foo", "bar")
if p.GetCurrentPragmaSetIndex() != 1 {
t.Errorf("expected index 1 after add, got %d", p.GetCurrentPragmaSetIndex())
}
ps := p.GetPragmaSetByIndex(1)
if ps.GetPragma("foo") != "bar" {
t.Errorf("expected 'bar', got '%s'", ps.GetPragma("foo"))
}
}
func TestPragmaImmutability(t *testing.T) {
p := NewPragma()
p.AddPragma("x", "1")
idx1 := p.GetCurrentPragmaSetIndex()
p.AddPragma("x", "2")
idx2 := p.GetCurrentPragmaSetIndex()
ps1 := p.GetPragmaSetByIndex(idx1)
ps2 := p.GetPragmaSetByIndex(idx2)
if ps1.GetPragma("x") != "1" {
t.Errorf("snapshot corrupted: expected '1', got '%s'", ps1.GetPragma("x"))
}
if ps2.GetPragma("x") != "2" {
t.Errorf("expected '2', got '%s'", ps2.GetPragma("x"))
}
}
func TestGetPragmaMissing(t *testing.T) {
p := NewPragma()
ps := p.GetPragmaSetByIndex(0)
if ps.GetPragma("missing") != "" {
t.Errorf("expected empty string for missing pragma")
}
}
func TestGetPragmaWrongIndex(t *testing.T) {
p := NewPragma()
defer func() {
if r := recover(); r == nil {
t.Errorf("expected panic for index -1")
}
}()
p.GetPragmaSetByIndex(-1)
}
func TestMultiplePragmas(t *testing.T) {
p := NewPragma()
p.AddPragma("a", "1")
p.AddPragma("b", "2")
ps := p.GetPragmaSetByIndex(p.GetCurrentPragmaSetIndex())
if ps.GetPragma("a") != "1" {
t.Errorf("expected 'a'='1'")
}
if ps.GetPragma("b") != "2" {
t.Errorf("expected 'b'='2'")
}
}