Check for allocs
This commit is contained in:
+59
-18
@@ -7,25 +7,24 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"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) {
|
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 {
|
for i, data := range inputs {
|
||||||
t.Run(fmt.Sprintf("example %d", i), func(t *testing.T) {
|
t.Run(fmt.Sprintf("example %d", i), func(t *testing.T) {
|
||||||
fmt.Printf("input:\n\t`%s`\n", data)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user