1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: tests/controls/listctrltest.cpp
3 // Purpose: wxListCtrl unit test
4 // Author: Vadim Zeitlin
7 // Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
8 // (c) 2010 Steven Lamerton
9 ///////////////////////////////////////////////////////////////////////////////
11 // ----------------------------------------------------------------------------
13 // ----------------------------------------------------------------------------
27 #include "wx/listctrl.h"
28 #include "listbasetest.h"
29 #include "testableframe.h"
30 #include "wx/uiaction.h"
32 // ----------------------------------------------------------------------------
34 // ----------------------------------------------------------------------------
36 class ListCtrlTestCase
: public ListBaseTestCase
, public CppUnit::TestCase
39 ListCtrlTestCase() { }
42 virtual void tearDown();
44 virtual wxListCtrl
*GetList() const { return m_list
; }
47 CPPUNIT_TEST_SUITE( ListCtrlTestCase
);
49 WXUISIM_TEST( ColumnClick
);
50 WXUISIM_TEST( ColumnDrag
);
51 CPPUNIT_TEST_SUITE_END();
53 #if wxUSE_UIACTIONSIMULATOR
54 // Column events are only supported in wxListCtrl currently so we test them
55 // here rather than in ListBaseTest
58 #endif // wxUSE_UIACTIONSIMULATOR
62 DECLARE_NO_COPY_CLASS(ListCtrlTestCase
)
65 // register in the unnamed registry so that these tests are run by default
66 CPPUNIT_TEST_SUITE_REGISTRATION( ListCtrlTestCase
);
68 // also include in it's own registry so that these tests can be run alone
69 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ListCtrlTestCase
, "ListCtrlTestCase" );
71 // ----------------------------------------------------------------------------
72 // test initialization
73 // ----------------------------------------------------------------------------
75 void ListCtrlTestCase::setUp()
77 m_list
= new wxListCtrl(wxTheApp
->GetTopWindow());
78 m_list
->SetWindowStyle(wxLC_REPORT
);
79 m_list
->SetSize(400, 200);
82 void ListCtrlTestCase::tearDown()
88 #if wxUSE_UIACTIONSIMULATOR
89 void ListCtrlTestCase::ColumnDrag()
91 wxTestableFrame
* frame
= wxStaticCast(wxTheApp
->GetTopWindow(),
94 EventCounter
count(m_list
, wxEVT_COMMAND_LIST_COL_BEGIN_DRAG
);
95 EventCounter
count1(m_list
, wxEVT_COMMAND_LIST_COL_DRAGGING
);
96 EventCounter
count2(m_list
, wxEVT_COMMAND_LIST_COL_END_DRAG
);
98 m_list
->InsertColumn(0, "Column 0");
99 m_list
->InsertColumn(1, "Column 1");
100 m_list
->InsertColumn(2, "Column 2");
104 wxUIActionSimulator sim
;
106 wxPoint pt
= m_list
->ClientToScreen(wxPoint(m_list
->GetColumnWidth(0), 5));
114 sim
.MouseMove(pt
.x
+ 50, pt
.y
);
120 CPPUNIT_ASSERT_EQUAL(1, frame
->GetEventCount(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG
));
121 CPPUNIT_ASSERT(frame
->GetEventCount(wxEVT_COMMAND_LIST_COL_DRAGGING
) > 0);
122 CPPUNIT_ASSERT_EQUAL(1, frame
->GetEventCount(wxEVT_COMMAND_LIST_COL_END_DRAG
));
127 void ListCtrlTestCase::ColumnClick()
129 wxTestableFrame
* frame
= wxStaticCast(wxTheApp
->GetTopWindow(),
132 EventCounter
count(m_list
, wxEVT_COMMAND_LIST_COL_CLICK
);
133 EventCounter
count1(m_list
, wxEVT_COMMAND_LIST_COL_RIGHT_CLICK
);
136 m_list
->InsertColumn(0, "Column 0", wxLIST_FORMAT_LEFT
, 60);
138 wxUIActionSimulator sim
;
140 sim
.MouseMove(m_list
->ClientToScreen(wxPoint(4, 4)));
144 sim
.MouseClick(wxMOUSE_BTN_RIGHT
);
147 CPPUNIT_ASSERT_EQUAL(1, frame
->GetEventCount(wxEVT_COMMAND_LIST_COL_CLICK
));
148 CPPUNIT_ASSERT_EQUAL(1, frame
->GetEventCount(wxEVT_COMMAND_LIST_COL_RIGHT_CLICK
));
152 #endif // wxUSE_UIACTIONSIMULATOR
154 #endif // wxUSE_LISTCTRL