X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/232fdc630c42eb165f7659981043e794be03b3b7..e86aa7a62cc8be79ffaeb0d07b70161cb9ea2c74:/tests/controls/spinctrltest.cpp?ds=sidebyside diff --git a/tests/controls/spinctrltest.cpp b/tests/controls/spinctrltest.cpp index 25b6424c64..88e86d3516 100644 --- a/tests/controls/spinctrltest.cpp +++ b/tests/controls/spinctrltest.cpp @@ -33,12 +33,16 @@ public: private: CPPUNIT_TEST_SUITE( SpinCtrlTestCase ); + CPPUNIT_TEST( Initial ); + CPPUNIT_TEST( NoEventsInCtor ); WXUISIM_TEST( Arrows ); WXUISIM_TEST( Wrap ); CPPUNIT_TEST( Range ); CPPUNIT_TEST( Value ); CPPUNIT_TEST_SUITE_END(); + void Initial(); + void NoEventsInCtor(); void Arrows(); void Wrap(); void Range(); @@ -52,7 +56,7 @@ private: // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( SpinCtrlTestCase ); -// 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( SpinCtrlTestCase, "SpinCtrlTestCase" ); void SpinCtrlTestCase::setUp() @@ -65,13 +69,57 @@ void SpinCtrlTestCase::tearDown() wxDELETE(m_spin); } +void SpinCtrlTestCase::Initial() +{ + // Initial value is defined by "initial" argument which is 0 by default. + CPPUNIT_ASSERT_EQUAL( 0, m_spin->GetValue() ); + + wxWindow* const parent = m_spin->GetParent(); + + // Recreate the control with another "initial" to check this. + delete m_spin; + m_spin = new wxSpinCtrl(parent, wxID_ANY, "", + wxDefaultPosition, wxDefaultSize, 0, + 0, 100, 17); + CPPUNIT_ASSERT_EQUAL( 17, m_spin->GetValue() ); + + // Recreate the control with another "initial" outside of standard spin + // ctrl range. + delete m_spin; + m_spin = new wxSpinCtrl(parent, wxID_ANY, "", + wxDefaultPosition, wxDefaultSize, 0, + 0, 200, 150); + CPPUNIT_ASSERT_EQUAL( 150, m_spin->GetValue() ); + + // But if the text string is specified, it takes precedence. + delete m_spin; + m_spin = new wxSpinCtrl(parent, wxID_ANY, "99", + wxDefaultPosition, wxDefaultSize, 0, + 0, 100, 17); + CPPUNIT_ASSERT_EQUAL( 99, m_spin->GetValue() ); +} + +void SpinCtrlTestCase::NoEventsInCtor() +{ + // Verify that creating the control does not generate any events. This is + // unexpected and shouldn't happen. + wxWindow* const parent = m_spin->GetParent(); + delete m_spin; + m_spin = new wxSpinCtrl; + + EventCounter updated(m_spin, wxEVT_SPINCTRL); + + m_spin->Create(parent, wxID_ANY, "", + wxDefaultPosition, wxDefaultSize, 0, + 0, 100, 17); + + CPPUNIT_ASSERT_EQUAL(0, updated.GetCount()); +} + void SpinCtrlTestCase::Arrows() { #if wxUSE_UIACTIONSIMULATOR - wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(), - wxTestableFrame); - - EventCounter count(m_spin, wxEVT_COMMAND_SPINCTRL_UPDATED); + EventCounter updated(m_spin, wxEVT_SPINCTRL); wxUIActionSimulator sim; @@ -81,14 +129,15 @@ void SpinCtrlTestCase::Arrows() wxYield(); - CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount()); + CPPUNIT_ASSERT_EQUAL(1, updated.GetCount()); CPPUNIT_ASSERT_EQUAL(1, m_spin->GetValue()); + updated.Clear(); sim.Char(WXK_DOWN); wxYield(); - CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount()); + CPPUNIT_ASSERT_EQUAL(1, updated.GetCount()); CPPUNIT_ASSERT_EQUAL(0, m_spin->GetValue()); #endif } @@ -124,7 +173,18 @@ void SpinCtrlTestCase::Range() CPPUNIT_ASSERT_EQUAL(0, m_spin->GetMin()); CPPUNIT_ASSERT_EQUAL(100, m_spin->GetMax()); - //Test neagtive ranges + // Test that the value is adjusted to be inside the new valid range but + // that this doesn't result in any events (as this is not something done by + // the user). + { + EventCounter updated(m_spin, wxEVT_SPINCTRL); + + m_spin->SetRange(1, 10); + CPPUNIT_ASSERT_EQUAL(1, m_spin->GetValue()); + CPPUNIT_ASSERT_EQUAL(0, updated.GetCount()); + } + + //Test negative ranges m_spin->SetRange(-10, 10); CPPUNIT_ASSERT_EQUAL(-10, m_spin->GetMin());