@@ -34,17 +34,14 @@ public void TestSerialization()
3434 RequireServer . Check ( ) ;
3535
3636 {
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 ) ;
4340
4441 var person = new Person { Id = ObjectId . Parse ( "6797b56bf5495bf53aa3078f" ) , Name = "Mario" , Age = 24 } ;
4542 collection . InsertOne ( person ) ;
4643
47- var retrieved = bsonCollection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
44+ var retrieved = bsonCollection . FindSync ( FilterDefinition < BsonDocument > . Empty ) . ToList ( ) . Single ( ) ;
4845 var toString = retrieved . ToString ( ) ;
4946
5047 var expectedVal =
@@ -57,24 +54,21 @@ public void TestSerialization()
5754 var customDomain = BsonSerializer . CreateSerializationDomain ( ) ;
5855 customDomain . RegisterSerializer ( new CustomStringSerializer ( ) ) ;
5956
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 ) ;
6660
6761 var person = new Person { Id = ObjectId . Parse ( "6797b56bf5495bf53aa3078f" ) , Name = "Mario" , Age = 24 } ;
6862 collection . InsertOne ( person ) ;
6963
70- var retrievedAsBson = bsonCollection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
64+ var retrievedAsBson = bsonCollection . FindSync ( FilterDefinition < BsonDocument > . Empty ) . ToList ( ) . Single ( ) ;
7165 var toString = retrievedAsBson . ToString ( ) ;
7266
7367 var expectedVal =
7468 """{ "_id" : { "$oid" : "6797b56bf5495bf53aa3078f" }, "Name" : "Mariotest", "Age" : 24 }""" ;
7569 Assert . Equal ( expectedVal , toString ) ;
7670
77- var retrievedTyped = collection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
71+ var retrievedTyped = collection . FindSync ( FilterDefinition < Person > . Empty ) . ToList ( ) . Single ( ) ;
7872 Assert . Equal ( "Mario" , retrievedTyped . Name ) ;
7973 }
8074 }
@@ -85,10 +79,8 @@ public void TestDeserialization()
8579 RequireServer . Check ( ) ;
8680
8781 {
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 ) ;
9284
9385 var person = new Person1 { Id = ObjectId . Parse ( "6797b56bf5495bf53aa3078f" ) , Name = "Mariotest" , Age = 24 } ;
9486 collection . InsertOne ( person ) ;
@@ -98,11 +90,10 @@ public void TestDeserialization()
9890 var customDomain = BsonSerializer . CreateSerializationDomain ( ) ;
9991 customDomain . RegisterSerializer ( new CustomStringSerializer ( ) ) ;
10092
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 ) ;
10495
105- var retrievedTyped = collection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
96+ var retrievedTyped = collection . FindSync ( FilterDefinition < Person > . Empty ) . ToList ( ) . Single ( ) ;
10697 Assert . Equal ( "Mario" , retrievedTyped . Name ) ;
10798 }
10899 }
@@ -115,16 +106,14 @@ public void TestLinq()
115106 var customDomain = BsonSerializer . CreateSerializationDomain ( ) ;
116107 customDomain . RegisterSerializer ( new CustomStringSerializer ( ) ) ;
117108
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 ) ;
123112
124113 var person = new Person { Id = ObjectId . Parse ( "6797b56bf5495bf53aa3078f" ) , Name = "Mario" , Age = 24 } ;
125114 collection . InsertOne ( person ) ;
126115
127- var retrievedAsBson = untypedCollection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
116+ var retrievedAsBson = untypedCollection . FindSync ( FilterDefinition < BsonDocument > . Empty ) . ToList ( ) . Single ( ) ;
128117 var toString = retrievedAsBson . ToString ( ) ;
129118
130119 var expectedVal =
@@ -152,16 +141,14 @@ public void TestConventions()
152141 m => m . SetElementName ( m . MemberName . ToLower ( ) ) ) ;
153142 customDomain . ConventionRegistry . Register ( "myPack" , pack , t => t == typeof ( Person ) ) ;
154143
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 ) ;
160147
161148 var person = new Person { Name = "Mario" , Age = 24 } ; //Id is not set, so the custom ObjectIdGenerator should be used
162149 collection . InsertOne ( person ) ;
163150
164- var retrievedAsBson = untypedCollection . FindSync ( "{}" ) . ToList ( ) . Single ( ) ;
151+ var retrievedAsBson = untypedCollection . FindSync ( FilterDefinition < BsonDocument > . Empty ) . ToList ( ) . Single ( ) ;
165152 var toString = retrievedAsBson . ToString ( ) ;
166153
167154 var expectedVal =
@@ -194,44 +181,69 @@ public void TestDiscriminators()
194181 cm . SetDiscriminator ( "dp2" ) ;
195182 } ) ;
196183
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 ) ;
202186
203187 var bp1 = new DerivedPerson1 { Name = "Alice" , Age = 30 , ExtraField1 = "Field1" } ;
204188 var bp2 = new DerivedPerson2 { Name = "Bob" , Age = 40 , ExtraField2 = "Field2" } ;
205189 collection . InsertMany ( new BasePerson [ ] { bp1 , bp2 } ) ;
206190
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 ( ) ;
209194
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 ) ;
212197
213- var a1 = collection . AsQueryable ( ) . AppendStage ( PipelineStageDefinitionBuilder . OfType < BasePerson , DerivedPerson1 > ( ) )
198+ //AppendStage with OfType
199+ retrievedDerivedPerson1 = collection . AsQueryable ( ) . AppendStage ( PipelineStageDefinitionBuilder . OfType < BasePerson , DerivedPerson1 > ( ) )
214200 . OfType < DerivedPerson1 > ( ) . Single ( ) ;
215- var a2 = collection . AsQueryable ( ) . AppendStage ( PipelineStageDefinitionBuilder . OfType < BasePerson , DerivedPerson2 > ( ) )
201+ retrievedDerivedPerson2 = collection . AsQueryable ( ) . AppendStage ( PipelineStageDefinitionBuilder . OfType < BasePerson , DerivedPerson2 > ( ) )
216202 . OfType < DerivedPerson2 > ( ) . Single ( ) ;
217203
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 ) ;
220206
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 ( ) ;
223210
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 ) ;
226213
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 ( ) ;
229217
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 ) ;
232225
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 ;
235247 }
236248
237249 public class Person
0 commit comments