1 #include <memory>
2 
3 #include "cppunit/cppunit_proxy.h"
4 
5 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
6 using namespace std;
7 #endif
8 
9 //
10 // TestCase class
11 //
12 class MemoryTest : public CPPUNIT_NS::TestCase
13 {
14   CPPUNIT_TEST_SUITE(MemoryTest);
15 #if defined (_STLP_MSVC) && (_STLP_MSVC < 1310)
16   CPPUNIT_IGNORE;
17 #endif
18   CPPUNIT_TEST(auto_ptr_test);
19   CPPUNIT_TEST_SUITE_END();
20 
21 protected:
22   void auto_ptr_test();
23 };
24 
25 CPPUNIT_TEST_SUITE_REGISTRATION(MemoryTest);
26 
27 #if !defined (_STLP_MSVC) || (_STLP_MSVC >= 1310)
CreateAutoPtr(int val)28 auto_ptr<int> CreateAutoPtr(int val)
29 { return auto_ptr<int>(new int(val)); }
30 
CheckEquality(auto_ptr<int> pint,int val)31 bool CheckEquality(auto_ptr<int> pint, int val)
32 { return *pint == val; }
33 #endif
34 
35 //
36 // tests implementation
37 //
auto_ptr_test()38 void MemoryTest::auto_ptr_test()
39 {
40 #if !defined (_STLP_MSVC) || (_STLP_MSVC >= 1310)
41   {
42     auto_ptr<int> pint(new int(1));
43     CPPUNIT_ASSERT( *pint == 1 );
44     *pint = 2;
45     CPPUNIT_ASSERT( *pint == 2 );
46   }
47 
48   {
49     auto_ptr<int> pint(CreateAutoPtr(3));
50     CPPUNIT_ASSERT( *pint == 3 );
51     CPPUNIT_ASSERT( CheckEquality(pint, 3) );
52   }
53 
54   {
55     auto_ptr<const int> pint(new int(2));
56     CPPUNIT_ASSERT( *pint == 2 );
57   }
58   {
59     auto_ptr<volatile int> pint(new int(2));
60     CPPUNIT_ASSERT( *pint == 2 );
61   }
62   {
63     auto_ptr<const volatile int> pint(new int(2));
64     CPPUNIT_ASSERT( *pint == 2 );
65   }
66 #endif
67 }
68