X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6e36db5ecaca60f633fa3321b30feae863eaeecd..e86aa7a62cc8be79ffaeb0d07b70161cb9ea2c74:/tests/controls/spinctrltest.cpp diff --git a/tests/controls/spinctrltest.cpp b/tests/controls/spinctrltest.cpp index 5b677f7571..88e86d3516 100644 --- a/tests/controls/spinctrltest.cpp +++ b/tests/controls/spinctrltest.cpp @@ -34,6 +34,7 @@ public: private: CPPUNIT_TEST_SUITE( SpinCtrlTestCase ); CPPUNIT_TEST( Initial ); + CPPUNIT_TEST( NoEventsInCtor ); WXUISIM_TEST( Arrows ); WXUISIM_TEST( Wrap ); CPPUNIT_TEST( Range ); @@ -41,6 +42,7 @@ private: CPPUNIT_TEST_SUITE_END(); void Initial(); + void NoEventsInCtor(); void Arrows(); void Wrap(); void Range(); @@ -81,6 +83,14 @@ void SpinCtrlTestCase::Initial() 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", @@ -89,10 +99,27 @@ void SpinCtrlTestCase::Initial() 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 - EventCounter updated(m_spin, wxEVT_COMMAND_SPINCTRL_UPDATED); + EventCounter updated(m_spin, wxEVT_SPINCTRL); wxUIActionSimulator sim; @@ -146,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());