summaryrefslogtreecommitdiff
path: root/src/mongo/bson/bson_obj_test.cpp
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2015-05-13 15:27:46 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2015-05-15 11:17:22 -0400
commit62ca88a7e9e0e201050dcc9363b70ba5cd724040 (patch)
treea1d2c96239d7c3575e5b7d95d828ee02a3c38be0 /src/mongo/bson/bson_obj_test.cpp
parenta259e244153a7fd8644c7e8a583d70fc58e8a394 (diff)
downloadmongo-62ca88a7e9e0e201050dcc9363b70ba5cd724040.tar.gz
SERVER-18463 Remove BSON startup tests
This is on the way to remove the startup tests infrastructure.
Diffstat (limited to 'src/mongo/bson/bson_obj_test.cpp')
-rw-r--r--src/mongo/bson/bson_obj_test.cpp95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/mongo/bson/bson_obj_test.cpp b/src/mongo/bson/bson_obj_test.cpp
index 6befb751760..ab676f2af73 100644
--- a/src/mongo/bson/bson_obj_test.cpp
+++ b/src/mongo/bson/bson_obj_test.cpp
@@ -183,6 +183,101 @@ namespace {
}
}
+ TEST(BSONObjCompare, StringSymbol) {
+ BSONObj l, r;
+ { BSONObjBuilder b; b.append("x", "eliot"); l = b.obj(); }
+ { BSONObjBuilder b; b.appendSymbol("x", "eliot"); r = b.obj(); }
+
+ ASSERT_EQ(l.woCompare(r), 0);
+ ASSERT_EQ(r.woCompare(l), 0);
+ }
+
+ TEST(BSONObjCompare, StringOrder1) {
+ BSONObjBuilder b;
+ b.appendRegex("x", "foo");
+ BSONObj o = b.done();
+
+ BSONObjBuilder c;
+ c.appendRegex("x", "goo");
+ BSONObj p = c.done();
+
+ ASSERT(!o.binaryEqual(p));
+ ASSERT_LT(o.woCompare(p), 0);
+ }
+
+ TEST(BSONObjCompare, StringOrder2) {
+ BSONObj x, y, z;
+ { BSONObjBuilder b; b.append("x", (long long)2); x = b.obj(); }
+ { BSONObjBuilder b; b.append("x", (int)3); y = b.obj(); }
+ { BSONObjBuilder b; b.append("x", (long long)4); z = b.obj(); }
+
+ ASSERT_LT(x.woCompare(y), 0);
+ ASSERT_LT(x.woCompare(z), 0);
+ ASSERT_GT(y.woCompare(x), 0);
+ ASSERT_GT(z.woCompare(x), 0);
+ ASSERT_LT(y.woCompare(z), 0);
+ ASSERT_GT(z.woCompare(y), 0);
+ }
+
+ TEST(BSONObjCompare, StringOrder3) {
+ BSONObj ll,d,i,n,u;
+ { BSONObjBuilder b; b.append( "x" , (long long)2 ); ll = b.obj(); }
+ { BSONObjBuilder b; b.append( "x" , (double)2 ); d = b.obj(); }
+ { BSONObjBuilder b; b.append( "x" , (int)2 ); i = b.obj(); }
+ { BSONObjBuilder b; b.appendNull( "x" ); n = b.obj(); }
+ { BSONObjBuilder b; u = b.obj(); }
+
+ ASSERT_TRUE( ll.woCompare( u ) == d.woCompare( u ) );
+ ASSERT_TRUE( ll.woCompare( u ) == i.woCompare( u ) );
+
+ BSONObj k = BSON( "x" << 1 );
+ ASSERT_TRUE( ll.woCompare( u , k ) == d.woCompare( u , k ) );
+ ASSERT_TRUE( ll.woCompare( u , k ) == i.woCompare( u , k ) );
+
+ ASSERT_TRUE( u.woCompare( ll ) == u.woCompare( d ) );
+ ASSERT_TRUE( u.woCompare( ll ) == u.woCompare( i ) );
+ ASSERT_TRUE( u.woCompare( ll , k ) == u.woCompare( d , k ) );
+ ASSERT_TRUE( u.woCompare( ll , k ) == u.woCompare( d , k ) );
+
+ ASSERT_TRUE( i.woCompare( n ) == d.woCompare( n ) );
+
+ ASSERT_TRUE( ll.woCompare( n ) == d.woCompare( n ) );
+ ASSERT_TRUE( ll.woCompare( n ) == i.woCompare( n ) );
+ ASSERT_TRUE( ll.woCompare( n , k ) == d.woCompare( n , k ) );
+ ASSERT_TRUE( ll.woCompare( n , k ) == i.woCompare( n , k ) );
+
+ ASSERT_TRUE( n.woCompare( ll ) == n.woCompare( d ) );
+ ASSERT_TRUE( n.woCompare( ll ) == n.woCompare( i ) );
+ ASSERT_TRUE( n.woCompare( ll , k ) == n.woCompare( d , k ) );
+ ASSERT_TRUE( n.woCompare( ll , k ) == n.woCompare( d , k ) );
+ }
+
+ TEST(BSONObjCompare, NumericBounds) {
+ BSONObj l, r;
+ {
+ BSONObjBuilder b;
+ b.append("x", std::numeric_limits<long long>::max());
+ l = b.obj();
+ }
+ {
+ BSONObjBuilder b;
+ b.append("x", std::numeric_limits<double>::max());
+ r = b.obj();
+ }
+
+ ASSERT_LT(l.woCompare(r), 0);
+ ASSERT_GT(r.woCompare(l), 0);
+
+ {
+ BSONObjBuilder b;
+ b.append("x", std::numeric_limits<int>::max());
+ l = b.obj();
+ }
+
+ ASSERT_LT(l.woCompare(r), 0);
+ ASSERT_GT(r.woCompare(l), 0);
+ }
+
TEST(Looping, Cpp11Basic) {
int count = 0;
for (BSONElement e : BSON("a" << 1 << "a" << 2 << "a" << 3)) {