@@ -105,9 +105,10 @@ public void testBig(){
105105 assertEquals ( numToInsert , c .find ().limit (800 ).count () );
106106 assertEquals ( 800 , c .find ().limit (800 ).toArray ().size () );
107107
108+ // negative limit works like negative batchsize, for legacy reason
108109 int x = c .find ().limit (-800 ).toArray ().size ();
109110 assertLess ( x , 800 );
110-
111+
111112 DBCursor a = c .find ();
112113 assertEquals ( numToInsert , a .itcount () );
113114
@@ -224,7 +225,50 @@ public void testSpecial(){
224225 assertTrue ( o .get ("_id" ) != null );
225226
226227 }
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+
228272 final DB _db ;
229273
230274 public static void main ( String args [] )
0 commit comments