| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: tests/controls/slidertest.cpp
- // Purpose: wxSlider unit test
- // Author: Steven Lamerton
- // Created: 2010-07-20
- // Copyright: (c) 2010 Steven Lamerton
- ///////////////////////////////////////////////////////////////////////////////
- #include "testprec.h"
- #if wxUSE_SLIDER
- #ifdef __BORLANDC__
- #pragma hdrstop
- #endif
- #ifndef WX_PRECOMP
- #include "wx/app.h"
- #include "wx/slider.h"
- #endif // WX_PRECOMP
- #include "wx/uiaction.h"
- #include "testableframe.h"
- class SliderTestCase : public CppUnit::TestCase
- {
- public:
- SliderTestCase() { }
- void setUp();
- void tearDown();
- private:
- CPPUNIT_TEST_SUITE( SliderTestCase );
- #ifndef __WXOSX__
- WXUISIM_TEST( PageUpDown );
- WXUISIM_TEST( LineUpDown );
- WXUISIM_TEST( LinePageSize );
- #endif
- CPPUNIT_TEST( Value );
- CPPUNIT_TEST( Range );
- WXUISIM_TEST( Thumb );
- CPPUNIT_TEST( PseudoTest_Inversed );
- CPPUNIT_TEST( Value );
- CPPUNIT_TEST( Range );
- CPPUNIT_TEST_SUITE_END();
- void PageUpDown();
- void LineUpDown();
- void LinePageSize();
- void Value();
- void Range();
- void Thumb();
- void PseudoTest_Inversed() { ms_inversed = true; }
- static bool ms_inversed;
- wxSlider* m_slider;
- DECLARE_NO_COPY_CLASS(SliderTestCase)
- };
- bool SliderTestCase::ms_inversed = false;
- // register in the unnamed registry so that these tests are run by default
- CPPUNIT_TEST_SUITE_REGISTRATION( SliderTestCase );
- // also include in its own registry so that these tests can be run alone
- CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( SliderTestCase, "SliderTestCase" );
- void SliderTestCase::setUp()
- {
- long style = wxSL_HORIZONTAL;
- if ( ms_inversed )
- style |= wxSL_INVERSE;
- m_slider = new wxSlider(wxTheApp->GetTopWindow(), wxID_ANY, 50, 0, 100,
- wxDefaultPosition, wxDefaultSize,
- style);
- }
- void SliderTestCase::tearDown()
- {
- wxDELETE(m_slider);
- }
- void SliderTestCase::PageUpDown()
- {
- #if wxUSE_UIACTIONSIMULATOR
- EventCounter pageup(m_slider, wxEVT_SCROLL_PAGEUP);
- EventCounter pagedown(m_slider, wxEVT_SCROLL_PAGEDOWN);
- wxUIActionSimulator sim;
- m_slider->SetFocus();
- sim.Char(WXK_PAGEUP);
- sim.Char(WXK_PAGEDOWN);
- wxYield();
- CPPUNIT_ASSERT_EQUAL(1, pageup.GetCount());
- CPPUNIT_ASSERT_EQUAL(1, pagedown.GetCount());
- #endif
- }
- void SliderTestCase::LineUpDown()
- {
- #if wxUSE_UIACTIONSIMULATOR
- EventCounter lineup(m_slider, wxEVT_SCROLL_LINEUP);
- EventCounter linedown(m_slider, wxEVT_SCROLL_LINEDOWN);
- wxUIActionSimulator sim;
- m_slider->SetFocus();
- sim.Char(WXK_UP);
- sim.Char(WXK_DOWN);
- wxYield();
- CPPUNIT_ASSERT_EQUAL(1, lineup.GetCount());
- CPPUNIT_ASSERT_EQUAL(1, linedown.GetCount());
- #endif
- }
- void SliderTestCase::LinePageSize()
- {
- #if wxUSE_UIACTIONSIMULATOR
- wxUIActionSimulator sim;
- m_slider->SetFocus();
- m_slider->SetPageSize(20);
- sim.Char(WXK_PAGEUP);
- wxYield();
- CPPUNIT_ASSERT_EQUAL(20, m_slider->GetPageSize());
- CPPUNIT_ASSERT_EQUAL(30, m_slider->GetValue());
- m_slider->SetLineSize(2);
- sim.Char(WXK_UP);
- wxYield();
- CPPUNIT_ASSERT_EQUAL(2, m_slider->GetLineSize());
- CPPUNIT_ASSERT_EQUAL(28, m_slider->GetValue());
- #endif
- }
- void SliderTestCase::Value()
- {
- m_slider->SetValue(30);
- CPPUNIT_ASSERT_EQUAL(30, m_slider->GetValue());
- //When setting a value larger that max or smaller than min
- //max and min are set
- m_slider->SetValue(-1);
- CPPUNIT_ASSERT_EQUAL(0, m_slider->GetValue());
- m_slider->SetValue(110);
- CPPUNIT_ASSERT_EQUAL(100, m_slider->GetValue());
- }
- void SliderTestCase::Range()
- {
- CPPUNIT_ASSERT_EQUAL(0, m_slider->GetMin());
- CPPUNIT_ASSERT_EQUAL(100, m_slider->GetMax());
- // Changing range shouldn't change the value.
- m_slider->SetValue(17);
- m_slider->SetRange(0, 200);
- CPPUNIT_ASSERT_EQUAL(17, m_slider->GetValue());
- //Test negative ranges
- m_slider->SetRange(-50, 0);
- CPPUNIT_ASSERT_EQUAL(-50, m_slider->GetMin());
- CPPUNIT_ASSERT_EQUAL(0, m_slider->GetMax());
- }
- void SliderTestCase::Thumb()
- {
- #if wxUSE_UIACTIONSIMULATOR && !defined(__WXGTK__)
- EventCounter track(m_slider, wxEVT_SCROLL_THUMBTRACK);
- EventCounter release(m_slider, wxEVT_SCROLL_THUMBRELEASE);
- EventCounter changed(m_slider, wxEVT_SCROLL_CHANGED);
- wxUIActionSimulator sim;
- m_slider->SetValue(0);
- sim.MouseDragDrop(m_slider->ClientToScreen(wxPoint(10, 10)),m_slider->ClientToScreen(wxPoint(50, 10)));
- wxYield();
- CPPUNIT_ASSERT(track.GetCount() != 0);
- CPPUNIT_ASSERT_EQUAL(1, release.GetCount());
- #ifdef __WXMSW__
- CPPUNIT_ASSERT_EQUAL(1, changed.GetCount());
- #endif
- #endif
- }
- #endif
|