@@ -105,9 +105,10 @@ public void testBig(){
105
105
assertEquals ( numToInsert , c .find ().limit (800 ).count () );
106
106
assertEquals ( 800 , c .find ().limit (800 ).toArray ().size () );
107
107
108
+ // negative limit works like negative batchsize, for legacy reason
108
109
int x = c .find ().limit (-800 ).toArray ().size ();
109
110
assertLess ( x , 800 );
110
-
111
+
111
112
DBCursor a = c .find ();
112
113
assertEquals ( numToInsert , a .itcount () );
113
114
@@ -224,7 +225,50 @@ public void testSpecial(){
224
225
assertTrue ( o .get ("_id" ) != null );
225
226
226
227
}
227
-
228
+
229
+ @ Test
230
+ public void testLimitAndBatchSize () {
231
+ DBCollection c = _db .getCollection ( "LimitAndBatchSize" );
232
+ c .drop ();
233
+
234
+ for ( int i =0 ; i <1000 ; i ++ )
235
+ c .save ( new BasicDBObject ( "x" , i ) );
236
+
237
+ DBObject q = BasicDBObjectBuilder .start ().push ( "x" ).add ( "$lt" , 200 ).get ();
238
+
239
+ DBCursor cur = c .find ( q );
240
+ assertEquals (0 , cur .getCursorId ());
241
+ assertEquals ( 200 , cur .itcount () );
242
+
243
+ cur = c .find ( q ).limit (50 );
244
+ assertEquals (0 , cur .getCursorId ());
245
+ assertEquals ( 50 , cur .itcount () );
246
+
247
+ cur = c .find ( q ).batchSize (50 );
248
+ assertEquals (0 , cur .getCursorId ());
249
+ assertEquals ( 200 , cur .itcount () );
250
+
251
+ cur = c .find ( q ).batchSize (100 ).limit (50 );
252
+ assertEquals (0 , cur .getCursorId ());
253
+ assertEquals ( 50 , cur .itcount () );
254
+
255
+ cur = c .find ( q ).batchSize (-40 );
256
+ assertEquals (0 , cur .getCursorId ());
257
+ assertEquals ( 40 , cur .itcount () );
258
+
259
+ cur = c .find ( q ).limit (-100 );
260
+ assertEquals (0 , cur .getCursorId ());
261
+ assertEquals ( 100 , cur .itcount () );
262
+
263
+ cur = c .find ( q ).batchSize (-40 ).limit (20 );
264
+ assertEquals (0 , cur .getCursorId ());
265
+ assertEquals ( 20 , cur .itcount () );
266
+
267
+ cur = c .find ( q ).batchSize (-20 ).limit (100 );
268
+ assertEquals (0 , cur .getCursorId ());
269
+ assertEquals ( 20 , cur .itcount () );
270
+ }
271
+
228
272
final DB _db ;
229
273
230
274
public static void main ( String args [] )
0 commit comments