@@ -115,6 +115,68 @@ public void TestBatchSplittingBySizeWithErrorsUnordered()
115115 Assert . That ( _collection . FindAll ( ) , Is . EquivalentTo ( expectedDocuments ) ) ;
116116 }
117117
118+ [ TestCase ( - 1 ) ]
119+ [ TestCase ( 0 ) ]
120+ [ TestCase ( 1 ) ]
121+ public void TestBatchSplittingDeletesNearMaxWriteBatchCount ( int maxBatchCountDelta )
122+ {
123+ var count = _primary . MaxBatchCount + maxBatchCountDelta ;
124+ _collection . Drop ( ) ;
125+ _collection . InsertBatch ( Enumerable . Range ( 0 , count ) . Select ( n => new BsonDocument ( "n" , n ) ) ) ;
126+
127+ var result = _collection . BulkWrite ( new BulkWriteArgs
128+ {
129+ Requests = Enumerable . Range ( 0 , count ) . Select ( n => ( WriteRequest ) new DeleteRequest ( Query . EQ ( "n" , n ) ) )
130+ } ) ;
131+
132+ Assert . AreEqual ( count , result . DeletedCount ) ;
133+ Assert . AreEqual ( 0 , _collection . Count ( ) ) ;
134+ }
135+
136+ [ TestCase ( - 1 ) ]
137+ [ TestCase ( 0 ) ]
138+ [ TestCase ( 1 ) ]
139+ public void TestBatchSplittingInsertsNearMaxWriteBatchCount ( int maxBatchCountDelta )
140+ {
141+ var count = _primary . MaxBatchCount + maxBatchCountDelta ;
142+ _collection . Drop ( ) ;
143+
144+ var result = _collection . BulkWrite ( new BulkWriteArgs
145+ {
146+ Requests = Enumerable . Range ( 0 , count ) . Select ( n => ( WriteRequest ) new InsertRequest ( typeof ( BsonDocument ) , new BsonDocument ( "n" , n ) ) )
147+ } ) ;
148+
149+ Assert . AreEqual ( count , result . InsertedCount ) ;
150+ Assert . AreEqual ( count , _collection . Count ( ) ) ;
151+ }
152+
153+ [ TestCase ( - 1 ) ]
154+ [ TestCase ( 0 ) ]
155+ [ TestCase ( 1 ) ]
156+ public void TestBatchSplittingUpdatesNearMaxWriteBatchCount ( int maxBatchCountDelta )
157+ {
158+ var count = _primary . MaxBatchCount + maxBatchCountDelta ;
159+ _collection . Drop ( ) ;
160+ _collection . InsertBatch ( Enumerable . Range ( 0 , count ) . Select ( n => new BsonDocument ( "n" , n ) ) ) ;
161+
162+ var result = _collection . BulkWrite ( new BulkWriteArgs
163+ {
164+ Requests = Enumerable . Range ( 0 , count ) . Select ( n => ( WriteRequest ) new UpdateRequest ( Query . EQ ( "n" , n ) , Update . Set ( "n" , - 1 ) ) )
165+ } ) ;
166+
167+ if ( _primary . Supports ( FeatureId . WriteCommands ) )
168+ {
169+ Assert . AreEqual ( true , result . IsModifiedCountAvailable ) ;
170+ Assert . AreEqual ( count , result . ModifiedCount ) ;
171+ }
172+ else
173+ {
174+ Assert . AreEqual ( false , result . IsModifiedCountAvailable ) ;
175+ }
176+ Assert . AreEqual ( count , _collection . Count ( ) ) ;
177+ Assert . AreEqual ( count , _collection . Count ( Query . EQ ( "n" , - 1 ) ) ) ;
178+ }
179+
118180 [ Test ]
119181 [ TestCase ( false ) ]
120182 [ TestCase ( true ) ]
0 commit comments