summaryrefslogtreecommitdiff
path: root/src/mongo/bson
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
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')
-rw-r--r--src/mongo/bson/SConscript1
-rw-r--r--src/mongo/bson/bson_obj_test.cpp95
-rw-r--r--src/mongo/bson/bson_startuptest.cpp159
3 files changed, 95 insertions, 160 deletions
diff --git a/src/mongo/bson/SConscript b/src/mongo/bson/SConscript
index 26586b5d3b1..60e2b72a8cf 100644
--- a/src/mongo/bson/SConscript
+++ b/src/mongo/bson/SConscript
@@ -12,7 +12,6 @@ env.SConscript(
env.Library(
target='bson',
source=[
- 'bson_startuptest.cpp',
'bson_validate.cpp',
'bsonelement.cpp',
'bsonmisc.cpp',
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)) {
diff --git a/src/mongo/bson/bson_startuptest.cpp b/src/mongo/bson/bson_startuptest.cpp
deleted file mode 100644
index 1ccb31f7f2d..00000000000
--- a/src/mongo/bson/bson_startuptest.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * Copyright (C) 2014 MongoDB Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the GNU Affero General Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#include "mongo/db/jsobj.h"
-#include "mongo/util/startup_test.h"
-
-namespace mongo {
- struct BsonUnitTest : public StartupTest {
- void testRegex() {
-
- BSONObjBuilder b;
- b.appendRegex("x", "foo");
- BSONObj o = b.done();
-
- BSONObjBuilder c;
- c.appendRegex("x", "goo");
- BSONObj p = c.done();
-
- verify( !o.binaryEqual( p ) );
- verify( o.woCompare( p ) < 0 );
-
- }
- void testoid() {
- // hardcoded so that we don't need to generate OIDs before initializers run
- OID id("541c5fa6ababec1be47e21b5");
- // sleepsecs(3);
- OID b;
- // goes with sleep above...
- // b.init();
-
- b.init( id.toString() );
- verify( b == id );
- }
-
- void testbounds() {
- 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();
- }
- verify( l.woCompare( r ) < 0 );
- verify( r.woCompare( l ) > 0 );
- {
- BSONObjBuilder b;
- b.append( "x" , std::numeric_limits<int>::max() );
- l = b.obj();
- }
- verify( l.woCompare( r ) < 0 );
- verify( r.woCompare( l ) > 0 );
- }
-
- void testorder() {
- {
- 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(); }
- verify( x.woCompare( y ) < 0 );
- verify( x.woCompare( z ) < 0 );
- verify( y.woCompare( x ) > 0 );
- verify( z.woCompare( x ) > 0 );
- verify( y.woCompare( z ) < 0 );
- verify( z.woCompare( y ) > 0 );
- }
-
- {
- 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(); }
-
- verify( ll.woCompare( u ) == d.woCompare( u ) );
- verify( ll.woCompare( u ) == i.woCompare( u ) );
- BSONObj k = BSON( "x" << 1 );
- verify( ll.woCompare( u , k ) == d.woCompare( u , k ) );
- verify( ll.woCompare( u , k ) == i.woCompare( u , k ) );
-
- verify( u.woCompare( ll ) == u.woCompare( d ) );
- verify( u.woCompare( ll ) == u.woCompare( i ) );
- verify( u.woCompare( ll , k ) == u.woCompare( d , k ) );
- verify( u.woCompare( ll , k ) == u.woCompare( d , k ) );
-
- verify( i.woCompare( n ) == d.woCompare( n ) );
-
- verify( ll.woCompare( n ) == d.woCompare( n ) );
- verify( ll.woCompare( n ) == i.woCompare( n ) );
- verify( ll.woCompare( n , k ) == d.woCompare( n , k ) );
- verify( ll.woCompare( n , k ) == i.woCompare( n , k ) );
-
- verify( n.woCompare( ll ) == n.woCompare( d ) );
- verify( n.woCompare( ll ) == n.woCompare( i ) );
- verify( n.woCompare( ll , k ) == n.woCompare( d , k ) );
- verify( n.woCompare( ll , k ) == n.woCompare( d , k ) );
- }
-
- {
- BSONObj l,r;
- { BSONObjBuilder b; b.append( "x" , "eliot" ); l = b.obj(); }
- { BSONObjBuilder b; b.appendSymbol( "x" , "eliot" ); r = b.obj(); }
- verify( l.woCompare( r ) == 0 );
- verify( r.woCompare( l ) == 0 );
- }
- }
-
- void run() {
- testRegex();
- BSONObjBuilder A,B,C;
- A.append("x", 2);
- B.append("x", 2.0);
- C.append("x", 2.1);
- BSONObj a = A.done();
- BSONObj b = B.done();
- BSONObj c = C.done();
- verify( !a.binaryEqual( b ) ); // comments on operator==
- int cmp = a.woCompare(b);
- verify( cmp == 0 );
- cmp = a.woCompare(c);
- verify( cmp < 0 );
- testoid();
- testbounds();
- testorder();
- }
- } bson_unittest;
-
-} // namespace mongo