]> git.saurik.com Git - wxWidgets.git/blame - tests/controls/rearrangelisttest.cpp
wxMessageBox off the main thread lost result code.
[wxWidgets.git] / tests / controls / rearrangelisttest.cpp
CommitLineData
232fdc63
VZ
1///////////////////////////////////////////////////////////////////////////////
2// Name: tests/controls/rearrangelisttest.cpp
3// Purpose: wxRearrangeList unit test
4// Author: Steven Lamerton
5// Created: 2010-07-05
232fdc63
VZ
6// Copyright: (c) 2010 Steven Lamerton
7///////////////////////////////////////////////////////////////////////////////
8
9#include "testprec.h"
10
11#ifdef __BORLANDC__
12 #pragma hdrstop
13#endif
14
15#ifndef WX_PRECOMP
16 #include "wx/app.h"
17#endif // WX_PRECOMP
18
19#include "wx/rearrangectrl.h"
20#include "itemcontainertest.h"
21#include "testableframe.h"
22
23class RearrangeListTestCase : public ItemContainerTestCase, public CppUnit::TestCase
24{
25public:
26 RearrangeListTestCase() { }
27
28 virtual void setUp();
29 virtual void tearDown();
30
31private:
32 virtual wxItemContainer *GetContainer() const { return m_rearrange; }
33 virtual wxWindow *GetContainerWindow() const { return m_rearrange; }
34
35 CPPUNIT_TEST_SUITE( RearrangeListTestCase );
36 wxITEM_CONTAINER_TESTS();
37 CPPUNIT_TEST( Move );
38 CPPUNIT_TEST( MoveClientData );
39 CPPUNIT_TEST_SUITE_END();
40
41 void Move();
42 void MoveClientData();
43
44 wxRearrangeList* m_rearrange;
45
46 DECLARE_NO_COPY_CLASS(RearrangeListTestCase)
47};
48
49// register in the unnamed registry so that these tests are run by default
50CPPUNIT_TEST_SUITE_REGISTRATION( RearrangeListTestCase );
51
e3778b4d 52// also include in its own registry so that these tests can be run alone
232fdc63
VZ
53CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RearrangeListTestCase, "RearrangeListTestCase" );
54
55void RearrangeListTestCase::setUp()
56{
57 //We do not add items here as the wxITEM_CONTAINER_TESTS add their own
58 wxArrayInt order;
59 wxArrayString items;
60
61 m_rearrange = new wxRearrangeList(wxTheApp->GetTopWindow(), wxID_ANY,
62 wxDefaultPosition, wxDefaultSize, order,
63 items);
64}
65
66void RearrangeListTestCase::tearDown()
67{
68 wxDELETE(m_rearrange);
69}
70
71void RearrangeListTestCase::Move()
72{
73 wxArrayInt order;
74 order.push_back(1);
75 order.push_back(~2);
76 order.push_back(0);
77
78 wxArrayString items;
79 items.push_back("first");
80 items.push_back("second");
81 items.push_back("third");
82
83 wxDELETE(m_rearrange);
84
85 m_rearrange = new wxRearrangeList(wxTheApp->GetTopWindow(), wxID_ANY,
86 wxDefaultPosition, wxDefaultSize, order,
87 items);
88
89 //Confusingly setselection sets the physical item rather than the
90 //item specified in the constructor
91 m_rearrange->SetSelection(0);
92
93 CPPUNIT_ASSERT(!m_rearrange->CanMoveCurrentUp());
94 CPPUNIT_ASSERT(m_rearrange->CanMoveCurrentDown());
95
96 m_rearrange->SetSelection(1);
97
98 CPPUNIT_ASSERT(m_rearrange->CanMoveCurrentUp());
99 CPPUNIT_ASSERT(m_rearrange->CanMoveCurrentDown());
100
101 m_rearrange->SetSelection(2);
102
103 CPPUNIT_ASSERT(m_rearrange->CanMoveCurrentUp());
104 CPPUNIT_ASSERT(!m_rearrange->CanMoveCurrentDown());
105
106 m_rearrange->MoveCurrentUp();
107 m_rearrange->SetSelection(0);
108 m_rearrange->MoveCurrentDown();
109
110 wxArrayInt neworder = m_rearrange->GetCurrentOrder();
111
112 CPPUNIT_ASSERT_EQUAL(neworder[0], 0);
113 CPPUNIT_ASSERT_EQUAL(neworder[1], 1);
114 CPPUNIT_ASSERT_EQUAL(neworder[2], ~2);
115
116 CPPUNIT_ASSERT_EQUAL("first", m_rearrange->GetString(0));
117 CPPUNIT_ASSERT_EQUAL("second", m_rearrange->GetString(1));
118 CPPUNIT_ASSERT_EQUAL("third", m_rearrange->GetString(2));
119}
120
121void RearrangeListTestCase::MoveClientData()
122{
123 wxArrayInt order;
124 order.push_back(0);
125 order.push_back(1);
126 order.push_back(2);
127
128 wxArrayString items;
129 items.push_back("first");
130 items.push_back("second");
131 items.push_back("third");
132
133 wxClientData* item0data = new wxStringClientData("item0data");
134 wxClientData* item1data = new wxStringClientData("item1data");
135 wxClientData* item2data = new wxStringClientData("item2data");
136
137 wxDELETE(m_rearrange);
138
139 m_rearrange = new wxRearrangeList(wxTheApp->GetTopWindow(), wxID_ANY,
140 wxDefaultPosition, wxDefaultSize, order,
141 items);
142
143 m_rearrange->SetClientObject(0, item0data);
144 m_rearrange->SetClientObject(1, item1data);
145 m_rearrange->SetClientObject(2, item2data);
146
147 m_rearrange->SetSelection(0);
148 m_rearrange->MoveCurrentDown();
149
150 m_rearrange->SetSelection(2);
151 m_rearrange->MoveCurrentUp();
152
153 CPPUNIT_ASSERT_EQUAL(item1data, m_rearrange->GetClientObject(0));
154 CPPUNIT_ASSERT_EQUAL(item2data, m_rearrange->GetClientObject(1));
155 CPPUNIT_ASSERT_EQUAL(item0data, m_rearrange->GetClientObject(2));
156
157 CPPUNIT_ASSERT_EQUAL("second", m_rearrange->GetString(0));
158 CPPUNIT_ASSERT_EQUAL("third", m_rearrange->GetString(1));
159 CPPUNIT_ASSERT_EQUAL("first", m_rearrange->GetString(2));
160}