]> git.saurik.com Git - wxWidgets.git/blame - tests/controls/bookctrlbasetest.cpp
adding a app-defined event seems to quit inner eventloops like eg the popup of the...
[wxWidgets.git] / tests / controls / bookctrlbasetest.cpp
CommitLineData
232fdc63
VZ
1///////////////////////////////////////////////////////////////////////////////
2// Name: tests/controls/bookctrlbasetest.cpp
3// Purpose: wxBookCtrlBase unit test
4// Author: Steven Lamerton
5// Created: 2010-07-02
6// RCS-ID: $Id$
7// Copyright: (c) 2010 Steven Lamerton
8///////////////////////////////////////////////////////////////////////////////
9
10#include "testprec.h"
11
12#ifndef WX_PRECOMP
13 #include "wx/app.h"
14 #include "wx/panel.h"
15#endif // WX_PRECOMP
16
17#include "wx/artprov.h"
18#include "wx/imaglist.h"
19#include "wx/bookctrl.h"
20#include "wx/toolbook.h"
21#include "wx/toolbar.h"
22#include "bookctrlbasetest.h"
23#include "testableframe.h"
24
25void BookCtrlBaseTestCase::AddPanels()
26{
27 wxBookCtrlBase * const base = GetBase();
28
29 wxSize size(32, 32);
30
31 m_list = new wxImageList(size.x, size.y);
32 m_list->Add(wxArtProvider::GetIcon(wxART_INFORMATION, wxART_OTHER, size));
33 m_list->Add(wxArtProvider::GetIcon(wxART_QUESTION, wxART_OTHER, size));
34 m_list->Add(wxArtProvider::GetIcon(wxART_WARNING, wxART_OTHER, size));
35
36 base->AssignImageList(m_list);
37
38 //We need to realize the toolbar if we ware running the wxToolbook tests
39 wxToolbook *book = wxDynamicCast(base, wxToolbook);
40
41 if(book)
42 book->GetToolBar()->Realize();
43
44 m_panel1 = new wxPanel(base);
45 m_panel2 = new wxPanel(base);
46 m_panel3 = new wxPanel(base);
47
48 base->AddPage(m_panel1, "Panel 1", false, 0);
49 base->AddPage(m_panel2, "Panel 2", false, 1);
50 base->AddPage(m_panel3, "Panel 3", false, 2);
51}
52
53void BookCtrlBaseTestCase::Selection()
54{
55 wxBookCtrlBase * const base = GetBase();
56
57 base->SetSelection(0);
58
59 CPPUNIT_ASSERT_EQUAL(0, base->GetSelection());
60 CPPUNIT_ASSERT_EQUAL(wxStaticCast(m_panel1, wxWindow), base->GetCurrentPage());
61
62 base->AdvanceSelection(false);
63
64 CPPUNIT_ASSERT_EQUAL(2, base->GetSelection());
65 CPPUNIT_ASSERT_EQUAL(wxStaticCast(m_panel3, wxWindow), base->GetCurrentPage());
66
67 base->AdvanceSelection();
68
69 CPPUNIT_ASSERT_EQUAL(0, base->GetSelection());
70 CPPUNIT_ASSERT_EQUAL(wxStaticCast(m_panel1, wxWindow), base->GetCurrentPage());
71
72 base->ChangeSelection(1);
73
74 CPPUNIT_ASSERT_EQUAL(1, base->GetSelection());
75 CPPUNIT_ASSERT_EQUAL(wxStaticCast(m_panel2, wxWindow), base->GetCurrentPage());
76}
77
78void BookCtrlBaseTestCase::Text()
79{
80 wxBookCtrlBase * const base = GetBase();
81
82 CPPUNIT_ASSERT_EQUAL("Panel 1", base->GetPageText(0));
83
84 base->SetPageText(1, "Some other string");
85
86 CPPUNIT_ASSERT_EQUAL("Some other string", base->GetPageText(1));
87
88 base->SetPageText(2, "string with /nline break");
89
90 CPPUNIT_ASSERT_EQUAL("string with /nline break", base->GetPageText(2));
91}
92
93void BookCtrlBaseTestCase::PageManagement()
94{
95 wxBookCtrlBase * const base = GetBase();
96
97 base->InsertPage(0, new wxPanel(base), "New Panel", true, 0);
98
99 //We need to realize the toolbar if we ware running the wxToolbook tests
100 wxToolbook *book = wxDynamicCast(base, wxToolbook);
101
102 if(book)
103 book->GetToolBar()->Realize();
104
105 CPPUNIT_ASSERT_EQUAL(0, base->GetSelection());
106 CPPUNIT_ASSERT_EQUAL(4, base->GetPageCount());
107
108 base->DeletePage(1);
109
110 CPPUNIT_ASSERT_EQUAL(3, base->GetPageCount());
111
112 base->RemovePage(0);
113
114 CPPUNIT_ASSERT_EQUAL(2, base->GetPageCount());
115
116 base->DeleteAllPages();
117
118 CPPUNIT_ASSERT_EQUAL(0, base->GetPageCount());
119
120 AddPanels();
121}
122
123void BookCtrlBaseTestCase::ChangeEvents()
124{
125 wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(),
126 wxTestableFrame);
127
128 wxBookCtrlBase * const base = GetBase();
129
130 base->SetSelection(0);
131
132 EventCounter count(base, GetChangingEvent());
133 EventCounter count1(base, GetChangedEvent());
134
135 base->SetSelection(1);
136
137 CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(GetChangingEvent()));
138 CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(GetChangedEvent()));
139
140 base->ChangeSelection(2);
141
142 CPPUNIT_ASSERT_EQUAL(0, frame->GetEventCount(GetChangingEvent()));
143 CPPUNIT_ASSERT_EQUAL(0, frame->GetEventCount(GetChangedEvent()));
144
145 base->AdvanceSelection();
146
147 CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(GetChangingEvent()));
148 CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(GetChangedEvent()));
149
150 base->AdvanceSelection(false);
151
152 CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(GetChangingEvent()));
153 CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount(GetChangedEvent()));
154}
155
156void BookCtrlBaseTestCase::Image()
157{
158 wxBookCtrlBase * const base = GetBase();
159
160 //Check AddPanels() set things correctly
161 CPPUNIT_ASSERT_EQUAL(m_list, base->GetImageList());
162 CPPUNIT_ASSERT_EQUAL(0, base->GetPageImage(0));
163 CPPUNIT_ASSERT_EQUAL(1, base->GetPageImage(1));
164 CPPUNIT_ASSERT_EQUAL(2, base->GetPageImage(2));
165
166 base->SetPageImage(0, 2);
167
168 CPPUNIT_ASSERT_EQUAL(2, base->GetPageImage(2));
169}