From: Jaakko Salli Date: Sat, 19 Jun 2010 11:01:22 +0000 (+0000) Subject: Added (sanity) checks for the inplace allocation X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/85615340856e9a41cb28eaa6ebf12f4945b78b4b Added (sanity) checks for the inplace allocation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/tests/any/anytest.cpp b/tests/any/anytest.cpp index a43b8975cf..156ba08689 100644 --- a/tests/any/anytest.cpp +++ b/tests/any/anytest.cpp @@ -18,6 +18,7 @@ #include "wx/any.h" #include "wx/datetime.h" #include "wx/object.h" +#include "wx/vector.h" #include @@ -39,6 +40,7 @@ private: CPPUNIT_TEST( Null ); CPPUNIT_TEST( wxVariantConversions ); CPPUNIT_TEST( CustomTemplateSpecialization ); + CPPUNIT_TEST( Misc ); CPPUNIT_TEST_SUITE_END(); void CheckType(); @@ -48,6 +50,7 @@ private: void Null(); void wxVariantConversions(); void CustomTemplateSpecialization(); + void Misc(); wxDateTime m_testDateTime; @@ -408,16 +411,42 @@ void wxAnyTestCase::GetAs() // // Test user data type for wxAnyValueTypeImpl specialization -// any hand-built wxVariantData +// any hand-built wxVariantData. Also for inplace allocation +// sanity checks. // +class MyClass; + +static wxVector gs_myClassInstances; + class MyClass { public: MyClass( int someValue = 32768 ) { + Init(); m_someValue = someValue; } + MyClass( const MyClass& other ) + { + Init(); + m_someValue = other.m_someValue; + } + virtual ~MyClass() + { + for ( size_t i=0; i(&any); + size_t anyEnd = anyBegin + sizeof(wxAny); + size_t pos = reinterpret_cast(gs_myClassInstances[1]); + CPPUNIT_ASSERT( pos >= anyBegin ); + CPPUNIT_ASSERT( pos < anyEnd ); + } + + wxAny any2 = any; + CPPUNIT_ASSERT( any2.As().GetValue() == 15 ); + } + + // Make sure allocations and deallocations match + CPPUNIT_ASSERT_EQUAL(gs_myClassInstances.size(), 0); +} + #endif // wxUSE_ANY