diff options
Diffstat (limited to 'src/mongo/db/ops/modifier_push_sorter_test.cpp')
-rw-r--r-- | src/mongo/db/ops/modifier_push_sorter_test.cpp | 232 |
1 files changed, 116 insertions, 116 deletions
diff --git a/src/mongo/db/ops/modifier_push_sorter_test.cpp b/src/mongo/db/ops/modifier_push_sorter_test.cpp index 4df1c4dfadc..d60eea1e942 100644 --- a/src/mongo/db/ops/modifier_push_sorter_test.cpp +++ b/src/mongo/db/ops/modifier_push_sorter_test.cpp @@ -37,143 +37,143 @@ namespace { - using mongo::BSONObj; - using mongo::fromjson; - using mongo::PatternElementCmp; - using mongo::mutablebson::Document; - using mongo::mutablebson::Element; - using mongo::mutablebson::sortChildren; - - class ObjectArray : public mongo::unittest::Test { - public: - ObjectArray() : _doc(), _size(0) {} - - virtual void setUp() { - Element arr = _doc.makeElementArray("x"); - ASSERT_TRUE(arr.ok()); - ASSERT_OK(_doc.root().pushBack(arr)); - } - - void addObj(BSONObj obj) { - ASSERT_LESS_THAN_OR_EQUALS(_size, 3u); - _objs[_size] = obj; - _size++; - - ASSERT_OK(_doc.root()["x"].appendObject(mongo::StringData(), obj)); - } - - BSONObj getOrigObj(size_t i) { - return _objs[i]; - } - - BSONObj getSortedObj(size_t i) { - return getArray()[i].getValueObject(); - } - - Element getArray() { - return _doc.root()["x"]; - } - - private: - Document _doc; - BSONObj _objs[3]; - size_t _size; - }; - - TEST_F(ObjectArray, NormalOrder) { - addObj(fromjson("{b:1, a:1}")); - addObj(fromjson("{a:3, b:2}")); - addObj(fromjson("{b:3, a:2}")); - - sortChildren(getArray(), PatternElementCmp(fromjson("{'a':1,'b':1}"))); - - ASSERT_EQUALS(getOrigObj(0), getSortedObj(0)); - ASSERT_EQUALS(getOrigObj(1), getSortedObj(2)); - ASSERT_EQUALS(getOrigObj(2), getSortedObj(1)); +using mongo::BSONObj; +using mongo::fromjson; +using mongo::PatternElementCmp; +using mongo::mutablebson::Document; +using mongo::mutablebson::Element; +using mongo::mutablebson::sortChildren; + +class ObjectArray : public mongo::unittest::Test { +public: + ObjectArray() : _doc(), _size(0) {} + + virtual void setUp() { + Element arr = _doc.makeElementArray("x"); + ASSERT_TRUE(arr.ok()); + ASSERT_OK(_doc.root().pushBack(arr)); } - TEST_F(ObjectArray, MixedOrder) { - addObj(fromjson("{b:1, a:1}")); - addObj(fromjson("{a:3, b:2}")); - addObj(fromjson("{b:3, a:2}")); + void addObj(BSONObj obj) { + ASSERT_LESS_THAN_OR_EQUALS(_size, 3u); + _objs[_size] = obj; + _size++; - sortChildren(getArray(), PatternElementCmp(fromjson("{b:1,a:-1}"))); - - ASSERT_EQUALS(getOrigObj(0), getSortedObj(0)); - ASSERT_EQUALS(getOrigObj(1), getSortedObj(1)); - ASSERT_EQUALS(getOrigObj(2), getSortedObj(2)); + ASSERT_OK(_doc.root()["x"].appendObject(mongo::StringData(), obj)); } - TEST_F(ObjectArray, ExtraFields) { - addObj(fromjson("{b:1, c:2, a:1}")); - addObj(fromjson("{c:1, a:3, b:2}")); - addObj(fromjson("{b:3, a:2}")); + BSONObj getOrigObj(size_t i) { + return _objs[i]; + } - sortChildren(getArray(), PatternElementCmp(fromjson("{a:1,b:1}"))); + BSONObj getSortedObj(size_t i) { + return getArray()[i].getValueObject(); + } - ASSERT_EQUALS(getOrigObj(0), getSortedObj(0)); - ASSERT_EQUALS(getOrigObj(1), getSortedObj(2)); - ASSERT_EQUALS(getOrigObj(2), getSortedObj(1)); + Element getArray() { + return _doc.root()["x"]; } - TEST_F(ObjectArray, MissingFields) { - addObj(fromjson("{a:2, b:2}")); - addObj(fromjson("{a:1}")); - addObj(fromjson("{a:3, b:3, c:3}")); +private: + Document _doc; + BSONObj _objs[3]; + size_t _size; +}; - sortChildren(getArray(), PatternElementCmp(fromjson("{b:1,c:1}"))); +TEST_F(ObjectArray, NormalOrder) { + addObj(fromjson("{b:1, a:1}")); + addObj(fromjson("{a:3, b:2}")); + addObj(fromjson("{b:3, a:2}")); - ASSERT_EQUALS(getOrigObj(0), getSortedObj(1)); - ASSERT_EQUALS(getOrigObj(1), getSortedObj(0)); - ASSERT_EQUALS(getOrigObj(2), getSortedObj(2)); - } + sortChildren(getArray(), PatternElementCmp(fromjson("{'a':1,'b':1}"))); - TEST_F(ObjectArray, NestedFields) { - addObj(fromjson("{a:{b:{c:2, d:0}}}")); - addObj(fromjson("{a:{b:{c:1, d:2}}}")); - addObj(fromjson("{a:{b:{c:3, d:1}}}")); + ASSERT_EQUALS(getOrigObj(0), getSortedObj(0)); + ASSERT_EQUALS(getOrigObj(1), getSortedObj(2)); + ASSERT_EQUALS(getOrigObj(2), getSortedObj(1)); +} - sortChildren(getArray(), PatternElementCmp(fromjson("{'a.b':1}"))); +TEST_F(ObjectArray, MixedOrder) { + addObj(fromjson("{b:1, a:1}")); + addObj(fromjson("{a:3, b:2}")); + addObj(fromjson("{b:3, a:2}")); - ASSERT_EQUALS(getOrigObj(0), getSortedObj(1)); - ASSERT_EQUALS(getOrigObj(1), getSortedObj(0)); - ASSERT_EQUALS(getOrigObj(2), getSortedObj(2)); - } + sortChildren(getArray(), PatternElementCmp(fromjson("{b:1,a:-1}"))); - TEST_F(ObjectArray, SimpleNestedFields) { - addObj(fromjson("{a:{b: -1}}")); - addObj(fromjson("{a:{b: -100}}")); - addObj(fromjson("{a:{b: 34}}")); + ASSERT_EQUALS(getOrigObj(0), getSortedObj(0)); + ASSERT_EQUALS(getOrigObj(1), getSortedObj(1)); + ASSERT_EQUALS(getOrigObj(2), getSortedObj(2)); +} - sortChildren(getArray(), PatternElementCmp(fromjson("{'a.b':1}"))); +TEST_F(ObjectArray, ExtraFields) { + addObj(fromjson("{b:1, c:2, a:1}")); + addObj(fromjson("{c:1, a:3, b:2}")); + addObj(fromjson("{b:3, a:2}")); - ASSERT_EQUALS(getOrigObj(0), getSortedObj(1)); - ASSERT_EQUALS(getOrigObj(1), getSortedObj(0)); - ASSERT_EQUALS(getOrigObj(2), getSortedObj(2)); - } + sortChildren(getArray(), PatternElementCmp(fromjson("{a:1,b:1}"))); - TEST_F(ObjectArray, NestedInnerObjectDescending) { - addObj(fromjson("{a:{b:{c:2, d:0}}}")); - addObj(fromjson("{a:{b:{c:1, d:2}}}")); - addObj(fromjson("{a:{b:{c:3, d:1}}}")); + ASSERT_EQUALS(getOrigObj(0), getSortedObj(0)); + ASSERT_EQUALS(getOrigObj(1), getSortedObj(2)); + ASSERT_EQUALS(getOrigObj(2), getSortedObj(1)); +} - sortChildren(getArray(), PatternElementCmp(fromjson("{'a.b.d':-1}"))); +TEST_F(ObjectArray, MissingFields) { + addObj(fromjson("{a:2, b:2}")); + addObj(fromjson("{a:1}")); + addObj(fromjson("{a:3, b:3, c:3}")); - ASSERT_EQUALS(getOrigObj(0), getSortedObj(2)); - ASSERT_EQUALS(getOrigObj(1), getSortedObj(0)); - ASSERT_EQUALS(getOrigObj(2), getSortedObj(1)); - } + sortChildren(getArray(), PatternElementCmp(fromjson("{b:1,c:1}"))); - TEST_F(ObjectArray, NestedInnerObjectAscending) { - addObj(fromjson("{a:{b:{c:2, d:0}}}")); - addObj(fromjson("{a:{b:{c:1, d:2}}}")); - addObj(fromjson("{a:{b:{c:3, d:1}}}")); + ASSERT_EQUALS(getOrigObj(0), getSortedObj(1)); + ASSERT_EQUALS(getOrigObj(1), getSortedObj(0)); + ASSERT_EQUALS(getOrigObj(2), getSortedObj(2)); +} - sortChildren(getArray(), PatternElementCmp(fromjson("{'a.b.d':1}"))); +TEST_F(ObjectArray, NestedFields) { + addObj(fromjson("{a:{b:{c:2, d:0}}}")); + addObj(fromjson("{a:{b:{c:1, d:2}}}")); + addObj(fromjson("{a:{b:{c:3, d:1}}}")); - ASSERT_EQUALS(getOrigObj(0), getSortedObj(0)); - ASSERT_EQUALS(getOrigObj(2), getSortedObj(1)); - ASSERT_EQUALS(getOrigObj(1), getSortedObj(2)); - } + sortChildren(getArray(), PatternElementCmp(fromjson("{'a.b':1}"))); + + ASSERT_EQUALS(getOrigObj(0), getSortedObj(1)); + ASSERT_EQUALS(getOrigObj(1), getSortedObj(0)); + ASSERT_EQUALS(getOrigObj(2), getSortedObj(2)); +} + +TEST_F(ObjectArray, SimpleNestedFields) { + addObj(fromjson("{a:{b: -1}}")); + addObj(fromjson("{a:{b: -100}}")); + addObj(fromjson("{a:{b: 34}}")); + + sortChildren(getArray(), PatternElementCmp(fromjson("{'a.b':1}"))); + + ASSERT_EQUALS(getOrigObj(0), getSortedObj(1)); + ASSERT_EQUALS(getOrigObj(1), getSortedObj(0)); + ASSERT_EQUALS(getOrigObj(2), getSortedObj(2)); +} + +TEST_F(ObjectArray, NestedInnerObjectDescending) { + addObj(fromjson("{a:{b:{c:2, d:0}}}")); + addObj(fromjson("{a:{b:{c:1, d:2}}}")); + addObj(fromjson("{a:{b:{c:3, d:1}}}")); + + sortChildren(getArray(), PatternElementCmp(fromjson("{'a.b.d':-1}"))); + + ASSERT_EQUALS(getOrigObj(0), getSortedObj(2)); + ASSERT_EQUALS(getOrigObj(1), getSortedObj(0)); + ASSERT_EQUALS(getOrigObj(2), getSortedObj(1)); +} + +TEST_F(ObjectArray, NestedInnerObjectAscending) { + addObj(fromjson("{a:{b:{c:2, d:0}}}")); + addObj(fromjson("{a:{b:{c:1, d:2}}}")); + addObj(fromjson("{a:{b:{c:3, d:1}}}")); + + sortChildren(getArray(), PatternElementCmp(fromjson("{'a.b.d':1}"))); + + ASSERT_EQUALS(getOrigObj(0), getSortedObj(0)); + ASSERT_EQUALS(getOrigObj(2), getSortedObj(1)); + ASSERT_EQUALS(getOrigObj(1), getSortedObj(2)); +} -} // unnamed namespace +} // unnamed namespace |