Move code to non _test.go file.

This commit is contained in:
Bill Thiede 2019-11-19 21:04:21 -08:00
parent 6289413a60
commit 68088ceb3f
2 changed files with 54 additions and 49 deletions

53
src/vec3.go Normal file
View File

@ -0,0 +1,53 @@
package vec3
import (
"strconv"
"github.com/francoispqt/gojay"
)
type Vec3 struct {
X float32 `json:"x"`
Y float32 `json:"y"`
Z float32 `json:"z"`
}
func (v *Vec3) MarshalJSONObject(enc *gojay.Encoder) {
enc.FloatKey("x", float64(v.X))
enc.FloatKey("y", float64(v.Y))
enc.FloatKey("z", float64(v.Z))
}
func (v *Vec3) IsNil() bool {
return v == nil
}
func HandRolled(vs []Vec3) ([]byte, error) {
buf := []byte("[")
for i, v := range vs {
if i > 0 {
buf = append(buf, []byte(`,{"x":`)...)
} else {
buf = append(buf, []byte(`{"x":`)...)
}
buf = strconv.AppendFloat(buf, float64(v.X), 'f', -1, 32)
buf = append(buf, []byte(`,"y":`)...)
buf = strconv.AppendFloat(buf, float64(v.Y), 'f', -1, 32)
buf = append(buf, []byte(`,"z":`)...)
buf = strconv.AppendFloat(buf, float64(v.Z), 'f', -1, 32)
buf = append(buf, []byte("}")...)
}
buf = append(buf, ']')
return buf, nil
}
type Vec3Slice []*Vec3
func (vs *Vec3Slice) MarshalJSONArray(enc *gojay.Encoder) {
for _, e := range *vs {
enc.AddObject(e)
}
}
func (vs Vec3Slice) IsNil() bool {
return vs == nil
}

View File

@ -1,9 +1,8 @@
package main package vec3
import ( import (
"encoding/json" "encoding/json"
"reflect" "reflect"
"strconv"
"testing" "testing"
"github.com/francoispqt/gojay" "github.com/francoispqt/gojay"
@ -11,53 +10,6 @@ import (
"github.com/pquerna/ffjson/ffjson" "github.com/pquerna/ffjson/ffjson"
) )
func HandRolled(vs []Vec3) ([]byte, error) {
buf := []byte("[")
for i, v := range vs {
if i > 0 {
buf = append(buf, []byte(`,{"x":`)...)
} else {
buf = append(buf, []byte(`{"x":`)...)
}
buf = strconv.AppendFloat(buf, float64(v.X), 'f', -1, 32)
buf = append(buf, []byte(`,"y":`)...)
buf = strconv.AppendFloat(buf, float64(v.Y), 'f', -1, 32)
buf = append(buf, []byte(`,"z":`)...)
buf = strconv.AppendFloat(buf, float64(v.Z), 'f', -1, 32)
buf = append(buf, []byte("}")...)
}
buf = append(buf, ']')
return buf, nil
}
type Vec3 struct {
X float32 `json:"x"`
Y float32 `json:"y"`
Z float32 `json:"z"`
}
func (v *Vec3) MarshalJSONObject(enc *gojay.Encoder) {
enc.FloatKey("x", float64(v.X))
enc.FloatKey("y", float64(v.Y))
enc.FloatKey("z", float64(v.Z))
}
func (v *Vec3) IsNil() bool {
return v == nil
}
type Vec3Slice []*Vec3
func (vs *Vec3Slice) MarshalJSONArray(enc *gojay.Encoder) {
for _, e := range *vs {
enc.AddObject(e)
}
}
func (vs Vec3Slice) IsNil() bool {
return vs == nil
}
type testFunc struct { type testFunc struct {
name string name string
f func([]Vec3) ([]byte, error) f func([]Vec3) ([]byte, error)