tbotd/vendor/src/github.com/asdine/storm/codec/internal/test_helpers.go

45 lines
822 B
Go

package internal
import (
"encoding/gob"
"reflect"
"testing"
"github.com/asdine/storm/codec"
)
type testStruct struct {
Name string
}
// RoundtripTester is a test helper to test a EncodeDecoder
func RoundtripTester(t *testing.T, c codec.EncodeDecoder, vals ...interface{}) {
var val, to interface{}
if len(vals) > 0 {
if len(vals) != 2 {
panic("Wrong number of vals, expected 2")
}
val = vals[0]
to = vals[1]
} else {
val = &testStruct{Name: "test"}
to = &testStruct{}
}
encoded, err := c.Encode(val)
if err != nil {
t.Fatal("Encode error:", err)
}
err = c.Decode(encoded, to)
if err != nil {
t.Fatal("Decode error:", err)
}
if !reflect.DeepEqual(val, to) {
t.Fatalf("Roundtrip codec mismatch, expected\n%#v\ngot\n%#v", val, to)
}
}
func init() {
gob.Register(&testStruct{})
}