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