X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/deee2b18856aae8c6b0993cbb7686c7b0ef1bf57..05e66a7002abbc726d3aa53fc5cb42ebaf8748e8:/tests/weakref/weakref.cpp diff --git a/tests/weakref/weakref.cpp b/tests/weakref/weakref.cpp index ef1b8ad0f8..e0e6000038 100644 --- a/tests/weakref/weakref.cpp +++ b/tests/weakref/weakref.cpp @@ -73,9 +73,17 @@ private: // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( WeakRefTestCase ); -// also include in it's own registry so that these tests can be run alone +// also include in its own registry so that these tests can be run alone CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( WeakRefTestCase, "WeakRefTestCase" ); + +// Test weak reference to an incomplete type, this should work if the type is +// fully defined before it is used (but currently doesn't, see #11916) +struct ForwardDeclaredClass; +wxWeakRef g_incompleteWeakRef; + +struct ForwardDeclaredClass : wxEvtHandler { }; + void WeakRefTestCase::DeclareTest() { { @@ -110,6 +118,17 @@ void WeakRefTestCase::DeclareTest() CPPUNIT_ASSERT( wreh.get() == &eh ); CPPUNIT_ASSERT( wrot.get() == &ot ); } + + // This test requires a working dynamic_cast<> +#ifndef wxNO_RTTI + { + ForwardDeclaredClass fdc; + g_incompleteWeakRef = &fdc; + CPPUNIT_ASSERT( g_incompleteWeakRef ); + } + + CPPUNIT_ASSERT( !g_incompleteWeakRef ); +#endif // RTTI enabled } void WeakRefTestCase::AssignTest()