]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/controls/slidertest.cpp
Merge the new GUI tests from SOC2010_GUI_TEST branch.
[wxWidgets.git] / tests / controls / slidertest.cpp
diff --git a/tests/controls/slidertest.cpp b/tests/controls/slidertest.cpp
new file mode 100644 (file)
index 0000000..536166c
--- /dev/null
@@ -0,0 +1,207 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        tests/controls/slidertest.cpp
+// Purpose:     wxSlider unit test
+// Author:      Steven Lamerton
+// Created:     2010-07-20
+// RCS-ID:      $Id$
+// 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 );
+        WXUISIM_TEST( PageUpDown );
+        WXUISIM_TEST( LineUpDown );
+        WXUISIM_TEST( LinePageSize );
+        CPPUNIT_TEST( Value );
+        CPPUNIT_TEST( Range );
+        WXUISIM_TEST( Thumb );
+    CPPUNIT_TEST_SUITE_END();
+
+    void PageUpDown();
+    void LineUpDown();
+    void LinePageSize();
+    void Value();
+    void Range();
+    void Thumb();
+
+    wxSlider* m_slider;
+
+    DECLARE_NO_COPY_CLASS(SliderTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( SliderTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( SliderTestCase, "SliderTestCase" );
+
+void SliderTestCase::setUp()
+{
+    m_slider = new wxSlider(wxTheApp->GetTopWindow(), wxID_ANY, 50, 0, 100);
+}
+
+void SliderTestCase::tearDown()
+{
+    wxDELETE(m_slider);
+}
+
+void SliderTestCase::PageUpDown()
+{
+#if wxUSE_UIACTIONSIMULATOR
+    wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(),
+                                          wxTestableFrame);
+
+    EventCounter count(m_slider, wxEVT_SCROLL_PAGEUP);
+    EventCounter count1(m_slider, wxEVT_SCROLL_PAGEDOWN);
+
+    wxUIActionSimulator sim;
+
+    m_slider->SetFocus();
+
+    sim.Char(WXK_PAGEUP);
+    sim.Char(WXK_PAGEDOWN);
+
+    wxYield();
+
+    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(wxEVT_SCROLL_PAGEUP));
+    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(wxEVT_SCROLL_PAGEDOWN));
+#endif
+}
+
+void SliderTestCase::LineUpDown()
+{
+#if wxUSE_UIACTIONSIMULATOR
+    wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(),
+                                          wxTestableFrame);
+
+    EventCounter count(m_slider, wxEVT_SCROLL_LINEUP);
+    EventCounter count1(m_slider, wxEVT_SCROLL_LINEDOWN);
+
+    wxUIActionSimulator sim;
+
+    m_slider->SetFocus();
+
+    sim.Char(WXK_UP);
+    sim.Char(WXK_DOWN);
+
+    wxYield();
+
+    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(wxEVT_SCROLL_LINEUP));
+    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(wxEVT_SCROLL_LINEDOWN));
+#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());
+
+    //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__)
+    wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(),
+                                          wxTestableFrame);
+
+    EventCounter count(m_slider, wxEVT_SCROLL_THUMBTRACK);
+    EventCounter count1(m_slider, wxEVT_SCROLL_THUMBRELEASE);
+    EventCounter count2(m_slider, wxEVT_SCROLL_CHANGED);
+
+    wxUIActionSimulator sim;
+
+    m_slider->SetValue(0);
+
+    sim.MouseMove(m_slider->ClientToScreen(wxPoint(10, 10)));
+    wxYield();
+
+    sim.MouseDown();
+    wxYield();
+
+    sim.MouseMove(m_slider->ClientToScreen(wxPoint(50, 10)));
+    wxYield();
+
+    sim.MouseUp();
+    wxYield();
+
+    CPPUNIT_ASSERT(frame->GetEventCount(wxEVT_SCROLL_THUMBTRACK) != 0);
+    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(wxEVT_SCROLL_THUMBRELEASE));
+#ifdef __WXMSW__
+    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(wxEVT_SCROLL_CHANGED));
+#endif
+#endif
+}
+
+#endif