// SERVER-2845 When skipping objects without loading them, they shouldn't be
// included in the nscannedObjects count.

var t = db.jstests_skip1;

if ( 0 ) { // SERVER-2845
t.drop();

t.ensureIndex( {a:1} );
t.save( {a:5} );
t.save( {a:5} );
t.save( {a:5} );

assert.eq( 3, t.find( {a:5} ).skip( 2 ).explain().nscanned );
assert.eq( 1, t.find( {a:5} ).skip( 2 ).explain().nscannedObjects );
}

// SERVER-13537: Ensure that combinations of skip and limit don't crash
// the server due to overflow.
t.drop();
for (var i = 0; i < 10; i++) {
    t.save({a: i});
}
assert.eq( 9, t.find().sort({a: 1}).limit(2147483647).skip(1).itcount() );
assert.eq( 0, t.find().sort({a: 1}).skip(2147483647).limit(1).itcount() );
assert.throws( function() {
    assert.eq( 0, t.find().sort({a: 1}).skip(2147483648).itcount() );
});
assert.throws( function() {
    assert.eq( 0, t.find().sort({a: 1}).limit(2147483648).itcount() );
});
