From 1284453a210dfa505eb25a1c79aad90a05baa6e4 Mon Sep 17 00:00:00 2001 From: Jerome Ju Date: Tue, 16 Aug 2022 22:18:58 +0000 Subject: [PATCH] WIP type condition --- pkg/apis/version/conversion_test.go | 87 +++++++++++++++-------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/pkg/apis/version/conversion_test.go b/pkg/apis/version/conversion_test.go index 59b3359a8be..d18e1b8a925 100644 --- a/pkg/apis/version/conversion_test.go +++ b/pkg/apis/version/conversion_test.go @@ -17,6 +17,7 @@ limitations under the License. package version_test import ( + "reflect" "testing" "github.com/google/go-cmp/cmp" @@ -29,51 +30,51 @@ type testStruct struct { } func TestSerializationRoundTrip(t *testing.T) { - meta := metav1.ObjectMeta{} - source := testStruct{Field: "foo"} - key := "my-key" - err := version.SerializeToMetadata(&meta, source, key) - if err != nil { - t.Fatalf("Serialization error: %s", err) - } - - sink := testStruct{} - err = version.DeserializeFromMetadata(&meta, &sink, key) - if err != nil { - t.Fatalf("Deserialization error: %s", err) - } - - _, ok := meta.Annotations[key] - if ok { - t.Errorf("Expected key %s not to be present in annotations but it was", key) - } - - if d := cmp.Diff(source, sink); d != "" { - t.Errorf("Unexpected diff after serialization/deserialization round trip: %s", d) - } -} - -func TestArraySerializationRoundTrip(t *testing.T) { - meta := metav1.ObjectMeta{} - source := []testStruct{{Field: "foo"}, {Field: "bar"}} - key := "my-key" - err := version.SerializeToMetadata(&meta, source, key) - if err != nil { - t.Fatalf("Serialization error: %s", err) - } + var arraySourceType = reflect.TypeOf([]testStruct{{Field: ""}}) - sink := []testStruct{} - err = version.DeserializeFromMetadata(&meta, &sink, key) - if err != nil { - t.Fatalf("Deserialization error: %s", err) - } + testcases := []struct { + name string + meta metav1.ObjectMeta + source interface{} + key string + }{{ + name: "serialization roundtrip", + meta: metav1.ObjectMeta{}, + source: testStruct{Field: "foo"}, + key: "my-key", + }, { + name: "array serialization roundtrip", + meta: metav1.ObjectMeta{}, + source: []testStruct{{Field: "foo"}, {Field: "bar"}}, + key: "my-key", + }} + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + err := version.SerializeToMetadata(&tc.meta, tc.source, tc.key) + if err != nil { + t.Fatalf("Serialization error: %s", err) + } + var sink interface{} + if reflect.TypeOf(tc.source) == arraySourceType { + sink = &[]testStruct{} + t.Log("arr") + } else { + sink = &testStruct{} + } + err = version.DeserializeFromMetadata(&tc.meta, &sink, tc.key) + if err != nil { + t.Fatalf("Deserialization error: %s", err) + } - _, ok := meta.Annotations[key] - if ok { - t.Errorf("Expected key %s not to be present in annotations but it was", key) - } + _, ok := tc.meta.Annotations[tc.key] + if ok { + t.Errorf("Expected key %s not to be present in annotations but it was", tc.key) + } - if d := cmp.Diff(source, sink); d != "" { - t.Errorf("Unexpected diff after serialization/deserialization round trip: %s", d) + // if d := cmp.Diff(tc.source, sink); d != "" { + if d := cmp.Diff(&tc.source, sink); d != "" { + t.Errorf("Unexpected diff after serialization/deserialization round trip: %s", d) + } + }) } }