]> git.saurik.com Git - wxWidgets.git/blame - tests/controls/treectrltest.cpp
proper default for iphone
[wxWidgets.git] / tests / controls / treectrltest.cpp
CommitLineData
fa97ee24
VZ
1///////////////////////////////////////////////////////////////////////////////
2// Name: tests/controls/treectrltest.cpp
3// Purpose: wxTreeCtrl unit test
4// Author: Vadim Zeitlin
5// Created: 2008-11-26
fa97ee24 6// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
232fdc63 7// (c) 2010 Steven Lamerton
fa97ee24
VZ
8///////////////////////////////////////////////////////////////////////////////
9
10// ----------------------------------------------------------------------------
11// headers
12// ----------------------------------------------------------------------------
13
14#include "testprec.h"
15
232fdc63
VZ
16#if wxUSE_TREECTRL
17
fa97ee24
VZ
18#ifdef __BORLANDC__
19 #pragma hdrstop
20#endif
21
22#ifndef WX_PRECOMP
23 #include "wx/app.h"
24#endif // WX_PRECOMP
25
232fdc63
VZ
26#include "wx/artprov.h"
27#include "wx/imaglist.h"
fa97ee24 28#include "wx/treectrl.h"
232fdc63
VZ
29#include "wx/uiaction.h"
30#include "testableframe.h"
fa97ee24
VZ
31
32// ----------------------------------------------------------------------------
33// test class
34// ----------------------------------------------------------------------------
35
36class TreeCtrlTestCase : public CppUnit::TestCase
37{
38public:
39 TreeCtrlTestCase() { }
40
41 virtual void setUp();
42 virtual void tearDown();
43
44private:
45 CPPUNIT_TEST_SUITE( TreeCtrlTestCase );
232fdc63
VZ
46 WXUISIM_TEST( ItemClick );
47 CPPUNIT_TEST( DeleteItem );
48 WXUISIM_TEST( LabelEdit );
49 WXUISIM_TEST( KeyDown );
50#ifndef __WXGTK__
51 WXUISIM_TEST( CollapseExpandEvents );
52 WXUISIM_TEST( SelectionChange );
53#endif // !__WXGTK__
54 WXUISIM_TEST( Menu );
55 CPPUNIT_TEST( ItemData );
56 CPPUNIT_TEST( Iteration );
57 CPPUNIT_TEST( Parent );
58 CPPUNIT_TEST( CollapseExpand );
59 CPPUNIT_TEST( AssignImageList );
60 CPPUNIT_TEST( Focus );
61 CPPUNIT_TEST( Bold );
62 CPPUNIT_TEST( Visible );
63 CPPUNIT_TEST( Sort );
64 WXUISIM_TEST( KeyNavigation );
fa97ee24 65 CPPUNIT_TEST( HasChildren );
756c98b0
VZ
66 CPPUNIT_TEST( SelectItemSingle );
67 CPPUNIT_TEST( PseudoTest_MultiSelect );
68 CPPUNIT_TEST( SelectItemMulti );
fa97ee24
VZ
69 CPPUNIT_TEST( PseudoTest_SetHiddenRoot );
70 CPPUNIT_TEST( HasChildren );
71 CPPUNIT_TEST_SUITE_END();
72
232fdc63
VZ
73 void ItemClick();
74 void DeleteItem();
75 void LabelEdit();
76 void KeyDown();
77#ifndef __WXGTK__
78 void CollapseExpandEvents();
79 void SelectionChange();
80#endif // !__WXGTK__
81 void Menu();
82 void ItemData();
83 void Iteration();
84 void Parent();
85 void CollapseExpand();
86 void AssignImageList();
87 void Focus();
88 void Bold();
89 void Visible();
90 void Sort();
91 void KeyNavigation();
fa97ee24 92 void HasChildren();
756c98b0
VZ
93 void SelectItemSingle();
94 void SelectItemMulti();
95 void PseudoTest_MultiSelect() { ms_multiSelect = true; }
fa97ee24
VZ
96 void PseudoTest_SetHiddenRoot() { ms_hiddenRoot = true; }
97
756c98b0 98 static bool ms_multiSelect;
fa97ee24
VZ
99 static bool ms_hiddenRoot;
100
756c98b0 101 // the tree control itself
fa97ee24
VZ
102 wxTreeCtrl *m_tree;
103
756c98b0
VZ
104 // and some of its items
105 wxTreeItemId m_root,
106 m_child1,
107 m_child2,
108 m_grandchild;
109
fa97ee24
VZ
110 DECLARE_NO_COPY_CLASS(TreeCtrlTestCase)
111};
112
113// register in the unnamed registry so that these tests are run by default
114CPPUNIT_TEST_SUITE_REGISTRATION( TreeCtrlTestCase );
115
e3778b4d 116// also include in its own registry so that these tests can be run alone
fa97ee24
VZ
117CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TreeCtrlTestCase, "TreeCtrlTestCase" );
118
119// ----------------------------------------------------------------------------
120// test initialization
121// ----------------------------------------------------------------------------
122
756c98b0 123bool TreeCtrlTestCase::ms_multiSelect = false;
fa97ee24
VZ
124bool TreeCtrlTestCase::ms_hiddenRoot = false;
125
126void TreeCtrlTestCase::setUp()
127{
232fdc63
VZ
128 m_tree = new wxTreeCtrl(wxTheApp->GetTopWindow(),
129 wxID_ANY,
130 wxDefaultPosition,
131 wxSize(400, 200),
132 wxTR_DEFAULT_STYLE | wxTR_EDIT_LABELS);
756c98b0
VZ
133
134 if ( ms_multiSelect )
135 m_tree->ToggleWindowStyle(wxTR_MULTIPLE);
136
fa97ee24
VZ
137 if ( ms_hiddenRoot )
138 m_tree->ToggleWindowStyle(wxTR_HIDE_ROOT); // actually set it
756c98b0
VZ
139
140 m_root = m_tree->AddRoot("root");
141 m_child1 = m_tree->AppendItem(m_root, "child1");
142 m_child2 = m_tree->AppendItem(m_root, "child2");
143 m_grandchild = m_tree->AppendItem(m_child1, "grandchild");
232fdc63
VZ
144
145 m_tree->SetSize(400, 200);
146 m_tree->ExpandAll();
147 m_tree->Refresh();
148 m_tree->Update();
fa97ee24
VZ
149}
150
151void TreeCtrlTestCase::tearDown()
152{
153 delete m_tree;
154 m_tree = NULL;
756c98b0
VZ
155
156 m_root =
157 m_child1 =
158 m_child2 =
159 m_grandchild = wxTreeItemId();
fa97ee24
VZ
160}
161
162// ----------------------------------------------------------------------------
163// the tests themselves
164// ----------------------------------------------------------------------------
165
166void TreeCtrlTestCase::HasChildren()
167{
756c98b0
VZ
168 CPPUNIT_ASSERT( m_tree->HasChildren(m_root) );
169 CPPUNIT_ASSERT( m_tree->HasChildren(m_child1) );
170 CPPUNIT_ASSERT( !m_tree->HasChildren(m_child2) );
171 CPPUNIT_ASSERT( !m_tree->HasChildren(m_grandchild) );
172}
173
174void TreeCtrlTestCase::SelectItemSingle()
175{
176 // this test should be only ran in single-selection control
177 CPPUNIT_ASSERT( !m_tree->HasFlag(wxTR_MULTIPLE) );
178
179 // initially nothing is selected
180 CPPUNIT_ASSERT( !m_tree->IsSelected(m_child1) );
181
182 // selecting an item should make it selected
183 m_tree->SelectItem(m_child1);
184 CPPUNIT_ASSERT( m_tree->IsSelected(m_child1) );
185
186 // selecting it again shouldn't change anything
187 m_tree->SelectItem(m_child1);
188 CPPUNIT_ASSERT( m_tree->IsSelected(m_child1) );
189
190 // selecting another item should switch the selection to it
191 m_tree->SelectItem(m_child2);
192 CPPUNIT_ASSERT( !m_tree->IsSelected(m_child1) );
193 CPPUNIT_ASSERT( m_tree->IsSelected(m_child2) );
194
195 // selecting it again still shouldn't change anything
196 m_tree->SelectItem(m_child2);
197 CPPUNIT_ASSERT( !m_tree->IsSelected(m_child1) );
198 CPPUNIT_ASSERT( m_tree->IsSelected(m_child2) );
199
200 // deselecting an item should remove the selection entirely
201 m_tree->UnselectItem(m_child2);
202 CPPUNIT_ASSERT( !m_tree->IsSelected(m_child1) );
203 CPPUNIT_ASSERT( !m_tree->IsSelected(m_child2) );
204}
205
206void TreeCtrlTestCase::SelectItemMulti()
207{
208 // this test should be only ran in multi-selection control
209 CPPUNIT_ASSERT( m_tree->HasFlag(wxTR_MULTIPLE) );
210
211 // initially nothing is selected
212 CPPUNIT_ASSERT( !m_tree->IsSelected(m_child1) );
213
214 // selecting an item should make it selected
215 m_tree->SelectItem(m_child1);
216 CPPUNIT_ASSERT( m_tree->IsSelected(m_child1) );
217
218 // selecting it again shouldn't change anything
219 m_tree->SelectItem(m_child1);
220 CPPUNIT_ASSERT( m_tree->IsSelected(m_child1) );
221
222 // selecting another item shouldn't deselect the previously selected one
223 m_tree->SelectItem(m_child2);
224 CPPUNIT_ASSERT( m_tree->IsSelected(m_child1) );
225 CPPUNIT_ASSERT( m_tree->IsSelected(m_child2) );
226
227 // selecting it again still shouldn't change anything
228 m_tree->SelectItem(m_child2);
229 CPPUNIT_ASSERT( m_tree->IsSelected(m_child1) );
230 CPPUNIT_ASSERT( m_tree->IsSelected(m_child2) );
231
232 // deselecting one of the items should leave the others selected
233 m_tree->UnselectItem(m_child1);
234 CPPUNIT_ASSERT( !m_tree->IsSelected(m_child1) );
235 CPPUNIT_ASSERT( m_tree->IsSelected(m_child2) );
fa97ee24
VZ
236}
237
232fdc63
VZ
238void TreeCtrlTestCase::ItemClick()
239{
240#if wxUSE_UIACTIONSIMULATOR
ce7fe42e
VZ
241 EventCounter activated(m_tree, wxEVT_TREE_ITEM_ACTIVATED);
242 EventCounter rclick(m_tree, wxEVT_TREE_ITEM_RIGHT_CLICK);
232fdc63
VZ
243
244 wxUIActionSimulator sim;
245
246 wxRect pos;
247 m_tree->GetBoundingRect(m_child1, pos, true);
248
249 // We move in slightly so we are not on the edge
250 wxPoint point = m_tree->ClientToScreen(pos.GetPosition()) + wxPoint(4, 4);
251
252 sim.MouseMove(point);
253 wxYield();
254
255 sim.MouseDblClick();
256 wxYield();
257
258 sim.MouseClick(wxMOUSE_BTN_RIGHT);
259 wxYield();
260
744d91d4
SL
261 CPPUNIT_ASSERT_EQUAL(1, activated.GetCount());
262 CPPUNIT_ASSERT_EQUAL(1, rclick.GetCount());
232fdc63
VZ
263#endif // wxUSE_UIACTIONSIMULATOR
264}
265
266void TreeCtrlTestCase::DeleteItem()
267{
ce7fe42e 268 EventCounter deleteitem(m_tree, wxEVT_TREE_DELETE_ITEM);
232fdc63
VZ
269
270 wxTreeItemId todelete = m_tree->AppendItem(m_root, "deleteme");
271 m_tree->Delete(todelete);
272 // We do not test DeleteAllItems() as under some versions of Windows events
273 // are not generated.
274
744d91d4 275 CPPUNIT_ASSERT_EQUAL(1, deleteitem.GetCount());
232fdc63
VZ
276}
277
278#if wxUSE_UIACTIONSIMULATOR
279
280void TreeCtrlTestCase::LabelEdit()
281{
ce7fe42e
VZ
282 EventCounter beginedit(m_tree, wxEVT_TREE_BEGIN_LABEL_EDIT);
283 EventCounter endedit(m_tree, wxEVT_TREE_END_LABEL_EDIT);
232fdc63
VZ
284
285 wxUIActionSimulator sim;
286
287 m_tree->SetFocusedItem(m_tree->GetRootItem());
288 m_tree->EditLabel(m_tree->GetRootItem());
289
290 sim.Text("newroottext");
291 wxYield();
292
744d91d4 293 CPPUNIT_ASSERT_EQUAL(1, beginedit.GetCount());
232fdc63
VZ
294
295 sim.Char(WXK_RETURN);
296 wxYield();
297
744d91d4 298 CPPUNIT_ASSERT_EQUAL(1, endedit.GetCount());
232fdc63
VZ
299}
300
301void TreeCtrlTestCase::KeyDown()
302{
ce7fe42e 303 EventCounter keydown(m_tree, wxEVT_TREE_KEY_DOWN);
232fdc63
VZ
304
305 wxUIActionSimulator sim;
306
307 m_tree->SetFocus();
308 sim.Text("aAbB");
309 wxYield();
310
744d91d4 311 CPPUNIT_ASSERT_EQUAL(6, keydown.GetCount());
232fdc63
VZ
312}
313
314#if !defined(__WXGTK__)
315
316void TreeCtrlTestCase::CollapseExpandEvents()
317{
232fdc63
VZ
318 m_tree->CollapseAll();
319
ce7fe42e
VZ
320 EventCounter collapsed(m_tree, wxEVT_TREE_ITEM_COLLAPSED);
321 EventCounter collapsing(m_tree, wxEVT_TREE_ITEM_COLLAPSING);
322 EventCounter expanded(m_tree, wxEVT_TREE_ITEM_EXPANDED);
323 EventCounter expanding(m_tree, wxEVT_TREE_ITEM_EXPANDING);
232fdc63
VZ
324
325 wxUIActionSimulator sim;
326
327 wxRect pos;
328 m_tree->GetBoundingRect(m_root, pos, true);
329
330 // We move in slightly so we are not on the edge
331 wxPoint point = m_tree->ClientToScreen(pos.GetPosition()) + wxPoint(4, 4);
332
333 sim.MouseMove(point);
334 wxYield();
335
336 sim.MouseDblClick();
337 wxYield();
338
744d91d4
SL
339 CPPUNIT_ASSERT_EQUAL(1, expanding.GetCount());
340 CPPUNIT_ASSERT_EQUAL(1, expanded.GetCount());
232fdc63
VZ
341
342 sim.MouseDblClick();
343 wxYield();
344
744d91d4
SL
345 CPPUNIT_ASSERT_EQUAL(1, collapsing.GetCount());
346 CPPUNIT_ASSERT_EQUAL(1, collapsed.GetCount());
232fdc63
VZ
347}
348
349void TreeCtrlTestCase::SelectionChange()
350{
232fdc63
VZ
351 m_tree->ExpandAll();
352 m_tree->UnselectAll();
353
ce7fe42e
VZ
354 EventCounter changed(m_tree, wxEVT_TREE_SEL_CHANGED);
355 EventCounter changing(m_tree, wxEVT_TREE_SEL_CHANGING);
232fdc63
VZ
356
357 wxUIActionSimulator sim;
358
359 wxRect poschild1, poschild2;
360 m_tree->GetBoundingRect(m_child1, poschild1, true);
9150fa99 361 m_tree->GetBoundingRect(m_child2, poschild2, true);
232fdc63
VZ
362
363 // We move in slightly so we are not on the edge
364 wxPoint point1 = m_tree->ClientToScreen(poschild1.GetPosition()) + wxPoint(4, 4);
365 wxPoint point2 = m_tree->ClientToScreen(poschild2.GetPosition()) + wxPoint(4, 4);
366
367 sim.MouseMove(point1);
368 wxYield();
369
370 sim.MouseClick();
371 wxYield();
372
373 sim.MouseMove(point2);
374 wxYield();
375
376 sim.MouseClick();
377 wxYield();
378
744d91d4
SL
379 CPPUNIT_ASSERT_EQUAL(2, changed.GetCount());
380 CPPUNIT_ASSERT_EQUAL(2, changing.GetCount());
232fdc63
VZ
381}
382
383#endif // !__WXGTK__
384
385void TreeCtrlTestCase::Menu()
386{
ce7fe42e 387 EventCounter menu(m_tree, wxEVT_TREE_ITEM_MENU);
232fdc63
VZ
388 wxUIActionSimulator sim;
389
390 wxRect pos;
391 m_tree->GetBoundingRect(m_child1, pos, true);
392
393 // We move in slightly so we are not on the edge
394 wxPoint point = m_tree->ClientToScreen(pos.GetPosition()) + wxPoint(4, 4);
395
396 sim.MouseMove(point);
397 wxYield();
398
399 sim.MouseClick(wxMOUSE_BTN_RIGHT);
400 wxYield();
401
744d91d4 402 CPPUNIT_ASSERT_EQUAL(1, menu.GetCount());
232fdc63
VZ
403}
404
405#endif // wxUSE_UIACTIONSIMULATOR
406
407void TreeCtrlTestCase::ItemData()
408{
409 wxTreeItemData* child1data = new wxTreeItemData();
410 wxTreeItemData* appenddata = new wxTreeItemData();
411 wxTreeItemData* insertdata = new wxTreeItemData();
412
413 m_tree->SetItemData(m_child1, child1data);
414
415 CPPUNIT_ASSERT_EQUAL(child1data, m_tree->GetItemData(m_child1));
416 CPPUNIT_ASSERT_EQUAL(m_child1, child1data->GetId());
417
418 wxTreeItemId append = m_tree->AppendItem(m_root, "new", -1, -1, appenddata);
419
420 CPPUNIT_ASSERT_EQUAL(appenddata, m_tree->GetItemData(append));
421 CPPUNIT_ASSERT_EQUAL(append, appenddata->GetId());
422
423 wxTreeItemId insert = m_tree->InsertItem(m_root, m_child1, "new", -1, -1,
424 insertdata);
425
426 CPPUNIT_ASSERT_EQUAL(insertdata, m_tree->GetItemData(insert));
427 CPPUNIT_ASSERT_EQUAL(insert, insertdata->GetId());
428}
429
430void TreeCtrlTestCase::Iteration()
431{
432 // Get first / next / last child
433 wxTreeItemIdValue cookie;
434 CPPUNIT_ASSERT_EQUAL(m_tree->GetFirstChild(m_root, cookie), m_child1);
435 CPPUNIT_ASSERT_EQUAL(m_tree->GetNextChild(m_root, cookie),
436 m_tree->GetLastChild(m_root));
437 CPPUNIT_ASSERT_EQUAL(m_child2, m_tree->GetLastChild(m_root));
438
439 // Get next / previous sibling
440 CPPUNIT_ASSERT_EQUAL(m_child2, m_tree->GetNextSibling(m_child1));
441 CPPUNIT_ASSERT_EQUAL(m_child1, m_tree->GetPrevSibling(m_child2));
442}
443
444void TreeCtrlTestCase::Parent()
445{
446 CPPUNIT_ASSERT_EQUAL(m_root, m_tree->GetRootItem());
447 CPPUNIT_ASSERT_EQUAL(m_root, m_tree->GetItemParent(m_child1));
448 CPPUNIT_ASSERT_EQUAL(m_root, m_tree->GetItemParent(m_child2));
449 CPPUNIT_ASSERT_EQUAL(m_child1, m_tree->GetItemParent(m_grandchild));
450}
451
452void TreeCtrlTestCase::CollapseExpand()
453{
454 m_tree->ExpandAll();
455
456 CPPUNIT_ASSERT(m_tree->IsExpanded(m_root));
457 CPPUNIT_ASSERT(m_tree->IsExpanded(m_child1));
458
459 m_tree->CollapseAll();
460
461 CPPUNIT_ASSERT(!m_tree->IsExpanded(m_root));
462 CPPUNIT_ASSERT(!m_tree->IsExpanded(m_child1));
463
464 m_tree->ExpandAllChildren(m_root);
465
466 CPPUNIT_ASSERT(m_tree->IsExpanded(m_root));
467 CPPUNIT_ASSERT(m_tree->IsExpanded(m_child1));
468
469 m_tree->CollapseAllChildren(m_child1);
470
471 CPPUNIT_ASSERT(!m_tree->IsExpanded(m_child1));
472
473 m_tree->Expand(m_child1);
474
475 CPPUNIT_ASSERT(m_tree->IsExpanded(m_child1));
476
477 m_tree->Collapse(m_root);
478
479 CPPUNIT_ASSERT(!m_tree->IsExpanded(m_root));
480 CPPUNIT_ASSERT(m_tree->IsExpanded(m_child1));
481
482 m_tree->CollapseAndReset(m_root);
483
484 CPPUNIT_ASSERT(!m_tree->IsExpanded(m_root));
485}
486
487void TreeCtrlTestCase::AssignImageList()
488{
489 wxSize size(16, 16);
490
491 wxImageList *imagelist = new wxImageList(size.x, size.y);
492 imagelist->Add(wxArtProvider::GetIcon(wxART_QUESTION, wxART_OTHER, size));
493
494 wxImageList *statelist = new wxImageList(size.x, size.y);
495 statelist->Add(wxArtProvider::GetIcon(wxART_ERROR, wxART_OTHER, size));
496
497 m_tree->AssignImageList(imagelist);
498 m_tree->AssignStateImageList(statelist);
499
500 CPPUNIT_ASSERT_EQUAL(imagelist, m_tree->GetImageList());
501 CPPUNIT_ASSERT_EQUAL(statelist, m_tree->GetStateImageList());
502}
503
504void TreeCtrlTestCase::Focus()
505{
506#if !defined(__WXGTK__) && !defined(__WXOSX__)
507 m_tree->SetFocusedItem(m_child1);
508
509 CPPUNIT_ASSERT_EQUAL(m_child1, m_tree->GetFocusedItem());
510
511 m_tree->ClearFocusedItem();
512
513 CPPUNIT_ASSERT(!m_tree->GetFocusedItem());
514#endif
515}
516
517void TreeCtrlTestCase::Bold()
518{
519 CPPUNIT_ASSERT(!m_tree->IsBold(m_child1));
520
521 m_tree->SetItemBold(m_child1);
522
523 CPPUNIT_ASSERT(m_tree->IsBold(m_child1));
524
525 m_tree->SetItemBold(m_child1, false);
526
527 CPPUNIT_ASSERT(!m_tree->IsBold(m_child1));
528}
529
530void TreeCtrlTestCase::Visible()
531{
532 m_tree->CollapseAll();
533
534 CPPUNIT_ASSERT(m_tree->IsVisible(m_root));
535 CPPUNIT_ASSERT(!m_tree->IsVisible(m_child1));
536
537 m_tree->EnsureVisible(m_grandchild);
538
539 CPPUNIT_ASSERT(m_tree->IsVisible(m_grandchild));
540
541 m_tree->ExpandAll();
542
543 CPPUNIT_ASSERT_EQUAL(m_root, m_tree->GetFirstVisibleItem());
544 CPPUNIT_ASSERT_EQUAL(m_child1, m_tree->GetNextVisible(m_root));
545 CPPUNIT_ASSERT_EQUAL(m_grandchild, m_tree->GetNextVisible(m_child1));
546 CPPUNIT_ASSERT_EQUAL(m_child2, m_tree->GetNextVisible(m_grandchild));
547
548 CPPUNIT_ASSERT(!m_tree->GetNextVisible(m_child2));
549 CPPUNIT_ASSERT(!m_tree->GetPrevVisible(m_root));
550}
551
552void TreeCtrlTestCase::Sort()
553{
554 wxTreeItemId zitem = m_tree->AppendItem(m_root, "zzzz");
555 wxTreeItemId aitem = m_tree->AppendItem(m_root, "aaaa");
556
557 m_tree->SortChildren(m_root);
558
559 wxTreeItemIdValue cookie;
560
561 CPPUNIT_ASSERT_EQUAL(aitem, m_tree->GetFirstChild(m_root, cookie));
562 CPPUNIT_ASSERT_EQUAL(m_child1, m_tree->GetNextChild(m_root, cookie));
563 CPPUNIT_ASSERT_EQUAL(m_child2, m_tree->GetNextChild(m_root, cookie));
564 CPPUNIT_ASSERT_EQUAL(zitem, m_tree->GetNextChild(m_root, cookie));
565}
566
567void TreeCtrlTestCase::KeyNavigation()
568{
569#if wxUSE_UIACTIONSIMULATOR && !defined(__WXGTK__)
570 wxUIActionSimulator sim;
571
572 m_tree->CollapseAll();
573
574 m_tree->SelectItem(m_root);
575
a7dc5395 576 m_tree->SetFocus();
232fdc63
VZ
577 sim.Char(WXK_RIGHT);
578 wxYield();
579
580 CPPUNIT_ASSERT(m_tree->IsExpanded(m_root));
581
582 sim.Char(WXK_LEFT);
583 wxYield();
584
585 CPPUNIT_ASSERT(!m_tree->IsExpanded(m_root));
586
587 sim.Char(WXK_RIGHT);
588 sim.Char(WXK_DOWN);
589 wxYield();
590
591 CPPUNIT_ASSERT_EQUAL(m_child1, m_tree->GetSelection());
592
593 sim.Char(WXK_DOWN);
594 wxYield();
595
596 CPPUNIT_ASSERT_EQUAL(m_child2, m_tree->GetSelection());
597#endif
598}
599
600#endif //wxUSE_TREECTRL