Check for allocs

This commit is contained in:
Thomas Pelletier
2021-02-01 19:25:07 -05:00
parent fd961100c1
commit b96c535061
+59 -18
View File
@@ -7,25 +7,24 @@ import (
"github.com/stretchr/testify/assert"
)
var inputs = []string{
` #foo`,
`#foo`,
`#`,
"\n\n\n",
"#one\n # two \n",
`a = false`,
`abc = false`,
` abc = false # foo`,
`'abc' = false`,
`"foo bar" = false`,
`"hello\tworld" = false`,
`"hello \u1234 foo" = false`,
`a.b.c = false`,
`a."b".c = true`,
}
func TestParse(t *testing.T) {
inputs := []string{
` #foo`,
`#foo`,
`#`,
"\n\n\n",
"#one\n # two \n",
`a = false`,
`abc = false`,
` abc = false # foo`,
`'abc' = false`,
`"foo bar" = false`,
`"hello\tworld" = false`,
`"hello \u1234 foo" = false`,
`a.b.c = false`,
`a."b".c = true`,
}
for i, data := range inputs {
t.Run(fmt.Sprintf("example %d", i), func(t *testing.T) {
fmt.Printf("input:\n\t`%s`\n", data)
@@ -35,3 +34,45 @@ func TestParse(t *testing.T) {
})
}
}
type noopBuilder struct {
}
func (n noopBuilder) Whitespace(b []byte) {
}
func (n noopBuilder) Comment(b []byte) {
}
func (n noopBuilder) UnquotedKey(b []byte) {
}
func (n noopBuilder) LiteralString(b []byte) {
}
func (n noopBuilder) BasicString(b []byte) {
}
func (n noopBuilder) Dot(b []byte) {
}
func (n noopBuilder) Boolean(b []byte) {
}
func (n noopBuilder) Equal(b []byte) {
}
func BenchmarkParseAll(b *testing.B) {
b.ReportAllocs()
for i := 0; i < b.N; i++ {
for _, data := range inputs {
builder := noopBuilder{}
p := parser{builder: &builder, data: []byte(data)}
err := p.parse()
if err != nil {
b.Fatalf("error: %s", err)
}
}
}
}