@@ -11,6 +11,7 @@ import (
11
11
12
12
"go.mongodb.org/mongo-driver/bson/bsonrw"
13
13
"go.mongodb.org/mongo-driver/bson/bsontype"
14
+ "go.mongodb.org/mongo-driver/bson/primitive"
14
15
)
15
16
16
17
type unmarshalingTestCase struct {
@@ -194,6 +195,50 @@ func unmarshalingTestCases() []unmarshalingTestCase {
194
195
want : & valNonPtrStruct ,
195
196
data : docToBytes (valNonPtrStruct ),
196
197
},
198
+ {
199
+ name : "nil pointer and non-pointer type with BSON minkey" ,
200
+ sType : reflect .TypeOf (unmarshalBehaviorTestCase {}),
201
+ want : & unmarshalBehaviorTestCase {
202
+ BSONValueTracker : unmarshalBSONValueCallTracker {
203
+ called : true ,
204
+ },
205
+ BSONValuePtrTracker : & unmarshalBSONValueCallTracker {
206
+ called : true ,
207
+ },
208
+ BSONTracker : unmarshalBSONCallTracker {
209
+ called : true ,
210
+ },
211
+ BSONPtrTracker : nil ,
212
+ },
213
+ data : docToBytes (D {
214
+ {Key : "bv_tracker" , Value : primitive.MinKey {}},
215
+ {Key : "bv_ptr_tracker" , Value : primitive.MinKey {}},
216
+ {Key : "b_tracker" , Value : primitive.MinKey {}},
217
+ {Key : "b_ptr_tracker" , Value : primitive.MinKey {}},
218
+ }),
219
+ },
220
+ {
221
+ name : "nil pointer and non-pointer type with BSON maxkey" ,
222
+ sType : reflect .TypeOf (unmarshalBehaviorTestCase {}),
223
+ want : & unmarshalBehaviorTestCase {
224
+ BSONValueTracker : unmarshalBSONValueCallTracker {
225
+ called : true ,
226
+ },
227
+ BSONValuePtrTracker : & unmarshalBSONValueCallTracker {
228
+ called : true ,
229
+ },
230
+ BSONTracker : unmarshalBSONCallTracker {
231
+ called : true ,
232
+ },
233
+ BSONPtrTracker : nil ,
234
+ },
235
+ data : docToBytes (D {
236
+ {Key : "bv_tracker" , Value : primitive.MaxKey {}},
237
+ {Key : "bv_ptr_tracker" , Value : primitive.MaxKey {}},
238
+ {Key : "b_tracker" , Value : primitive.MaxKey {}},
239
+ {Key : "b_ptr_tracker" , Value : primitive.MaxKey {}},
240
+ }),
241
+ },
197
242
}
198
243
}
199
244
0 commit comments