diff options
author | Mathias Stearn <mathias@10gen.com> | 2010-05-19 22:47:15 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2010-05-19 22:47:15 -0400 |
commit | 250294b68ec72ffc36776f10732e2fa44dafec38 (patch) | |
tree | 48a78b8d2526299c82de6bc6a109f50418261fa0 /dbtests/basictests.cpp | |
parent | ba7d2aeb804e98edcff3c36276a4617a135fe3fe (diff) | |
download | mongo-250294b68ec72ffc36776f10732e2fa44dafec38.tar.gz |
Fix ptr and add tests
Diffstat (limited to 'dbtests/basictests.cpp')
-rw-r--r-- | dbtests/basictests.cpp | 44 |
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; |