82 lines
1.8 KiB
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'")
|
|
}
|
|
}
|