diff --git a/pkg/ap/aliased_test.go b/pkg/ap/aliased_test.go new file mode 100644 index 0000000..3552c46 --- /dev/null +++ b/pkg/ap/aliased_test.go @@ -0,0 +1,32 @@ +package ap_test + +import "encoding/json" + +type Real struct { + FieldA string `json:"fieldA"` + AP map[string]json.RawMessage `json:"*"` +} + +type Alias Real + +// alias := struct { +// *Alias +// }{ +// Alias: (*Alias)(u), +// } + +func NewZeroAlias() interface{} { + z := (Alias)(Real{}) + return &z +} + +func NewTestAlias() interface{} { + t := (Alias)(Real{ + FieldA: "Field A", + AP: map[string]json.RawMessage{ + "fieldB": json.RawMessage([]byte("\"Field B\"")), + "fieldC": json.RawMessage([]byte("\"Field C\"")), + }, + }) + return &t +} diff --git a/pkg/ap/anonymous_test.go b/pkg/ap/anonymous_test.go new file mode 100644 index 0000000..3112bbb --- /dev/null +++ b/pkg/ap/anonymous_test.go @@ -0,0 +1,24 @@ +package ap_test + +import "encoding/json" + +func NewZeroAnonymous() interface{} { + return &struct { + *Alias + }{ + Alias: (*Alias)(&Real{}), + } +} + +func NewTestAnonymous() interface{} { + return struct { + Alias + }{ + Alias: (Alias)(Real{ + FieldA: "Field A", + AP: map[string]json.RawMessage{ + "fieldB": json.RawMessage([]byte("\"Field B\"")), + "fieldC": json.RawMessage([]byte("\"Field C\"")), + }}), + } +} diff --git a/pkg/ap/jsoniter_test.go b/pkg/ap/jsoniter_test.go index a276988..ee2b2db 100644 --- a/pkg/ap/jsoniter_test.go +++ b/pkg/ap/jsoniter_test.go @@ -26,6 +26,8 @@ var cases = []struct { {"No additional properties", "noap.json", "noap.json", NewTestSimpleWithoutAP, NewZeroSimple}, {"Respects omitempty", "omitempty.json", "omitempty.json", NewTestOmitEmpty, NewZeroOmitEmpty}, {"Embedded struct with AP", "embedded.json", "embedded.json", NewTestOuter, NewZeroOuter}, + {"Aliased AP", "aliased.json", "aliased.json", NewTestAlias, NewZeroAlias}, + // {"Anonymous aliased AP", "anonymous.json", "anonymous.json", NewTestAnonymous, NewZeroAnonymous}, } func TestMarshaling(t *testing.T) { diff --git a/pkg/ap/testdata/aliased.json.golden b/pkg/ap/testdata/aliased.json.golden new file mode 100644 index 0000000..d30a9ad --- /dev/null +++ b/pkg/ap/testdata/aliased.json.golden @@ -0,0 +1 @@ +{"fieldA":"Field A","fieldB":"Field B","fieldC":"Field C"} \ No newline at end of file diff --git a/pkg/ap/testdata/anonymous.json.golden b/pkg/ap/testdata/anonymous.json.golden new file mode 100644 index 0000000..d30a9ad --- /dev/null +++ b/pkg/ap/testdata/anonymous.json.golden @@ -0,0 +1 @@ +{"fieldA":"Field A","fieldB":"Field B","fieldC":"Field C"} \ No newline at end of file