diff options
Diffstat (limited to 'src/mongo/bson/bsonobjbuilder_test.cpp')
-rw-r--r-- | src/mongo/bson/bsonobjbuilder_test.cpp | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/mongo/bson/bsonobjbuilder_test.cpp b/src/mongo/bson/bsonobjbuilder_test.cpp index 08f0fb43fbd..386b68f99c4 100644 --- a/src/mongo/bson/bsonobjbuilder_test.cpp +++ b/src/mongo/bson/bsonobjbuilder_test.cpp @@ -232,6 +232,56 @@ TEST(BSONObjBuilderTest, MovingAnOwningBSONObjBuilderWorks) { ASSERT_BSONOBJ_EQ(bob.obj(), BSON("a" << 1 << "b" << 2 << "c" << 3)); } +TEST(BSONObjBuilderTest, BSONObjBuilderAppendSet) { + BSONObjBuilder initial; + std::set<int> testSet = {10, 20, 30}; + + initial.append("a", testSet); + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONObjBuilderTest, BSONObjBuilderAppendList) { + BSONObjBuilder initial; + std::list<int> testList = {10, 20, 30}; + + initial.append("a", testList); + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONObjBuilderTest, BSONObjBuilderAppendVector) { + BSONObjBuilder initial; + std::vector<int> vect = {10, 20, 30}; + + initial.append("a", vect); + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONObjBuilderTest, BSONObjBuilderAppendVectorIterator) { + BSONObjBuilder initial; + std::vector<int> vect = {10, 20, 30}; + + initial.append("a", vect.begin(), vect.end()); + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONObjBuilderTest, BSONObjBuilderAppendSetIterator) { + BSONObjBuilder initial; + + std::set<int> testSet = {30, 20, 10}; + + initial.append("a", testSet.begin(), testSet.end()); + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONObjBuilderTest, BSONObjBuilderAppendBoostVectorIterator) { + BSONObjBuilder initial; + + auto vect = boost::container::small_vector<int, 3>{10, 20, 30}; + + initial.append("a", vect.begin(), vect.end()); + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + TEST(BSONObjBuilderTest, MovingANonOwningBSONObjBuilderWorks) { BSONObjBuilder outer; { @@ -266,6 +316,66 @@ TEST(BSONArrayBuilderTest, MovingABSONArrayBuilderWorks) { ASSERT_BSONOBJ_EQ(bob.obj(), BSON("a" << 1 << "array" << BSON_ARRAY(1 << "2" << 3 << "4"))); } +TEST(BSONArrayBuilderTest, BSONArrayBuilderAppendSet) { + BSONObjBuilder initial; + + { + BSONArrayBuilder arr(initial.subarrayStart("a")); + std::set<int> testSet = {10, 20, 30}; + arr.append(testSet); + } + + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONArrayBuilderTest, BSONArrayBuilderAppendList) { + BSONObjBuilder initial; + + { + BSONArrayBuilder arr(initial.subarrayStart("a")); + std::list<int> testList = {10, 20, 30}; + arr.append(testList); + } + + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONArrayBuilderTest, BSONArrayBuilderAppendVectorIterator) { + BSONObjBuilder initial; + + { + BSONArrayBuilder arr(initial.subarrayStart("a")); + std::vector<int> vect = {10, 20, 30}; + arr.append(vect.begin(), vect.end()); + } + + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONArrayBuilderTest, BSONArrayBuilderAppendSetIterator) { + BSONObjBuilder initial; + + { + BSONArrayBuilder arr(initial.subarrayStart("a")); + std::set<int> testSet = {10, 20, 30}; + arr.append(testSet.begin(), testSet.end()); + } + + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + +TEST(BSONObjBuilderTest, BSONArrayBuilderAppendBoostVectorIterator) { + BSONObjBuilder initial; + + { + BSONArrayBuilder arr(initial.subarrayStart("a")); + auto vect = boost::container::small_vector<int, 3>{10, 20, 30}; + arr.append(vect.begin(), vect.end()); + } + + ASSERT_BSONOBJ_EQ(initial.obj(), BSON("a" << BSON_ARRAY(10 << 20 << 30))); +} + TEST(BSONObjBuilderTest, SeedingBSONObjBuilderWithRootedUnsharedOwnedBsonWorks) { auto origObj = BSON("a" << 1); auto origObjPtr = origObj.objdata(); |