summaryrefslogtreecommitdiff
path: root/src/mongo/bson/bsonobjbuilder_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/bson/bsonobjbuilder_test.cpp')
-rw-r--r--src/mongo/bson/bsonobjbuilder_test.cpp110
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();