selstoretest.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: tests/misc/selstoretest.cpp
  3. // Purpose: wxSelectionStore unit test
  4. // Author: Vadim Zeitlin
  5. // Created: 2008-03-31
  6. // Copyright: (c) 2008 Vadim Zeitlin
  7. ///////////////////////////////////////////////////////////////////////////////
  8. // ----------------------------------------------------------------------------
  9. // headers
  10. // ----------------------------------------------------------------------------
  11. #include "testprec.h"
  12. #ifdef __BORLANDC__
  13. #pragma hdrstop
  14. #endif
  15. #include "wx/selstore.h"
  16. // ----------------------------------------------------------------------------
  17. // test class
  18. // ----------------------------------------------------------------------------
  19. class SelStoreTestCase : public CppUnit::TestCase
  20. {
  21. public:
  22. SelStoreTestCase() { m_store = NULL; }
  23. virtual void setUp()
  24. {
  25. m_store = new wxSelectionStore;
  26. m_store->SetItemCount(NUM_ITEMS);
  27. }
  28. virtual void tearDown()
  29. {
  30. delete m_store;
  31. m_store = NULL;
  32. }
  33. private:
  34. CPPUNIT_TEST_SUITE( SelStoreTestCase );
  35. CPPUNIT_TEST( SelectItem );
  36. CPPUNIT_TEST( SelectRange );
  37. CPPUNIT_TEST( SetItemCount );
  38. CPPUNIT_TEST( Clear );
  39. CPPUNIT_TEST_SUITE_END();
  40. void SelectItem();
  41. void SelectRange();
  42. void SetItemCount();
  43. void Clear();
  44. // NB: must be even
  45. static const unsigned NUM_ITEMS;
  46. wxSelectionStore *m_store;
  47. DECLARE_NO_COPY_CLASS(SelStoreTestCase)
  48. };
  49. // register in the unnamed registry so that these tests are run by default
  50. CPPUNIT_TEST_SUITE_REGISTRATION( SelStoreTestCase );
  51. // also include in its own registry so that these tests can be run alone
  52. CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( SelStoreTestCase, "SelStoreTestCase" );
  53. const unsigned SelStoreTestCase::NUM_ITEMS = 10; // NB: must be even
  54. void SelStoreTestCase::SelectItem()
  55. {
  56. m_store->SelectItem(0);
  57. CPPUNIT_ASSERT_EQUAL( 1u, m_store->GetSelectedCount() );
  58. CPPUNIT_ASSERT( m_store->IsSelected(0) );
  59. m_store->SelectItem(NUM_ITEMS - 1);
  60. CPPUNIT_ASSERT_EQUAL( 2u, m_store->GetSelectedCount() );
  61. CPPUNIT_ASSERT( m_store->IsSelected(NUM_ITEMS - 1) );
  62. m_store->SelectItem(0, false);
  63. CPPUNIT_ASSERT_EQUAL( 1u, m_store->GetSelectedCount() );
  64. CPPUNIT_ASSERT( !m_store->IsSelected(0) );
  65. }
  66. void SelStoreTestCase::SelectRange()
  67. {
  68. m_store->SelectRange(0, NUM_ITEMS/2);
  69. CPPUNIT_ASSERT_EQUAL( NUM_ITEMS/2 + 1, m_store->GetSelectedCount() );
  70. CPPUNIT_ASSERT( m_store->IsSelected(0) );
  71. CPPUNIT_ASSERT( !m_store->IsSelected(NUM_ITEMS - 1) );
  72. m_store->SelectRange(NUM_ITEMS/2, NUM_ITEMS - 1);
  73. CPPUNIT_ASSERT_EQUAL( NUM_ITEMS, m_store->GetSelectedCount() );
  74. CPPUNIT_ASSERT( m_store->IsSelected(0) );
  75. CPPUNIT_ASSERT( m_store->IsSelected(NUM_ITEMS - 1) );
  76. m_store->SelectRange(1, NUM_ITEMS - 2, false);
  77. CPPUNIT_ASSERT_EQUAL( 2u, m_store->GetSelectedCount() );
  78. CPPUNIT_ASSERT( m_store->IsSelected(0) );
  79. CPPUNIT_ASSERT( !m_store->IsSelected(NUM_ITEMS/2) );
  80. CPPUNIT_ASSERT( m_store->IsSelected(NUM_ITEMS - 1) );
  81. }
  82. void SelStoreTestCase::SetItemCount()
  83. {
  84. m_store->SelectRange(1, NUM_ITEMS - 2);
  85. CPPUNIT_ASSERT_EQUAL( NUM_ITEMS - 2, m_store->GetSelectedCount() );
  86. m_store->SetItemCount(NUM_ITEMS/2);
  87. CPPUNIT_ASSERT_EQUAL( NUM_ITEMS/2 - 1, m_store->GetSelectedCount() );
  88. m_store->Clear();
  89. m_store->SetItemCount(NUM_ITEMS);
  90. m_store->SelectItem(NUM_ITEMS/2 - 1);
  91. m_store->SelectItem(NUM_ITEMS/2 + 1);
  92. m_store->SetItemCount(NUM_ITEMS/2);
  93. CPPUNIT_ASSERT_EQUAL( 1u, m_store->GetSelectedCount() );
  94. }
  95. void SelStoreTestCase::Clear()
  96. {
  97. CPPUNIT_ASSERT_EQUAL( 0u, m_store->GetSelectedCount() );
  98. m_store->SelectItem(0);
  99. m_store->Clear();
  100. CPPUNIT_ASSERT_EQUAL( 0u, m_store->GetSelectedCount() );
  101. }