Move test and bench functions to single global variable.
This commit is contained in:
parent
7707ff9660
commit
6289413a60
@ -58,37 +58,41 @@ func (vs Vec3Slice) IsNil() bool {
|
|||||||
return vs == nil
|
return vs == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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(vs)
|
||||||
|
}},
|
||||||
|
{"iterator", func(vs []Vec3) ([]byte, error) {
|
||||||
|
var js = jsoniter.ConfigCompatibleWithStandardLibrary
|
||||||
|
return js.Marshal(vs)
|
||||||
|
}},
|
||||||
|
{"gojay", func(vs []Vec3) ([]byte, error) {
|
||||||
|
var vecs Vec3Slice
|
||||||
|
for _, v := range vs {
|
||||||
|
v := v
|
||||||
|
vecs = append(vecs, &v)
|
||||||
|
}
|
||||||
|
|
||||||
|
return gojay.Marshal(&vecs)
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
|
||||||
func TestVec3ToJSON(t *testing.T) {
|
func TestVec3ToJSON(t *testing.T) {
|
||||||
vecs := []Vec3{
|
vecs := []Vec3{
|
||||||
{X: 1.0, Y: 2.0, Z: 3.0},
|
{X: 1.0, Y: 2.0, Z: 3.0},
|
||||||
{X: 4.5, Y: 5.0, Z: 6.0},
|
{X: 4.5, Y: 5.0, Z: 6.0},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, ts := range []struct {
|
for _, ts := range encodeFuncs {
|
||||||
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)
|
|
||||||
}},
|
|
||||||
} {
|
|
||||||
t.Run(ts.name, func(t *testing.T) {
|
t.Run(ts.name, func(t *testing.T) {
|
||||||
got, err := ts.f(vecs)
|
got, err := ts.f(vecs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -111,31 +115,7 @@ func BenchmarkVec3ToJSON(b *testing.B) {
|
|||||||
Z: 255. * float32(i) / 1000.,
|
Z: 255. * float32(i) / 1000.,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
for _, ts := range []struct {
|
for _, ts := range encodeFuncs {
|
||||||
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)
|
|
||||||
}},
|
|
||||||
} {
|
|
||||||
b.Run(ts.name, func(b *testing.B) {
|
b.Run(ts.name, func(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
if _, err := ts.f(vecs); err != nil {
|
if _, err := ts.f(vecs); err != nil {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user