containerd/typeurl/types_test.go
Michael Crosby f8720382b3 Add typeurl package for TypeUrl registration
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-07-05 14:36:39 -07:00

119 lines
2.0 KiB
Go

package typeurl
import (
"path/filepath"
"reflect"
"testing"
)
type test struct {
Name string
Age int
}
func clear() {
registry = make(map[reflect.Type]string)
}
func TestRegsiterValueGetValue(t *testing.T) {
clear()
expected := filepath.Join(Namespace, "test")
Register(test{}, "test")
url, err := TypeUrl(test{})
if err != nil {
t.Fatal(err)
}
if url != expected {
t.Fatalf("expected %q but received %q", expected, url)
}
}
func TestRegsiterValueGetPointer(t *testing.T) {
clear()
expected := filepath.Join(Namespace, "test")
Register(test{}, "test")
url, err := TypeUrl(&test{})
if err != nil {
t.Fatal(err)
}
if url != expected {
t.Fatalf("expected %q but received %q", expected, url)
}
}
func TestRegsiterPointerGetPointer(t *testing.T) {
clear()
expected := filepath.Join(Namespace, "test")
Register(&test{}, "test")
url, err := TypeUrl(&test{})
if err != nil {
t.Fatal(err)
}
if url != expected {
t.Fatalf("expected %q but received %q", expected, url)
}
}
func TestRegsiterPointerGetValue(t *testing.T) {
clear()
expected := filepath.Join(Namespace, "test")
Register(&test{}, "test")
url, err := TypeUrl(test{})
if err != nil {
t.Fatal(err)
}
if url != expected {
t.Fatalf("expected %q but received %q", expected, url)
}
}
func TestMarshal(t *testing.T) {
clear()
expected := filepath.Join(Namespace, "test")
Register(test{}, "test")
v := &test{
Name: "koye",
Age: 6,
}
any, err := MarshalAny(v)
if err != nil {
t.Fatal(err)
}
if any.TypeUrl != expected {
t.Fatalf("expected %q but received %q", expected, any.TypeUrl)
}
}
func TestMarshalUnmarshal(t *testing.T) {
clear()
Register(test{}, "test")
v := &test{
Name: "koye",
Age: 6,
}
any, err := MarshalAny(v)
if err != nil {
t.Fatal(err)
}
nv, err := UnmarshalAny(any)
if err != nil {
t.Fatal(err)
}
td, ok := nv.(*test)
if !ok {
t.Fatal("expected value to cast to *test")
}
if td.Name != "koye" {
t.Fatal("invalid name")
}
if td.Age != 6 {
t.Fatal("invalid age")
}
}