@@ -51,7 +51,7 @@ func TestDecoderv2(t *testing.T) {
51
51
} else {
52
52
reg = DefaultRegistry
53
53
}
54
- dec , err := NewDecoder ( reg , vr )
54
+ dec , err := NewDecoderWithContext (bsoncodec. DecodeContext { Registry : reg } , vr )
55
55
noerr (t , err )
56
56
err = dec .Decode (got )
57
57
noerr (t , err )
@@ -64,7 +64,7 @@ func TestDecoderv2(t *testing.T) {
64
64
t .Run ("lookup error" , func (t * testing.T ) {
65
65
type certainlydoesntexistelsewhereihope func (string , string ) string
66
66
cdeih := func (string , string ) string { return "certainlydoesntexistelsewhereihope" }
67
- dec , err := NewDecoder (DefaultRegistry , bsonrw .NewBSONDocumentReader ([]byte {}))
67
+ dec , err := NewDecoder (bsonrw .NewBSONDocumentReader ([]byte {}))
68
68
noerr (t , err )
69
69
want := bsoncodec.ErrNoDecoder {Type : reflect .TypeOf (cdeih )}
70
70
got := dec .Decode (& cdeih )
@@ -102,7 +102,7 @@ func TestDecoderv2(t *testing.T) {
102
102
for _ , tc := range testCases {
103
103
t .Run (tc .name , func (t * testing.T ) {
104
104
unmarshaler := & testUnmarshaler {err : tc .err }
105
- dec , err := NewDecoder (DefaultRegistry , tc .vr )
105
+ dec , err := NewDecoder (tc .vr )
106
106
noerr (t , err )
107
107
got := dec .Decode (unmarshaler )
108
108
want := tc .err
@@ -123,7 +123,7 @@ func TestDecoderv2(t *testing.T) {
123
123
want := bsoncore .BuildDocument (nil , bsoncore .AppendDoubleElement (nil , "pi" , 3.14159 ))
124
124
unmarshaler := & testUnmarshaler {}
125
125
vr := bsonrw .NewBSONDocumentReader (want )
126
- dec , err := NewDecoder (DefaultRegistry , vr )
126
+ dec , err := NewDecoder (vr )
127
127
noerr (t , err )
128
128
err = dec .Decode (unmarshaler )
129
129
noerr (t , err )
@@ -134,21 +134,39 @@ func TestDecoderv2(t *testing.T) {
134
134
})
135
135
})
136
136
})
137
- t .Run ("NewDecoderv2 " , func (t * testing.T ) {
138
- t .Run ("errors " , func (t * testing.T ) {
139
- _ , got := NewDecoder (nil , bsonrw . ValueReader ( nil ) )
140
- want := errors .New ("cannot create a new Decoder with a nil Registry " )
137
+ t .Run ("NewDecoder " , func (t * testing.T ) {
138
+ t .Run ("error " , func (t * testing.T ) {
139
+ _ , got := NewDecoder (nil )
140
+ want := errors .New ("cannot create a new Decoder with a nil ValueReader " )
141
141
if ! cmp .Equal (got , want , cmp .Comparer (compareErrors )) {
142
142
t .Errorf ("Was expecting error but got different error. got %v; want %v" , got , want )
143
143
}
144
- _ , got = NewDecoder (DefaultRegistry , nil )
145
- want = errors .New ("cannot create a new Decoder with a nil ValueReader" )
144
+ })
145
+ t .Run ("success" , func (t * testing.T ) {
146
+ got , err := NewDecoder (bsonrw .NewBSONDocumentReader ([]byte {}))
147
+ noerr (t , err )
148
+ if got == nil {
149
+ t .Errorf ("Was expecting a non-nil Decoder, but got <nil>" )
150
+ }
151
+ })
152
+ })
153
+ t .Run ("NewDecoderWithContext" , func (t * testing.T ) {
154
+ t .Run ("errors" , func (t * testing.T ) {
155
+ dc := bsoncodec.DecodeContext {Registry : DefaultRegistry }
156
+ _ , got := NewDecoderWithContext (dc , nil )
157
+ want := errors .New ("cannot create a new Decoder with a nil ValueReader" )
146
158
if ! cmp .Equal (got , want , cmp .Comparer (compareErrors )) {
147
159
t .Errorf ("Was expecting error but got different error. got %v; want %v" , got , want )
148
160
}
149
161
})
150
162
t .Run ("success" , func (t * testing.T ) {
151
- got , err := NewDecoder (DefaultRegistry , bsonrw .NewBSONDocumentReader ([]byte {}))
163
+ got , err := NewDecoderWithContext (bsoncodec.DecodeContext {}, bsonrw .NewBSONDocumentReader ([]byte {}))
164
+ noerr (t , err )
165
+ if got == nil {
166
+ t .Errorf ("Was expecting a non-nil Decoder, but got <nil>" )
167
+ }
168
+ dc := bsoncodec.DecodeContext {Registry : DefaultRegistry }
169
+ got , err = NewDecoderWithContext (dc , bsonrw .NewBSONDocumentReader ([]byte {}))
152
170
noerr (t , err )
153
171
if got == nil {
154
172
t .Errorf ("Was expecting a non-nil Decoder, but got <nil>" )
@@ -166,7 +184,7 @@ func TestDecoderv2(t *testing.T) {
166
184
got .Bonus = 2
167
185
data := docToBytes (bsonx.Doc {{"item" , bsonx .String ("canvas" )}, {"qty" , bsonx .Int32 (4 )}})
168
186
vr := bsonrw .NewBSONDocumentReader (data )
169
- dec , err := NewDecoder (DefaultRegistry , vr )
187
+ dec , err := NewDecoder (vr )
170
188
noerr (t , err )
171
189
err = dec .Decode (& got )
172
190
noerr (t , err )
@@ -177,7 +195,8 @@ func TestDecoderv2(t *testing.T) {
177
195
})
178
196
t .Run ("Reset" , func (t * testing.T ) {
179
197
vr1 , vr2 := bsonrw .NewBSONDocumentReader ([]byte {}), bsonrw .NewBSONDocumentReader ([]byte {})
180
- dec , err := NewDecoder (DefaultRegistry , vr1 )
198
+ dc := bsoncodec.DecodeContext {Registry : DefaultRegistry }
199
+ dec , err := NewDecoderWithContext (dc , vr1 )
181
200
noerr (t , err )
182
201
if dec .vr != vr1 {
183
202
t .Errorf ("Decoder should use the value reader provided. got %v; want %v" , dec .vr , vr1 )
@@ -188,17 +207,33 @@ func TestDecoderv2(t *testing.T) {
188
207
t .Errorf ("Decoder should use the value reader provided. got %v; want %v" , dec .vr , vr2 )
189
208
}
190
209
})
210
+ t .Run ("SetContext" , func (t * testing.T ) {
211
+ dc1 := bsoncodec.DecodeContext {Registry : DefaultRegistry }
212
+ dc2 := bsoncodec.DecodeContext {Registry : NewRegistryBuilder ().Build ()}
213
+ dec , err := NewDecoderWithContext (dc1 , bsonrw .NewBSONDocumentReader ([]byte {}))
214
+ noerr (t , err )
215
+ if dec .dc != dc1 {
216
+ t .Errorf ("Decoder should use the Registry provided. got %v; want %v" , dec .dc , dc1 )
217
+ }
218
+ err = dec .SetContext (dc2 )
219
+ noerr (t , err )
220
+ if dec .dc != dc2 {
221
+ t .Errorf ("Decoder should use the Registry provided. got %v; want %v" , dec .dc , dc2 )
222
+ }
223
+ })
191
224
t .Run ("SetRegistry" , func (t * testing.T ) {
192
- reg1 , reg2 := DefaultRegistry , NewRegistryBuilder ().Build ()
193
- dec , err := NewDecoder (reg1 , bsonrw .NewBSONDocumentReader ([]byte {}))
225
+ r1 , r2 := DefaultRegistry , NewRegistryBuilder ().Build ()
226
+ dc1 := bsoncodec.DecodeContext {Registry : r1 }
227
+ dc2 := bsoncodec.DecodeContext {Registry : r2 }
228
+ dec , err := NewDecoder (bsonrw .NewBSONDocumentReader ([]byte {}))
194
229
noerr (t , err )
195
- if dec .r != reg1 {
196
- t .Errorf ("Decoder should use the Registry provided. got %v; want %v" , dec .r , reg1 )
230
+ if dec .dc != dc1 {
231
+ t .Errorf ("Decoder should use the Registry provided. got %v; want %v" , dec .dc , dc1 )
197
232
}
198
- err = dec .SetRegistry (reg2 )
233
+ err = dec .SetRegistry (r2 )
199
234
noerr (t , err )
200
- if dec .r != reg2 {
201
- t .Errorf ("Decoder should use the Registry provided. got %v; want %v" , dec .r , reg2 )
235
+ if dec .dc != dc2 {
236
+ t .Errorf ("Decoder should use the Registry provided. got %v; want %v" , dec .dc , dc2 )
202
237
}
203
238
})
204
239
}
0 commit comments