bookctrlbasetest.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: tests/controls/bookctrlbasetest.cpp
  3. // Purpose: wxBookCtrlBase unit test
  4. // Author: Steven Lamerton
  5. // Created: 2010-07-02
  6. // Copyright: (c) 2010 Steven Lamerton
  7. ///////////////////////////////////////////////////////////////////////////////
  8. #include "testprec.h"
  9. #ifndef WX_PRECOMP
  10. #include "wx/app.h"
  11. #include "wx/panel.h"
  12. #endif // WX_PRECOMP
  13. #include "wx/artprov.h"
  14. #include "wx/imaglist.h"
  15. #include "wx/bookctrl.h"
  16. #include "bookctrlbasetest.h"
  17. #include "testableframe.h"
  18. void BookCtrlBaseTestCase::AddPanels()
  19. {
  20. wxBookCtrlBase * const base = GetBase();
  21. wxSize size(32, 32);
  22. m_list = new wxImageList(size.x, size.y);
  23. m_list->Add(wxArtProvider::GetIcon(wxART_INFORMATION, wxART_OTHER, size));
  24. m_list->Add(wxArtProvider::GetIcon(wxART_QUESTION, wxART_OTHER, size));
  25. m_list->Add(wxArtProvider::GetIcon(wxART_WARNING, wxART_OTHER, size));
  26. base->AssignImageList(m_list);
  27. Realize();
  28. m_panel1 = new wxPanel(base);
  29. m_panel2 = new wxPanel(base);
  30. m_panel3 = new wxPanel(base);
  31. base->AddPage(m_panel1, "Panel 1", false, 0);
  32. base->AddPage(m_panel2, "Panel 2", false, 1);
  33. base->AddPage(m_panel3, "Panel 3", false, 2);
  34. }
  35. void BookCtrlBaseTestCase::Selection()
  36. {
  37. wxBookCtrlBase * const base = GetBase();
  38. base->SetSelection(0);
  39. CPPUNIT_ASSERT_EQUAL(0, base->GetSelection());
  40. CPPUNIT_ASSERT_EQUAL(wxStaticCast(m_panel1, wxWindow), base->GetCurrentPage());
  41. base->AdvanceSelection(false);
  42. CPPUNIT_ASSERT_EQUAL(2, base->GetSelection());
  43. CPPUNIT_ASSERT_EQUAL(wxStaticCast(m_panel3, wxWindow), base->GetCurrentPage());
  44. base->AdvanceSelection();
  45. CPPUNIT_ASSERT_EQUAL(0, base->GetSelection());
  46. CPPUNIT_ASSERT_EQUAL(wxStaticCast(m_panel1, wxWindow), base->GetCurrentPage());
  47. base->ChangeSelection(1);
  48. CPPUNIT_ASSERT_EQUAL(1, base->GetSelection());
  49. CPPUNIT_ASSERT_EQUAL(wxStaticCast(m_panel2, wxWindow), base->GetCurrentPage());
  50. }
  51. void BookCtrlBaseTestCase::Text()
  52. {
  53. wxBookCtrlBase * const base = GetBase();
  54. CPPUNIT_ASSERT_EQUAL("Panel 1", base->GetPageText(0));
  55. base->SetPageText(1, "Some other string");
  56. CPPUNIT_ASSERT_EQUAL("Some other string", base->GetPageText(1));
  57. base->SetPageText(2, "string with /nline break");
  58. CPPUNIT_ASSERT_EQUAL("string with /nline break", base->GetPageText(2));
  59. }
  60. void BookCtrlBaseTestCase::PageManagement()
  61. {
  62. wxBookCtrlBase * const base = GetBase();
  63. base->InsertPage(0, new wxPanel(base), "New Panel", true, 0);
  64. Realize();
  65. CPPUNIT_ASSERT_EQUAL(0, base->GetSelection());
  66. CPPUNIT_ASSERT_EQUAL(4, base->GetPageCount());
  67. // Change the selection to verify that deleting a page before the currently
  68. // selected one correctly updates the selection.
  69. base->SetSelection(2);
  70. CPPUNIT_ASSERT_EQUAL(2, base->GetSelection());
  71. base->DeletePage(1);
  72. CPPUNIT_ASSERT_EQUAL(3, base->GetPageCount());
  73. CPPUNIT_ASSERT_EQUAL(1, base->GetSelection());
  74. base->RemovePage(0);
  75. CPPUNIT_ASSERT_EQUAL(2, base->GetPageCount());
  76. CPPUNIT_ASSERT_EQUAL(0, base->GetSelection());
  77. base->DeleteAllPages();
  78. CPPUNIT_ASSERT_EQUAL(0, base->GetPageCount());
  79. CPPUNIT_ASSERT_EQUAL(-1, base->GetSelection());
  80. }
  81. void BookCtrlBaseTestCase::ChangeEvents()
  82. {
  83. wxBookCtrlBase * const base = GetBase();
  84. base->SetSelection(0);
  85. EventCounter changing(base, GetChangingEvent());
  86. EventCounter changed(base, GetChangedEvent());
  87. base->SetSelection(1);
  88. CPPUNIT_ASSERT_EQUAL(1, changing.GetCount());
  89. CPPUNIT_ASSERT_EQUAL(1, changed.GetCount());
  90. changed.Clear();
  91. changing.Clear();
  92. base->ChangeSelection(2);
  93. CPPUNIT_ASSERT_EQUAL(0, changing.GetCount());
  94. CPPUNIT_ASSERT_EQUAL(0, changed.GetCount());
  95. base->AdvanceSelection();
  96. CPPUNIT_ASSERT_EQUAL(1, changing.GetCount());
  97. CPPUNIT_ASSERT_EQUAL(1, changed.GetCount());
  98. changed.Clear();
  99. changing.Clear();
  100. base->AdvanceSelection(false);
  101. CPPUNIT_ASSERT_EQUAL(1, changing.GetCount());
  102. CPPUNIT_ASSERT_EQUAL(1, changed.GetCount());
  103. }
  104. void BookCtrlBaseTestCase::Image()
  105. {
  106. wxBookCtrlBase * const base = GetBase();
  107. //Check AddPanels() set things correctly
  108. CPPUNIT_ASSERT_EQUAL(m_list, base->GetImageList());
  109. CPPUNIT_ASSERT_EQUAL(0, base->GetPageImage(0));
  110. CPPUNIT_ASSERT_EQUAL(1, base->GetPageImage(1));
  111. CPPUNIT_ASSERT_EQUAL(2, base->GetPageImage(2));
  112. base->SetPageImage(0, 2);
  113. CPPUNIT_ASSERT_EQUAL(2, base->GetPageImage(2));
  114. }