slidertest.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: tests/controls/slidertest.cpp
  3. // Purpose: wxSlider unit test
  4. // Author: Steven Lamerton
  5. // Created: 2010-07-20
  6. // Copyright: (c) 2010 Steven Lamerton
  7. ///////////////////////////////////////////////////////////////////////////////
  8. #include "testprec.h"
  9. #if wxUSE_SLIDER
  10. #ifdef __BORLANDC__
  11. #pragma hdrstop
  12. #endif
  13. #ifndef WX_PRECOMP
  14. #include "wx/app.h"
  15. #include "wx/slider.h"
  16. #endif // WX_PRECOMP
  17. #include "wx/uiaction.h"
  18. #include "testableframe.h"
  19. class SliderTestCase : public CppUnit::TestCase
  20. {
  21. public:
  22. SliderTestCase() { }
  23. void setUp();
  24. void tearDown();
  25. private:
  26. CPPUNIT_TEST_SUITE( SliderTestCase );
  27. #ifndef __WXOSX__
  28. WXUISIM_TEST( PageUpDown );
  29. WXUISIM_TEST( LineUpDown );
  30. WXUISIM_TEST( LinePageSize );
  31. #endif
  32. CPPUNIT_TEST( Value );
  33. CPPUNIT_TEST( Range );
  34. WXUISIM_TEST( Thumb );
  35. CPPUNIT_TEST( PseudoTest_Inversed );
  36. CPPUNIT_TEST( Value );
  37. CPPUNIT_TEST( Range );
  38. CPPUNIT_TEST_SUITE_END();
  39. void PageUpDown();
  40. void LineUpDown();
  41. void LinePageSize();
  42. void Value();
  43. void Range();
  44. void Thumb();
  45. void PseudoTest_Inversed() { ms_inversed = true; }
  46. static bool ms_inversed;
  47. wxSlider* m_slider;
  48. DECLARE_NO_COPY_CLASS(SliderTestCase)
  49. };
  50. bool SliderTestCase::ms_inversed = false;
  51. // register in the unnamed registry so that these tests are run by default
  52. CPPUNIT_TEST_SUITE_REGISTRATION( SliderTestCase );
  53. // also include in its own registry so that these tests can be run alone
  54. CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( SliderTestCase, "SliderTestCase" );
  55. void SliderTestCase::setUp()
  56. {
  57. long style = wxSL_HORIZONTAL;
  58. if ( ms_inversed )
  59. style |= wxSL_INVERSE;
  60. m_slider = new wxSlider(wxTheApp->GetTopWindow(), wxID_ANY, 50, 0, 100,
  61. wxDefaultPosition, wxDefaultSize,
  62. style);
  63. }
  64. void SliderTestCase::tearDown()
  65. {
  66. wxDELETE(m_slider);
  67. }
  68. void SliderTestCase::PageUpDown()
  69. {
  70. #if wxUSE_UIACTIONSIMULATOR
  71. EventCounter pageup(m_slider, wxEVT_SCROLL_PAGEUP);
  72. EventCounter pagedown(m_slider, wxEVT_SCROLL_PAGEDOWN);
  73. wxUIActionSimulator sim;
  74. m_slider->SetFocus();
  75. sim.Char(WXK_PAGEUP);
  76. sim.Char(WXK_PAGEDOWN);
  77. wxYield();
  78. CPPUNIT_ASSERT_EQUAL(1, pageup.GetCount());
  79. CPPUNIT_ASSERT_EQUAL(1, pagedown.GetCount());
  80. #endif
  81. }
  82. void SliderTestCase::LineUpDown()
  83. {
  84. #if wxUSE_UIACTIONSIMULATOR
  85. EventCounter lineup(m_slider, wxEVT_SCROLL_LINEUP);
  86. EventCounter linedown(m_slider, wxEVT_SCROLL_LINEDOWN);
  87. wxUIActionSimulator sim;
  88. m_slider->SetFocus();
  89. sim.Char(WXK_UP);
  90. sim.Char(WXK_DOWN);
  91. wxYield();
  92. CPPUNIT_ASSERT_EQUAL(1, lineup.GetCount());
  93. CPPUNIT_ASSERT_EQUAL(1, linedown.GetCount());
  94. #endif
  95. }
  96. void SliderTestCase::LinePageSize()
  97. {
  98. #if wxUSE_UIACTIONSIMULATOR
  99. wxUIActionSimulator sim;
  100. m_slider->SetFocus();
  101. m_slider->SetPageSize(20);
  102. sim.Char(WXK_PAGEUP);
  103. wxYield();
  104. CPPUNIT_ASSERT_EQUAL(20, m_slider->GetPageSize());
  105. CPPUNIT_ASSERT_EQUAL(30, m_slider->GetValue());
  106. m_slider->SetLineSize(2);
  107. sim.Char(WXK_UP);
  108. wxYield();
  109. CPPUNIT_ASSERT_EQUAL(2, m_slider->GetLineSize());
  110. CPPUNIT_ASSERT_EQUAL(28, m_slider->GetValue());
  111. #endif
  112. }
  113. void SliderTestCase::Value()
  114. {
  115. m_slider->SetValue(30);
  116. CPPUNIT_ASSERT_EQUAL(30, m_slider->GetValue());
  117. //When setting a value larger that max or smaller than min
  118. //max and min are set
  119. m_slider->SetValue(-1);
  120. CPPUNIT_ASSERT_EQUAL(0, m_slider->GetValue());
  121. m_slider->SetValue(110);
  122. CPPUNIT_ASSERT_EQUAL(100, m_slider->GetValue());
  123. }
  124. void SliderTestCase::Range()
  125. {
  126. CPPUNIT_ASSERT_EQUAL(0, m_slider->GetMin());
  127. CPPUNIT_ASSERT_EQUAL(100, m_slider->GetMax());
  128. // Changing range shouldn't change the value.
  129. m_slider->SetValue(17);
  130. m_slider->SetRange(0, 200);
  131. CPPUNIT_ASSERT_EQUAL(17, m_slider->GetValue());
  132. //Test negative ranges
  133. m_slider->SetRange(-50, 0);
  134. CPPUNIT_ASSERT_EQUAL(-50, m_slider->GetMin());
  135. CPPUNIT_ASSERT_EQUAL(0, m_slider->GetMax());
  136. }
  137. void SliderTestCase::Thumb()
  138. {
  139. #if wxUSE_UIACTIONSIMULATOR && !defined(__WXGTK__)
  140. EventCounter track(m_slider, wxEVT_SCROLL_THUMBTRACK);
  141. EventCounter release(m_slider, wxEVT_SCROLL_THUMBRELEASE);
  142. EventCounter changed(m_slider, wxEVT_SCROLL_CHANGED);
  143. wxUIActionSimulator sim;
  144. m_slider->SetValue(0);
  145. sim.MouseDragDrop(m_slider->ClientToScreen(wxPoint(10, 10)),m_slider->ClientToScreen(wxPoint(50, 10)));
  146. wxYield();
  147. CPPUNIT_ASSERT(track.GetCount() != 0);
  148. CPPUNIT_ASSERT_EQUAL(1, release.GetCount());
  149. #ifdef __WXMSW__
  150. CPPUNIT_ASSERT_EQUAL(1, changed.GetCount());
  151. #endif
  152. #endif
  153. }
  154. #endif