@@ -61,6 +61,11 @@ type testStructOn struct {
61
61
Bid int
62
62
}
63
63
64
+ type testStructOnPointer struct {
65
+ Ask * []byte
66
+ Bid int
67
+ }
68
+
64
69
type nestedTestStructOn struct {
65
70
Report []byte
66
71
FeedID [32 ]byte
@@ -84,6 +89,12 @@ func TestPreCodec(t *testing.T) {
84
89
)
85
90
require .NoError (t , err )
86
91
92
+ pointerPreCodec , err := codec .NewPreCodec (
93
+ map [string ]string {"Ask" : "uint256" },
94
+ map [string ]types.RemoteCodec {"uint256" : ExampleCodec {offChainType : int (0 )}},
95
+ )
96
+ require .NoError (t , err )
97
+
87
98
nestedPreCodec , err := codec .NewPreCodec (
88
99
map [string ]string {"Report" : TestStructOffDef },
89
100
map [string ]types.RemoteCodec {TestStructOffDef : ExampleCodec {offChainType : testStructOff {}}},
@@ -122,7 +133,7 @@ func TestPreCodec(t *testing.T) {
122
133
assert .Equal (t , reflect .TypeOf (int (0 )), field1 .Type )
123
134
})
124
135
125
- t .Run ("RetypeToOffChain works on pointers" , func (t * testing.T ) {
136
+ t .Run ("RetypeToOffChain works on pointers to type " , func (t * testing.T ) {
126
137
offChainType , err := preCodec .RetypeToOffChain (reflect .PointerTo (reflect .TypeOf (testStructOn {})), "" )
127
138
require .NoError (t , err )
128
139
assert .Equal (t , reflect .Ptr , offChainType .Kind ())
@@ -136,6 +147,20 @@ func TestPreCodec(t *testing.T) {
136
147
assert .Equal (t , reflect .TypeOf (int (0 )), field1 .Type )
137
148
})
138
149
150
+ t .Run ("RetypeToOffChain works on pointers" , func (t * testing.T ) {
151
+ offChainType , err := pointerPreCodec .RetypeToOffChain (reflect .PointerTo (reflect .TypeOf (testStructOnPointer {})), "" )
152
+ require .NoError (t , err )
153
+ assert .Equal (t , reflect .Ptr , offChainType .Kind ())
154
+ elem := offChainType .Elem ()
155
+ require .Equal (t , 2 , elem .NumField ())
156
+ field0 := elem .Field (0 )
157
+ assert .Equal (t , "Ask" , field0 .Name )
158
+ assert .Equal (t , reflect .TypeOf (int (0 )), field0 .Type )
159
+ field1 := elem .Field (1 )
160
+ assert .Equal (t , "Bid" , field1 .Name )
161
+ assert .Equal (t , reflect .TypeOf (int (0 )), field1 .Type )
162
+ })
163
+
139
164
t .Run ("RetypeToOffChain works on slices" , func (t * testing.T ) {
140
165
offChainType , err := preCodec .RetypeToOffChain (reflect .SliceOf (reflect .TypeOf (testStructOn {})), "" )
141
166
require .NoError (t , err )
0 commit comments