212 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////////////
 | 
						|
// 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() wxOVERRIDE;
 | 
						|
    void tearDown() wxOVERRIDE;
 | 
						|
 | 
						|
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;
 | 
						|
 | 
						|
    wxDECLARE_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;
 | 
						|
    wxYield();
 | 
						|
    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;
 | 
						|
    wxYield();
 | 
						|
    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
 |