Move test and bench functions to single global variable.

This commit is contained in:
Bill Thiede 2019-11-19 21:02:08 -08:00
parent 7707ff9660
commit 6289413a60

View File

@ -58,26 +58,22 @@ func (vs Vec3Slice) IsNil() bool {
return vs == nil
}
func TestVec3ToJSON(t *testing.T) {
vecs := []Vec3{
{X: 1.0, Y: 2.0, Z: 3.0},
{X: 4.5, Y: 5.0, Z: 6.0},
}
for _, ts := range []struct {
type testFunc struct {
name string
f func([]Vec3) ([]byte, error)
}{
}
var encodeFuncs = []testFunc{
{"HandRolled", HandRolled},
{"stdlib", func(vs []Vec3) ([]byte, error) {
return json.Marshal(vs)
}},
{"ffjson", func(vs []Vec3) ([]byte, error) {
return ffjson.Marshal(vecs)
return ffjson.Marshal(vs)
}},
{"iterator", func(vs []Vec3) ([]byte, error) {
var js = jsoniter.ConfigCompatibleWithStandardLibrary
return js.Marshal(vecs)
return js.Marshal(vs)
}},
{"gojay", func(vs []Vec3) ([]byte, error) {
var vecs Vec3Slice
@ -88,7 +84,15 @@ func TestVec3ToJSON(t *testing.T) {
return gojay.Marshal(&vecs)
}},
} {
}
func TestVec3ToJSON(t *testing.T) {
vecs := []Vec3{
{X: 1.0, Y: 2.0, Z: 3.0},
{X: 4.5, Y: 5.0, Z: 6.0},
}
for _, ts := range encodeFuncs {
t.Run(ts.name, func(t *testing.T) {
got, err := ts.f(vecs)
if err != nil {
@ -111,31 +115,7 @@ func BenchmarkVec3ToJSON(b *testing.B) {
Z: 255. * float32(i) / 1000.,
})
}
for _, ts := range []struct {
name string
f func([]Vec3) ([]byte, error)
}{
{"HandRolled", HandRolled},
{"stdlib", func(vs []Vec3) ([]byte, error) {
return json.Marshal(vs)
}},
{"ffjson", func(vs []Vec3) ([]byte, error) {
return ffjson.Marshal(vecs)
}},
{"iterator", func(vs []Vec3) ([]byte, error) {
var js = jsoniter.ConfigCompatibleWithStandardLibrary
return js.Marshal(vecs)
}},
{"gojay", func(vs []Vec3) ([]byte, error) {
var vecs Vec3Slice
for _, v := range vs {
v := v
vecs = append(vecs, &v)
}
return gojay.Marshal(&vecs)
}},
} {
for _, ts := range encodeFuncs {
b.Run(ts.name, func(b *testing.B) {
for i := 0; i < b.N; i++ {
if _, err := ts.f(vecs); err != nil {