Files
easyjson/tests/intern_test.go
2021-10-10 19:42:20 +03:00

42 lines
830 B
Go

package tests
import (
"testing"
"github.com/mailru/easyjson"
)
func TestStringIntern(t *testing.T) {
data := []byte(`{"field": "string interning test"}`)
var i Intern
allocsPerRun := testing.AllocsPerRun(1000, func() {
i = Intern{}
err := easyjson.Unmarshal(data, &i)
if err != nil {
t.Error(err)
}
if i.Field != "string interning test" {
t.Fatalf("wrong value: %q", i.Field)
}
})
if allocsPerRun > 1 {
t.Fatalf("expected <= 1 allocs, got %f", allocsPerRun)
}
var n NoIntern
allocsPerRun = testing.AllocsPerRun(1000, func() {
n = NoIntern{}
err := easyjson.Unmarshal(data, &n)
if err != nil {
t.Error(err)
}
if n.Field != "string interning test" {
t.Fatalf("wrong value: %q", n.Field)
}
})
if allocsPerRun > 2 {
t.Fatalf("expected <= 2 allocs, got %f", allocsPerRun)
}
}