@@ -78,6 +78,32 @@ public void And_with_clashing_keys_but_different_operators_should_get_merged()
78
78
Assert ( filter , "{a: {$gt: 1, $lt: 10}}" ) ;
79
79
}
80
80
81
+ [ Theory ]
82
+ [ InlineData ( "{ geoField : { $geoWithin : { $box : [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] } } }" , "{ geoField : { $near : [ 5.0, 6.0 ] } }" ) ]
83
+ [ InlineData ( "{ geoField : { $near : [ 5.0, 6.0 ] } }" , "{ geoField : { $geoWithin : { $box : [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] } } }" ) ]
84
+ [ InlineData ( "{ geoField : { $nearSphere : { $geometry : { type : 'Point', coordinates : [ 1, 2 ] } } } }" , "{ geoField : { $geoIntersects : { $geometry : { type : 'Polygon', coordinates: [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ] ] ] } } } }" ) ]
85
+ [ InlineData ( "{ geoField : { $geoIntersects : { $geometry : { type : 'Polygon', coordinates: [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ] ] ] } } } }" , "{ geoField : { $nearSphere : { $geometry : { type : 'Point', coordinates : [ 1, 2 ] } } } }" ) ]
86
+ public void And_with_clashing_keys_and_different_operators_but_with_filters_that_support_only_dollar_form_should_get_promoted_to_dollar_form ( string firstFilter , string secondFilter )
87
+ {
88
+ var subject = CreateSubject < BsonDocument > ( ) ;
89
+
90
+ var combinedFilter = subject . And ( firstFilter , secondFilter ) ;
91
+
92
+ Assert ( combinedFilter , $ "{{ $and : [ { firstFilter } , { secondFilter } ] }}") ;
93
+ }
94
+
95
+ [ Fact ]
96
+ public void And_with_clashing_keys_and_different_operators_but_with_filters_that_support_only_dollar_form_and_empty_filter_should_ignore_empty_filter ( )
97
+ {
98
+ var subject = CreateSubject < BsonDocument > ( ) ;
99
+
100
+ var combinedFilter = subject . And (
101
+ "{ geoField : { $near : [ 5.0, 6.0 ] } }" ,
102
+ "{ geoField : { } }" ) ;
103
+
104
+ Assert ( combinedFilter , "{ geoField : { $near : [ 5.0, 6.0 ] } }" ) ;
105
+ }
106
+
81
107
[ Fact ]
82
108
public void And_with_an_empty_filter ( )
83
109
{
0 commit comments