#include <memory>
#if !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT)
// #include <typeinfo>
#include "cppunit/cppunit_proxy.h"
#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
using namespace std;
#endif
class SharedPtrTest :
public CPPUNIT_NS::TestCase
{
CPPUNIT_TEST_SUITE(SharedPtrTest);
CPPUNIT_TEST(shared_from_this);
CPPUNIT_TEST_SUITE_END();
protected:
void shared_from_this();
};
CPPUNIT_TEST_SUITE_REGISTRATION(SharedPtrTest);
struct X;
struct X :
public std::tr1::enable_shared_from_this<X>
{
};
void SharedPtrTest::shared_from_this()
{
std::tr1::shared_ptr<X> p( new X );
std::tr1::shared_ptr<X> q = p->shared_from_this();
CPPUNIT_CHECK( p == q );
CPPUNIT_CHECK( !(p < q) && !(q < p) ); // p and q share ownership
}
#endif /* !_STLP_NO_EXTENSIONS && _STLP_USE_BOOST_SUPPORT */