MCPcopy Create free account
hub / github.com/apache/fory / TestArrayDynSerializerRoundTrip

Function TestArrayDynSerializerRoundTrip

go/fory/array_test.go:41–99  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

39}
40
41func TestArrayDynSerializerRoundTrip(t *testing.T) {
42 f := NewFory(WithXlang(false), WithCompatible(false))
43
44 t.Run("array of interfaces with strings", func(t *testing.T) {
45 arr := [3]any{"hello", "world", "test"}
46
47 bytes, err := f.Marshal(arr)
48 require.NoError(t, err)
49
50 var result any
51 err = f.Unmarshal(bytes, &result)
52 require.NoError(t, err)
53
54 // Result will be a slice, not an array
55 resultSlice, ok := result.([]any)
56 require.True(t, ok)
57 require.Equal(t, 3, len(resultSlice))
58 require.Equal(t, arr[0], resultSlice[0])
59 require.Equal(t, arr[1], resultSlice[1])
60 require.Equal(t, arr[2], resultSlice[2])
61 })
62
63 t.Run("array of interfaces with nil", func(t *testing.T) {
64 arr := [3]any{"hello", nil, "world"}
65
66 bytes, err := f.Marshal(arr)
67 require.NoError(t, err)
68
69 var result any
70 err = f.Unmarshal(bytes, &result)
71 require.NoError(t, err)
72
73 resultSlice, ok := result.([]any)
74 require.True(t, ok)
75 require.Equal(t, 3, len(resultSlice))
76 require.Equal(t, arr[0], resultSlice[0])
77 require.Nil(t, resultSlice[1])
78 require.Equal(t, arr[2], resultSlice[2])
79 })
80
81 t.Run("array of interfaces with mixed types", func(t *testing.T) {
82 arr := [4]any{"string", int32(42), true, float64(3.14)}
83
84 bytes, err := f.Marshal(arr)
85 require.NoError(t, err)
86
87 var result any
88 err = f.Unmarshal(bytes, &result)
89 require.NoError(t, err)
90
91 resultSlice, ok := result.([]any)
92 require.True(t, ok)
93 require.Equal(t, 4, len(resultSlice))
94 require.Equal(t, arr[0], resultSlice[0])
95 require.Equal(t, arr[1], resultSlice[1])
96 require.Equal(t, arr[2], resultSlice[2])
97 require.Equal(t, arr[3], resultSlice[3])
98 })

Callers

nothing calls this directly

Calls 8

MarshalMethod · 0.95
UnmarshalMethod · 0.95
NewForyFunction · 0.85
WithXlangFunction · 0.85
WithCompatibleFunction · 0.85
int32Function · 0.50
float64Function · 0.50
EqualMethod · 0.45

Tested by

no test coverage detected