@@ -34,17 +34,14 @@ public void TestSerialization()
34
34
RequireServer . Check ( ) ;
35
35
36
36
{
37
- var client = DriverTestConfiguration . CreateMongoClient ( ) ;
38
- var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
39
- db . DropCollection ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
40
- var collection = db . GetCollection < Person > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
41
- var bsonCollection =
42
- db . GetCollection < BsonDocument > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
37
+ var client = CreateClient ( ) ;
38
+ var collection = GetTypedCollection < Person > ( client ) ;
39
+ var bsonCollection = GetUntypedCollection ( client ) ;
43
40
44
41
var person = new Person { Id = ObjectId . Parse ( "6797b56bf5495bf53aa3078f" ) , Name = "Mario" , Age = 24 } ;
45
42
collection . InsertOne ( person ) ;
46
43
47
- var retrieved = bsonCollection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
44
+ var retrieved = bsonCollection . FindSync ( FilterDefinition < BsonDocument > . Empty ) . ToList ( ) . Single ( ) ;
48
45
var toString = retrieved . ToString ( ) ;
49
46
50
47
var expectedVal =
@@ -57,24 +54,21 @@ public void TestSerialization()
57
54
var customDomain = BsonSerializer . CreateSerializationDomain ( ) ;
58
55
customDomain . RegisterSerializer ( new CustomStringSerializer ( ) ) ;
59
56
60
- var client = DriverTestConfiguration . CreateMongoClient ( ( MongoClientSettings c ) => ( c as IInheritableMongoClientSettings ) . SerializationDomain = customDomain ) ;
61
- var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
62
- db . DropCollection ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
63
- var collection = db . GetCollection < Person > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
64
- var bsonCollection =
65
- db . GetCollection < BsonDocument > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
57
+ var client = CreateClientWithDomain ( customDomain ) ;
58
+ var collection = GetTypedCollection < Person > ( client ) ;
59
+ var bsonCollection = GetUntypedCollection ( client ) ;
66
60
67
61
var person = new Person { Id = ObjectId . Parse ( "6797b56bf5495bf53aa3078f" ) , Name = "Mario" , Age = 24 } ;
68
62
collection . InsertOne ( person ) ;
69
63
70
- var retrievedAsBson = bsonCollection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
64
+ var retrievedAsBson = bsonCollection . FindSync ( FilterDefinition < BsonDocument > . Empty ) . ToList ( ) . Single ( ) ;
71
65
var toString = retrievedAsBson . ToString ( ) ;
72
66
73
67
var expectedVal =
74
68
"""{ "_id" : { "$oid" : "6797b56bf5495bf53aa3078f" }, "Name" : "Mariotest", "Age" : 24 }""" ;
75
69
Assert . Equal ( expectedVal , toString ) ;
76
70
77
- var retrievedTyped = collection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
71
+ var retrievedTyped = collection . FindSync ( FilterDefinition < Person > . Empty ) . ToList ( ) . Single ( ) ;
78
72
Assert . Equal ( "Mario" , retrievedTyped . Name ) ;
79
73
}
80
74
}
@@ -85,10 +79,8 @@ public void TestDeserialization()
85
79
RequireServer . Check ( ) ;
86
80
87
81
{
88
- var client = DriverTestConfiguration . CreateMongoClient ( ) ;
89
- var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
90
- db . DropCollection ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
91
- var collection = db . GetCollection < Person1 > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
82
+ var client = CreateClient ( ) ;
83
+ var collection = GetTypedCollection < Person1 > ( client ) ;
92
84
93
85
var person = new Person1 { Id = ObjectId . Parse ( "6797b56bf5495bf53aa3078f" ) , Name = "Mariotest" , Age = 24 } ;
94
86
collection . InsertOne ( person ) ;
@@ -98,11 +90,10 @@ public void TestDeserialization()
98
90
var customDomain = BsonSerializer . CreateSerializationDomain ( ) ;
99
91
customDomain . RegisterSerializer ( new CustomStringSerializer ( ) ) ;
100
92
101
- var client = DriverTestConfiguration . CreateMongoClient ( ( MongoClientSettings c ) => ( c as IInheritableMongoClientSettings ) . SerializationDomain = customDomain ) ;
102
- var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
103
- var collection = db . GetCollection < Person > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
93
+ var client = CreateClientWithDomain ( customDomain , dropCollection : false ) ;
94
+ var collection = GetTypedCollection < Person > ( client ) ;
104
95
105
- var retrievedTyped = collection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
96
+ var retrievedTyped = collection . FindSync ( FilterDefinition < Person > . Empty ) . ToList ( ) . Single ( ) ;
106
97
Assert . Equal ( "Mario" , retrievedTyped . Name ) ;
107
98
}
108
99
}
@@ -115,16 +106,14 @@ public void TestLinq()
115
106
var customDomain = BsonSerializer . CreateSerializationDomain ( ) ;
116
107
customDomain . RegisterSerializer ( new CustomStringSerializer ( ) ) ;
117
108
118
- var client = DriverTestConfiguration . CreateMongoClient ( ( MongoClientSettings c ) => ( c as IInheritableMongoClientSettings ) . SerializationDomain = customDomain ) ;
119
- var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
120
- db . DropCollection ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
121
- var collection = db . GetCollection < Person > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
122
- var untypedCollection = db . GetCollection < BsonDocument > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
109
+ var client = CreateClientWithDomain ( customDomain ) ;
110
+ var collection = GetTypedCollection < Person > ( client ) ;
111
+ var untypedCollection = GetUntypedCollection ( client ) ;
123
112
124
113
var person = new Person { Id = ObjectId . Parse ( "6797b56bf5495bf53aa3078f" ) , Name = "Mario" , Age = 24 } ;
125
114
collection . InsertOne ( person ) ;
126
115
127
- var retrievedAsBson = untypedCollection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
116
+ var retrievedAsBson = untypedCollection . FindSync ( FilterDefinition < BsonDocument > . Empty ) . ToList ( ) . Single ( ) ;
128
117
var toString = retrievedAsBson . ToString ( ) ;
129
118
130
119
var expectedVal =
@@ -152,16 +141,14 @@ public void TestConventions()
152
141
m => m . SetElementName ( m . MemberName . ToLower ( ) ) ) ;
153
142
customDomain . ConventionRegistry . Register ( "myPack" , pack , t => t == typeof ( Person ) ) ;
154
143
155
- var client = DriverTestConfiguration . CreateMongoClient ( ( MongoClientSettings c ) => ( c as IInheritableMongoClientSettings ) . SerializationDomain = customDomain ) ;
156
- var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
157
- db . DropCollection ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
158
- var collection = db . GetCollection < Person > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
159
- var untypedCollection = db . GetCollection < BsonDocument > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
144
+ var client = CreateClientWithDomain ( customDomain ) ;
145
+ var collection = GetTypedCollection < Person > ( client ) ;
146
+ var untypedCollection = GetUntypedCollection ( client ) ;
160
147
161
148
var person = new Person { Name = "Mario" , Age = 24 } ; //Id is not set, so the custom ObjectIdGenerator should be used
162
149
collection . InsertOne ( person ) ;
163
150
164
- var retrievedAsBson = untypedCollection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
151
+ var retrievedAsBson = untypedCollection . FindSync ( FilterDefinition < BsonDocument > . Empty ) . ToList ( ) . Single ( ) ;
165
152
var toString = retrievedAsBson . ToString ( ) ;
166
153
167
154
var expectedVal =
@@ -194,44 +181,69 @@ public void TestDiscriminators()
194
181
cm . SetDiscriminator ( "dp2" ) ;
195
182
} ) ;
196
183
197
- var client = DriverTestConfiguration . CreateMongoClient ( ( MongoClientSettings c ) => ( c as IInheritableMongoClientSettings ) . SerializationDomain = customDomain ) ;
198
- var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
199
- db . DropCollection ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
200
- var collection = db . GetCollection < BasePerson > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
201
- var untypedCollection = db . GetCollection < BsonDocument > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
184
+ var client = CreateClientWithDomain ( customDomain ) ;
185
+ var collection = GetTypedCollection < BasePerson > ( client ) ;
202
186
203
187
var bp1 = new DerivedPerson1 { Name = "Alice" , Age = 30 , ExtraField1 = "Field1" } ;
204
188
var bp2 = new DerivedPerson2 { Name = "Bob" , Age = 40 , ExtraField2 = "Field2" } ;
205
189
collection . InsertMany ( new BasePerson [ ] { bp1 , bp2 } ) ;
206
190
207
- var test1 = collection . Aggregate ( ) . OfType < DerivedPerson1 > ( ) . Single ( ) ;
208
- var test2 = collection . Aggregate ( ) . OfType < DerivedPerson2 > ( ) . Single ( ) ;
191
+ //Aggregate with OfType
192
+ var retrievedDerivedPerson1 = collection . Aggregate ( ) . OfType < DerivedPerson1 > ( ) . Single ( ) ;
193
+ var retrievedDerivedPerson2 = collection . Aggregate ( ) . OfType < DerivedPerson2 > ( ) . Single ( ) ;
209
194
210
- Assert . Equal ( bp1 . Id , test1 . Id ) ;
211
- Assert . Equal ( bp2 . Id , test2 . Id ) ;
195
+ Assert . Equal ( bp1 . Id , retrievedDerivedPerson1 . Id ) ;
196
+ Assert . Equal ( bp2 . Id , retrievedDerivedPerson2 . Id ) ;
212
197
213
- var a1 = collection . AsQueryable ( ) . AppendStage ( PipelineStageDefinitionBuilder . OfType < BasePerson , DerivedPerson1 > ( ) )
198
+ //AppendStage with OfType
199
+ retrievedDerivedPerson1 = collection . AsQueryable ( ) . AppendStage ( PipelineStageDefinitionBuilder . OfType < BasePerson , DerivedPerson1 > ( ) )
214
200
. OfType < DerivedPerson1 > ( ) . Single ( ) ;
215
- var a2 = collection . AsQueryable ( ) . AppendStage ( PipelineStageDefinitionBuilder . OfType < BasePerson , DerivedPerson2 > ( ) )
201
+ retrievedDerivedPerson2 = collection . AsQueryable ( ) . AppendStage ( PipelineStageDefinitionBuilder . OfType < BasePerson , DerivedPerson2 > ( ) )
216
202
. OfType < DerivedPerson2 > ( ) . Single ( ) ;
217
203
218
- Assert . Equal ( bp1 . Id , a1 . Id ) ;
219
- Assert . Equal ( bp2 . Id , a2 . Id ) ;
204
+ Assert . Equal ( bp1 . Id , retrievedDerivedPerson1 . Id ) ;
205
+ Assert . Equal ( bp2 . Id , retrievedDerivedPerson2 . Id ) ;
220
206
221
- var res1 = collection . AsQueryable ( ) . OfType < DerivedPerson1 > ( ) . Single ( ) ;
222
- var res2 = collection . AsQueryable ( ) . OfType < DerivedPerson2 > ( ) . Single ( ) ;
207
+ //LINQ with OfType
208
+ retrievedDerivedPerson1 = collection . AsQueryable ( ) . OfType < DerivedPerson1 > ( ) . Single ( ) ;
209
+ retrievedDerivedPerson2 = collection . AsQueryable ( ) . OfType < DerivedPerson2 > ( ) . Single ( ) ;
223
210
224
- Assert . Equal ( bp1 . Id , res1 . Id ) ;
225
- Assert . Equal ( bp2 . Id , res2 . Id ) ;
211
+ Assert . Equal ( bp1 . Id , retrievedDerivedPerson1 . Id ) ;
212
+ Assert . Equal ( bp2 . Id , retrievedDerivedPerson2 . Id ) ;
226
213
227
- var filter1 = Builders < BasePerson > . Filter . OfType < DerivedPerson1 > ( ) ;
228
- var dp1 = collection . FindSync ( filter1 ) . Single ( ) ;
214
+ //Find with OfType
215
+ var retrievedBasePerson1 = collection . FindSync ( Builders < BasePerson > . Filter . OfType < DerivedPerson1 > ( ) ) . Single ( ) ;
216
+ var retrievedBasePerson2 = collection . FindSync ( Builders < BasePerson > . Filter . OfType < DerivedPerson2 > ( ) ) . Single ( ) ;
229
217
230
- var filter2 = Builders < BasePerson > . Filter . OfType < DerivedPerson2 > ( ) ;
231
- var dp2 = collection . FindSync ( filter2 ) . Single ( ) ;
218
+ Assert . Equal ( bp1 . Id , retrievedBasePerson1 . Id ) ;
219
+ Assert . Equal ( bp2 . Id , retrievedBasePerson2 . Id ) ;
220
+ }
221
+
222
+ private static IMongoCollection < T > GetTypedCollection < T > ( IMongoClient client ) =>
223
+ client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName )
224
+ . GetCollection < T > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
232
225
233
- Assert . Equal ( bp1 . Id , dp1 . Id ) ;
234
- Assert . Equal ( bp2 . Id , dp2 . Id ) ;
226
+ private static IMongoCollection < BsonDocument > GetUntypedCollection ( IMongoClient client ) =>
227
+ client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName )
228
+ . GetCollection < BsonDocument > ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
229
+
230
+ private static IMongoClient CreateClientWithDomain ( IBsonSerializationDomain domain , bool dropCollection = true )
231
+ {
232
+ var client = DriverTestConfiguration . CreateMongoClient ( ( MongoClientSettings c ) => ( ( IInheritableMongoClientSettings ) c ) . SerializationDomain = domain ) ;
233
+ if ( dropCollection )
234
+ {
235
+ var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
236
+ db . DropCollection ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
237
+ }
238
+ return client ;
239
+ }
240
+
241
+ private static IMongoClient CreateClient ( )
242
+ {
243
+ var client = DriverTestConfiguration . CreateMongoClient ( ) ;
244
+ var db = client . GetDatabase ( DriverTestConfiguration . DatabaseNamespace . DatabaseName ) ;
245
+ db . DropCollection ( DriverTestConfiguration . CollectionNamespace . CollectionName ) ;
246
+ return client ;
235
247
}
236
248
237
249
public class Person
0 commit comments