diff --git a/tests/controls/label.cpp b/tests/controls/label.cpp index 3ba89c2f7e..5944966c2d 100644 --- a/tests/controls/label.cpp +++ b/tests/controls/label.cpp @@ -20,83 +20,22 @@ #include "wx/app.h" #endif // WX_PRECOMP -#include "wx/control.h" -#include "wx/stattext.h" #include "wx/checkbox.h" +#include "wx/control.h" +#include "wx/scopedptr.h" +#include "wx/stattext.h" -// ---------------------------------------------------------------------------- -// test class -// ---------------------------------------------------------------------------- - -class LabelTestCase : public CppUnit::TestCase +namespace { -public: - LabelTestCase() { } - virtual void setUp() wxOVERRIDE; - virtual void tearDown() wxOVERRIDE; +const char* const ORIGINAL_LABEL = "origin label"; -private: - CPPUNIT_TEST_SUITE( LabelTestCase ); - CPPUNIT_TEST( GetLabel ); - CPPUNIT_TEST( GetLabelText ); - CPPUNIT_TEST( Statics ); - CPPUNIT_TEST_SUITE_END(); - - void GetLabel(); - void GetLabelText(); - void Statics(); - - wxStaticText *m_st; - - // we cannot test wxControl directly (it's abstract) so we rather test wxCheckBox - wxCheckBox *m_cb; - - wxDECLARE_NO_COPY_CLASS(LabelTestCase); -}; - -// register in the unnamed registry so that these tests are run by default -CPPUNIT_TEST_SUITE_REGISTRATION( LabelTestCase ); - -// also include in its own registry so that these tests can be run alone -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( LabelTestCase, "LabelTestCase" ); - -// ---------------------------------------------------------------------------- -// test initialization -// ---------------------------------------------------------------------------- - -#define ORIGINAL_LABEL "original label" - -void LabelTestCase::setUp() +// The actual testing function. It will change the label of the provided +// control, which is assumed to be ORIGINAL_LABEL initially. +void DoTestLabel(wxControl* c) { - m_st = new wxStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL); + CHECK( c->GetLabel() == ORIGINAL_LABEL ); - m_cb = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL); - - CPPUNIT_ASSERT_EQUAL( ORIGINAL_LABEL, m_st->GetLabel() ); - CPPUNIT_ASSERT_EQUAL( ORIGINAL_LABEL, m_cb->GetLabel() ); -} - -void LabelTestCase::tearDown() -{ - wxDELETE(m_st); - wxDELETE(m_cb); -} - -// ---------------------------------------------------------------------------- -// the tests themselves -// ---------------------------------------------------------------------------- - -#define SET_LABEL(str) \ - m_st->SetLabel(str); \ - m_cb->SetLabel(str); - -#define SET_LABEL_TEXT(str) \ - m_st->SetLabelText(str); \ - m_cb->SetLabelText(str); - -void LabelTestCase::GetLabel() -{ const wxString testLabelArray[] = { "label without mnemonics and markup", "label with &mnemonic", @@ -104,92 +43,75 @@ void LabelTestCase::GetLabel() "label with some markup and &mnemonic", }; - // test calls to SetLabel() and then to GetLabel() - for ( unsigned int s = 0; s < WXSIZEOF(testLabelArray); s++ ) { - SET_LABEL(testLabelArray[s]); + const wxString& l = testLabelArray[s]; // GetLabel() should always return the string passed to SetLabel() - CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_st->GetLabel() ); - CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_cb->GetLabel() ); + c->SetLabel(l); + CHECK( c->GetLabel() == l ); + + // GetLabelText() should always return the string passed to SetLabelText() + c->SetLabelText(l); + CHECK( c->GetLabelText() == l ); } // test calls to SetLabelText() and then to GetLabel() - const wxString& testLabel = "label without mnemonics and markup"; - SET_LABEL_TEXT(testLabel); - CPPUNIT_ASSERT_EQUAL( testLabel, m_st->GetLabel() ); - CPPUNIT_ASSERT_EQUAL( testLabel, m_cb->GetLabel() ); + wxString testLabel = "label without mnemonics and markup"; + c->SetLabelText(testLabel); + CHECK( c->GetLabel() == testLabel ); - const wxString& testLabel2 = "label with &mnemonic"; - const wxString& testLabelText2 = "label with &&mnemonic"; - SET_LABEL_TEXT(testLabel2); - CPPUNIT_ASSERT_EQUAL( testLabelText2, m_st->GetLabel() ); - CPPUNIT_ASSERT_EQUAL( testLabelText2, m_cb->GetLabel() ); + c->SetLabelText("label with &mnemonic"); + CHECK( c->GetLabel() == "label with &&mnemonic" ); - const wxString& testLabel3 = "label with some markup"; - SET_LABEL_TEXT(testLabel3); - CPPUNIT_ASSERT_EQUAL( testLabel3, m_st->GetLabel() ); - CPPUNIT_ASSERT_EQUAL( testLabel3, m_cb->GetLabel() ); + testLabel = "label with some markup"; + c->SetLabelText(testLabel); + CHECK( c->GetLabel() == testLabel ); - const wxString& testLabel4 = "label with some markup and &mnemonic"; - const wxString& testLabelText4 = "label with some markup and &&mnemonic"; - SET_LABEL_TEXT(testLabel4); - CPPUNIT_ASSERT_EQUAL( testLabelText4, m_st->GetLabel() ); - CPPUNIT_ASSERT_EQUAL( testLabelText4, m_cb->GetLabel() ); -} + c->SetLabelText("label with some markup and &mnemonic"); + CHECK( c->GetLabel() == "label with some markup and &&mnemonic" ); -void LabelTestCase::GetLabelText() -{ // test calls to SetLabel() and then to GetLabelText() - const wxString& testLabel = "label without mnemonics and markup"; - SET_LABEL(testLabel); - CPPUNIT_ASSERT_EQUAL( testLabel, m_st->GetLabelText() ); - CPPUNIT_ASSERT_EQUAL( testLabel, m_cb->GetLabelText() ); + testLabel = "label without mnemonics and markup"; + c->SetLabel(testLabel); + CHECK( c->GetLabelText() == testLabel ); - const wxString& testLabel2 = "label with &mnemonic"; - const wxString& testLabelText2 = "label with mnemonic"; - SET_LABEL(testLabel2); - CPPUNIT_ASSERT_EQUAL( testLabelText2, m_st->GetLabelText() ); - CPPUNIT_ASSERT_EQUAL( testLabelText2, m_cb->GetLabelText() ); + c->SetLabel("label with &mnemonic"); + CHECK( c->GetLabelText() == "label with mnemonic" ); - const wxString& testLabel3 = "label with some markup"; - SET_LABEL(testLabel3); - CPPUNIT_ASSERT_EQUAL( testLabel3, m_st->GetLabelText() ); - CPPUNIT_ASSERT_EQUAL( testLabel3, m_cb->GetLabelText() ); + testLabel = "label with some markup"; + c->SetLabel(testLabel); + CHECK( c->GetLabelText() == testLabel ); - const wxString& testLabel4 = "label with some markup and &mnemonic"; - const wxString& testLabelText4 = "label with some markup and mnemonic"; - SET_LABEL(testLabel4); - CPPUNIT_ASSERT_EQUAL( testLabelText4, m_st->GetLabelText() ); - CPPUNIT_ASSERT_EQUAL( testLabelText4, m_cb->GetLabelText() ); + c->SetLabel("label with some markup and &mnemonic"); + CHECK( c->GetLabelText() == "label with some markup and mnemonic"); +} +} // anonymous namespace - const wxString testLabelArray[] = { - "label without mnemonics and markup", - "label with &mnemonic", - "label with some markup", - "label with some markup and &mnemonic", - }; - - // test calls to SetLabelText() and then to GetLabelText() - - for ( unsigned int s = 0; s < WXSIZEOF(testLabelArray); s++ ) +TEST_CASE("wxControl::Label", "[wxControl][label]") +{ + SECTION("wxStaticText") { - SET_LABEL_TEXT(testLabelArray[s]); + const wxScopedPtr + st(new wxStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL)); + DoTestLabel(st.get()); + } - // GetLabelText() should always return the string passed to SetLabelText() - CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_st->GetLabelText() ); - CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_cb->GetLabelText() ); + SECTION("wxCheckBox") + { + const wxScopedPtr + cb(new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL)); + DoTestLabel(cb.get()); } } -void LabelTestCase::Statics() +TEST_CASE("wxControl::RemoveMnemonics", "[wxControl][label][mnemonics]") { - CPPUNIT_ASSERT_EQUAL( "mnemonic", wxControl::RemoveMnemonics("&mnemonic") ); - CPPUNIT_ASSERT_EQUAL( "&mnemonic", wxControl::RemoveMnemonics("&&mnemonic") ); - CPPUNIT_ASSERT_EQUAL( "&mnemonic", wxControl::RemoveMnemonics("&&&mnemonic") ); + CHECK( "mnemonic" == wxControl::RemoveMnemonics("&mnemonic") ); + CHECK( "&mnemonic" == wxControl::RemoveMnemonics("&&mnemonic") ); + CHECK( "&mnemonic" == wxControl::RemoveMnemonics("&&&mnemonic") ); }