listctrltest.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: tests/controls/listctrltest.cpp
  3. // Purpose: wxListCtrl unit test
  4. // Author: Vadim Zeitlin
  5. // Created: 2008-11-26
  6. // Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
  7. // (c) 2010 Steven Lamerton
  8. ///////////////////////////////////////////////////////////////////////////////
  9. // ----------------------------------------------------------------------------
  10. // headers
  11. // ----------------------------------------------------------------------------
  12. #include "testprec.h"
  13. #if wxUSE_LISTCTRL
  14. #ifdef __BORLANDC__
  15. #pragma hdrstop
  16. #endif
  17. #ifndef WX_PRECOMP
  18. #include "wx/app.h"
  19. #endif // WX_PRECOMP
  20. #include "wx/listctrl.h"
  21. #include "listbasetest.h"
  22. #include "testableframe.h"
  23. #include "wx/uiaction.h"
  24. // ----------------------------------------------------------------------------
  25. // test class
  26. // ----------------------------------------------------------------------------
  27. class ListCtrlTestCase : public ListBaseTestCase, public CppUnit::TestCase
  28. {
  29. public:
  30. ListCtrlTestCase() { }
  31. virtual void setUp();
  32. virtual void tearDown();
  33. virtual wxListCtrl *GetList() const { return m_list; }
  34. private:
  35. CPPUNIT_TEST_SUITE( ListCtrlTestCase );
  36. wxLIST_BASE_TESTS();
  37. CPPUNIT_TEST( EditLabel );
  38. WXUISIM_TEST( ColumnClick );
  39. WXUISIM_TEST( ColumnDrag );
  40. CPPUNIT_TEST_SUITE_END();
  41. void EditLabel();
  42. #if wxUSE_UIACTIONSIMULATOR
  43. // Column events are only supported in wxListCtrl currently so we test them
  44. // here rather than in ListBaseTest
  45. void ColumnClick();
  46. void ColumnDrag();
  47. #endif // wxUSE_UIACTIONSIMULATOR
  48. wxListCtrl *m_list;
  49. DECLARE_NO_COPY_CLASS(ListCtrlTestCase)
  50. };
  51. // register in the unnamed registry so that these tests are run by default
  52. CPPUNIT_TEST_SUITE_REGISTRATION( ListCtrlTestCase );
  53. // also include in its own registry so that these tests can be run alone
  54. CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ListCtrlTestCase, "ListCtrlTestCase" );
  55. // ----------------------------------------------------------------------------
  56. // test initialization
  57. // ----------------------------------------------------------------------------
  58. void ListCtrlTestCase::setUp()
  59. {
  60. m_list = new wxListCtrl(wxTheApp->GetTopWindow());
  61. m_list->SetWindowStyle(wxLC_REPORT);
  62. m_list->SetSize(400, 200);
  63. }
  64. void ListCtrlTestCase::tearDown()
  65. {
  66. delete m_list;
  67. m_list = NULL;
  68. }
  69. void ListCtrlTestCase::EditLabel()
  70. {
  71. m_list->InsertColumn(0, "Column 0");
  72. m_list->InsertItem(0, "foo");
  73. m_list->EditLabel(0);
  74. }
  75. #if wxUSE_UIACTIONSIMULATOR
  76. void ListCtrlTestCase::ColumnDrag()
  77. {
  78. EventCounter begindrag(m_list, wxEVT_LIST_COL_BEGIN_DRAG);
  79. EventCounter dragging(m_list, wxEVT_LIST_COL_DRAGGING);
  80. EventCounter enddrag(m_list, wxEVT_LIST_COL_END_DRAG);
  81. m_list->InsertColumn(0, "Column 0");
  82. m_list->InsertColumn(1, "Column 1");
  83. m_list->InsertColumn(2, "Column 2");
  84. m_list->Update();
  85. m_list->SetFocus();
  86. wxUIActionSimulator sim;
  87. wxPoint pt = m_list->ClientToScreen(wxPoint(m_list->GetColumnWidth(0), 5));
  88. sim.MouseMove(pt);
  89. wxYield();
  90. sim.MouseDown();
  91. wxYield();
  92. sim.MouseMove(pt.x + 50, pt.y);
  93. wxYield();
  94. sim.MouseUp();
  95. wxYield();
  96. CPPUNIT_ASSERT_EQUAL(1, begindrag.GetCount());
  97. CPPUNIT_ASSERT(dragging.GetCount() > 0);
  98. CPPUNIT_ASSERT_EQUAL(1, enddrag.GetCount());
  99. m_list->ClearAll();
  100. }
  101. void ListCtrlTestCase::ColumnClick()
  102. {
  103. EventCounter colclick(m_list, wxEVT_LIST_COL_CLICK);
  104. EventCounter colrclick(m_list, wxEVT_LIST_COL_RIGHT_CLICK);
  105. m_list->InsertColumn(0, "Column 0", wxLIST_FORMAT_LEFT, 60);
  106. wxUIActionSimulator sim;
  107. sim.MouseMove(m_list->ClientToScreen(wxPoint(4, 4)));
  108. wxYield();
  109. sim.MouseClick();
  110. sim.MouseClick(wxMOUSE_BTN_RIGHT);
  111. wxYield();
  112. CPPUNIT_ASSERT_EQUAL(1, colclick.GetCount());
  113. CPPUNIT_ASSERT_EQUAL(1, colrclick.GetCount());
  114. m_list->ClearAll();
  115. }
  116. #endif // wxUSE_UIACTIONSIMULATOR
  117. #endif // wxUSE_LISTCTRL