X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/232fdc630c42eb165f7659981043e794be03b3b7..e5354813181461c154044d52a464b29fa1aefaf8:/tests/controls/checkboxtest.cpp diff --git a/tests/controls/checkboxtest.cpp b/tests/controls/checkboxtest.cpp index 1e1ba92cc7..c36ea4325b 100644 --- a/tests/controls/checkboxtest.cpp +++ b/tests/controls/checkboxtest.cpp @@ -33,13 +33,32 @@ public: private: CPPUNIT_TEST_SUITE( CheckBoxTestCase ); CPPUNIT_TEST( Check ); +#ifdef wxHAS_3STATE_CHECKBOX CPPUNIT_TEST( ThirdState ); CPPUNIT_TEST( ThirdStateUser ); + CPPUNIT_TEST( InvalidStyles ); +#endif // wxHAS_3STATE_CHECKBOX CPPUNIT_TEST_SUITE_END(); void Check(); +#ifdef wxHAS_3STATE_CHECKBOX void ThirdState(); void ThirdStateUser(); + void InvalidStyles(); +#endif // wxHAS_3STATE_CHECKBOX + + // Initialize m_check with a new checkbox with the specified style + // + // This function always returns false just to make it more convenient to + // use inside WX_ASSERT_FAILS_WITH_ASSERT(), its return value doesn't have + // any meaning otherwise. + bool CreateCheckBox(long style) + { + m_check = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, "Check box", + wxDefaultPosition, wxDefaultSize, style); + return false; + } + wxCheckBox* m_check; @@ -49,7 +68,7 @@ private: // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( CheckBoxTestCase ); -// 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( CheckBoxTestCase, "CheckBoxTestCase" ); void CheckBoxTestCase::setUp() @@ -64,10 +83,7 @@ void CheckBoxTestCase::tearDown() void CheckBoxTestCase::Check() { - wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(), - wxTestableFrame); - - EventCounter count(m_check, wxEVT_COMMAND_CHECKBOX_CLICKED); + EventCounter clicked(m_check, wxEVT_CHECKBOX); //We should be unchecked by default CPPUNIT_ASSERT(!m_check->IsChecked()); @@ -89,15 +105,14 @@ void CheckBoxTestCase::Check() CPPUNIT_ASSERT(!m_check->IsChecked()); //None of these should send events - CPPUNIT_ASSERT_EQUAL(0, frame->GetEventCount()); + CPPUNIT_ASSERT_EQUAL(0, clicked.GetCount()); } +#ifdef wxHAS_3STATE_CHECKBOX void CheckBoxTestCase::ThirdState() { -#if !defined(__WXMGL__) && !defined(__WXPM__) && !defined(__WXGTK12__) wxDELETE(m_check); - m_check = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, "Check box", - wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); + CreateCheckBox(wxCHK_3STATE); CPPUNIT_ASSERT_EQUAL(wxCHK_UNCHECKED, m_check->Get3StateValue()); CPPUNIT_ASSERT(m_check->Is3State()); @@ -110,16 +125,12 @@ void CheckBoxTestCase::ThirdState() m_check->Set3StateValue(wxCHK_UNDETERMINED); CPPUNIT_ASSERT_EQUAL(wxCHK_UNDETERMINED, m_check->Get3StateValue()); -#endif } void CheckBoxTestCase::ThirdStateUser() { -#if !defined(__WXMGL__) && !defined(__WXPM__) && !defined(__WXGTK12__) wxDELETE(m_check); - m_check = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, "Check box", - wxDefaultPosition, wxDefaultSize, - wxCHK_3STATE | wxCHK_ALLOW_3RD_STATE_FOR_USER); + CreateCheckBox(wxCHK_3STATE | wxCHK_ALLOW_3RD_STATE_FOR_USER); CPPUNIT_ASSERT_EQUAL(wxCHK_UNCHECKED, m_check->Get3StateValue()); CPPUNIT_ASSERT(m_check->Is3State()); @@ -132,7 +143,31 @@ void CheckBoxTestCase::ThirdStateUser() m_check->Set3StateValue(wxCHK_UNDETERMINED); CPPUNIT_ASSERT_EQUAL(wxCHK_UNDETERMINED, m_check->Get3StateValue()); +} + +void CheckBoxTestCase::InvalidStyles() +{ + // Check that using incompatible styles doesn't work. + wxDELETE( m_check ); + WX_ASSERT_FAILS_WITH_ASSERT( CreateCheckBox(wxCHK_2STATE | wxCHK_3STATE) ); +#if !wxDEBUG_LEVEL + CPPUNIT_ASSERT( !m_check->Is3State() ); + CPPUNIT_ASSERT( !m_check->Is3rdStateAllowedForUser() ); +#endif + + wxDELETE( m_check ); + WX_ASSERT_FAILS_WITH_ASSERT( + CreateCheckBox(wxCHK_2STATE | wxCHK_ALLOW_3RD_STATE_FOR_USER) ); +#if !wxDEBUG_LEVEL + CPPUNIT_ASSERT( !m_check->Is3State() ); + CPPUNIT_ASSERT( !m_check->Is3rdStateAllowedForUser() ); #endif + + // wxCHK_ALLOW_3RD_STATE_FOR_USER without wxCHK_3STATE doesn't work. + wxDELETE( m_check ); + WX_ASSERT_FAILS_WITH_ASSERT( CreateCheckBox(wxCHK_ALLOW_3RD_STATE_FOR_USER) ); } -#endif //wxUSE_CHECKBOX +#endif // wxHAS_3STATE_CHECKBOX + +#endif // wxUSE_CHECKBOX