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

Function TestReferenceResolver

go/fory/ref_resolver_test.go:28–65  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

26)
27
28func TestReferenceResolver(t *testing.T) {
29 refResolver := newRefResolver(true)
30 buf := NewByteBuffer(nil)
31 var values []any
32 values = append(values, commonSlice()...)
33 values = append(values, commonMap()...)
34 foo := newFoo()
35 bar := Bar{}
36 values = append(values, &foo, &bar)
37 for _, data := range values {
38 refWritten, err := refResolver.WriteRefOrNull(buf, reflect.ValueOf(data))
39 require.Nil(t, err)
40 require.False(t, refWritten)
41 refWritten, err = refResolver.WriteRefOrNull(buf, reflect.ValueOf(data))
42 require.Nil(t, err)
43 require.True(t, refWritten)
44 }
45 refResolver.readObjects = make([]reflect.Value, len(refResolver.writtenObjects))
46 ctxErr := &Error{}
47 for range values {
48 require.Equal(t, refResolver.ReadRefOrNull(buf, ctxErr), RefValueFlag)
49 require.Equal(t, refResolver.ReadRefOrNull(buf, ctxErr), RefFlag)
50 }
51 {
52 s := []int{1, 2, 3}
53 require.True(t, same(s, s))
54 require.False(t, same(s, s[1:]))
55 refWritten, err := refResolver.WriteRefOrNull(buf, reflect.ValueOf(s))
56 require.Nil(t, err)
57 require.False(t, refWritten)
58 refWritten, err = refResolver.WriteRefOrNull(buf, reflect.ValueOf(s))
59 require.Nil(t, err)
60 require.True(t, refWritten)
61 refWritten, err = refResolver.WriteRefOrNull(buf, reflect.ValueOf(s[1:]))
62 require.Nil(t, err)
63 require.False(t, refWritten)
64 }
65}
66
67func TestNonReferenceResolver(t *testing.T) {
68 refResolver := newRefResolver(false)

Callers

nothing calls this directly

Calls 9

newRefResolverFunction · 0.85
NewByteBufferFunction · 0.85
commonSliceFunction · 0.85
commonMapFunction · 0.85
newFooFunction · 0.85
sameFunction · 0.85
WriteRefOrNullMethod · 0.80
ReadRefOrNullMethod · 0.80
EqualMethod · 0.45

Tested by

no test coverage detected