X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/51c679d5e29c75e4f7f16ebe59dd9086157e7fa4..ca21f825b50978500d5525f07682868ebf62ff6f:/tests/scopeguard/scopeguardtest.cpp diff --git a/tests/scopeguard/scopeguardtest.cpp b/tests/scopeguard/scopeguardtest.cpp index 977e316af2..7b74824c37 100644 --- a/tests/scopeguard/scopeguardtest.cpp +++ b/tests/scopeguard/scopeguardtest.cpp @@ -21,6 +21,7 @@ #pragma hdrstop #endif +#include "wx/string.h" #include "wx/scopeguard.h" // ---------------------------------------------------------------------------- @@ -61,6 +62,7 @@ public: CPPUNIT_TEST(BlockExit); CPPUNIT_TEST(BlockExitObj); CPPUNIT_TEST(BlockExitThis); + CPPUNIT_TEST(BlockExitSetVar); CPPUNIT_TEST_SUITE_END(); void Normal(); @@ -68,6 +70,7 @@ public: void BlockExit(); void BlockExitObj(); void BlockExitThis(); + void BlockExitSetVar(); private: void Zero() { m_count = 0; } @@ -206,3 +209,39 @@ void ScopeGuardTestCase::BlockExitThis() CPPUNIT_ASSERT_EQUAL( 5, m_count ); } +void ScopeGuardTestCase::BlockExitSetVar() +{ + m_count = 1; + { + wxON_BLOCK_EXIT_SET(m_count, 17); + + CPPUNIT_ASSERT_EQUAL( 1, m_count ); + } + CPPUNIT_ASSERT_EQUAL( 17, m_count ); + + + int count = 1; + { + wxON_BLOCK_EXIT_SET(count, 17); + + CPPUNIT_ASSERT_EQUAL( 1, count ); + } + CPPUNIT_ASSERT_EQUAL( 17, count ); + + + wxString s("hi"); + { + wxON_BLOCK_EXIT_SET(s, "bye"); + + CPPUNIT_ASSERT_EQUAL( "hi", s ); + } + CPPUNIT_ASSERT_EQUAL( "bye", s ); + + ScopeGuardTestCase *p = this; + { + wxON_BLOCK_EXIT_NULL(p); + + CPPUNIT_ASSERT( p ); + } + CPPUNIT_ASSERT( !p ); +}