summaryrefslogtreecommitdiff
path: root/dbtests/basictests.cpp
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2010-05-19 22:47:15 -0400
committerMathias Stearn <mathias@10gen.com>2010-05-19 22:47:15 -0400
commit250294b68ec72ffc36776f10732e2fa44dafec38 (patch)
tree48a78b8d2526299c82de6bc6a109f50418261fa0 /dbtests/basictests.cpp
parentba7d2aeb804e98edcff3c36276a4617a135fe3fe (diff)
downloadmongo-250294b68ec72ffc36776f10732e2fa44dafec38.tar.gz
Fix ptr and add tests
Diffstat (limited to 'dbtests/basictests.cpp')
-rw-r--r--dbtests/basictests.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/dbtests/basictests.cpp b/dbtests/basictests.cpp
index 00bb0dd163e..81f897b90d2 100644
--- a/dbtests/basictests.cpp
+++ b/dbtests/basictests.cpp
@@ -366,6 +366,48 @@ namespace BasicTests {
}
};
+ class PtrTests {
+ public:
+ void run(){
+ scoped_ptr<int> p1 (new int(1));
+ shared_ptr<int> p2 (new int(2));
+ scoped_ptr<const int> p3 (new int(3));
+ shared_ptr<const int> p4 (new int(4));
+
+ //non-const
+ ASSERT_EQUALS( p1.get() , ptr<int>(p1) );
+ ASSERT_EQUALS( p2.get() , ptr<int>(p2) );
+ ASSERT_EQUALS( p2.get() , ptr<int>(p2.get()) ); // T* constructor
+ ASSERT_EQUALS( p2.get() , ptr<int>(ptr<int>(p2)) ); // copy constructor
+ ASSERT_EQUALS( *p2 , *ptr<int>(p2));
+ ASSERT_EQUALS( p2.get() , ptr<shared_ptr<int> >(&p2)->get() ); // operator->
+
+ //const
+ ASSERT_EQUALS( p1.get() , ptr<const int>(p1) );
+ ASSERT_EQUALS( p2.get() , ptr<const int>(p2) );
+ ASSERT_EQUALS( p2.get() , ptr<const int>(p2.get()) );
+ ASSERT_EQUALS( p3.get() , ptr<const int>(p3) );
+ ASSERT_EQUALS( p4.get() , ptr<const int>(p4) );
+ ASSERT_EQUALS( p4.get() , ptr<const int>(p4.get()) );
+ ASSERT_EQUALS( p2.get() , ptr<const int>(ptr<const int>(p2)) );
+ ASSERT_EQUALS( p2.get() , ptr<const int>(ptr<int>(p2)) ); // constizing copy constructor
+ ASSERT_EQUALS( *p2 , *ptr<int>(p2));
+ ASSERT_EQUALS( p2.get() , ptr<const shared_ptr<int> >(&p2)->get() );
+
+ //bool context
+ ASSERT( ptr<int>(p1) );
+ ASSERT( !ptr<int>(NULL) );
+ ASSERT( !ptr<int>() );
+
+#if 0
+ // These shouldn't compile
+ ASSERT_EQUALS( p3.get() , ptr<int>(p3) );
+ ASSERT_EQUALS( p4.get() , ptr<int>(p4) );
+ ASSERT_EQUALS( p2.get() , ptr<int>(ptr<const int>(p2)) );
+#endif
+ }
+ };
+
class All : public Suite {
public:
All() : Suite( "basic" ){
@@ -387,6 +429,8 @@ namespace BasicTests {
add< LexNumCmp >();
add< DatabaseValidNames >();
+
+ add< PtrTests >();
}
} myall;