diff options
Diffstat (limited to 'src/mongo/dbtests/queryutiltests.cpp')
-rw-r--r-- | src/mongo/dbtests/queryutiltests.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mongo/dbtests/queryutiltests.cpp b/src/mongo/dbtests/queryutiltests.cpp index 1fce06e36e4..87c644d2353 100644 --- a/src/mongo/dbtests/queryutiltests.cpp +++ b/src/mongo/dbtests/queryutiltests.cpp @@ -1263,6 +1263,26 @@ namespace QueryUtilTests { } }; + class AdvanceRange : public Base { + BSONObj query() { return fromjson( "{a:{$gt:2,$lt:8}}" ); } + BSONObj index() { return fromjson( "{a:1}" ); } + void check() { + assertAdvanceToNext( BSON( "a" << 2 ) ); + assertAdvanceToNext( BSON( "a" << 4 ) ); + assertAdvanceToNext( BSON( "a" << 5 ) ); + assertDoneAdvancing( BSON( "a" << 9 ) ); + } + }; + + class AdvanceInRange : public Base { + BSONObj query() { return fromjson( "{a:{$in:[0,1]},b:{$gt:2,$lt:8}}" ); } + BSONObj index() { return fromjson( "{a:1,b:1}" ); } + void check() { + assertAdvanceToNext( BSON( "a" << 0 << "b" << 5 ) ); + assertAdvanceToNext( BSON( "a" << 0 << "b" << 5 ) ); + } + }; + class AdvanceRangeIn : public Base { BSONObj query() { return fromjson( "{a:{$gt:2,$lt:8},b:{$in:[0,1]}}" ); } BSONObj index() { return fromjson( "{a:1,b:1}" ); } @@ -1281,6 +1301,15 @@ namespace QueryUtilTests { } }; + class AdvanceRangeRangeMultiple : public Base { + BSONObj query() { return fromjson( "{a:{$gt:2,$lt:8},b:{$gt:1,$lt:4}}" ); } + BSONObj index() { return fromjson( "{a:1,b:1}" ); } + void check() { + assertAdvanceToNext( BSON( "a" << 4 << "b" << 3 ) ); + assertAdvanceToNext( BSON( "a" << 4 << "b" << 3 ) ); + } + }; + class AdvanceRangeRangeIn : public Base { BSONObj query() { return fromjson( "{a:{$gt:2,$lt:8},b:{$gt:1,$lt:4},c:{$in:[6,7]}}" ); } BSONObj index() { return fromjson( "{a:1,b:1,c:1}" ); } @@ -1481,8 +1510,11 @@ namespace QueryUtilTests { add<FieldRangeVectorIteratorTests::AdvanceToNextIntervalIntermediateEqualityCompound>(); add<FieldRangeVectorIteratorTests::BeforeLowerBound>(); add<FieldRangeVectorIteratorTests::AdvanceToNextExclusiveIntervalCompound>(); + add<FieldRangeVectorIteratorTests::AdvanceRange>(); + add<FieldRangeVectorIteratorTests::AdvanceInRange>(); add<FieldRangeVectorIteratorTests::AdvanceRangeIn>(); add<FieldRangeVectorIteratorTests::AdvanceRangeRange>(); + add<FieldRangeVectorIteratorTests::AdvanceRangeRangeMultiple>(); add<FieldRangeVectorIteratorTests::AdvanceRangeRangeIn>(); add<FieldRangeVectorIteratorTests::AdvanceRangeMixedIn>(); add<FieldRangeVectorIteratorTests::AdvanceMixedMixedIn>(); |