1 // Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #undef HYDROGUI_EXPORTS
25 #include <test_HYDROGUI_ListModel.h>
26 #include <HYDROData_Document.h>
27 #include <HYDROGUI_ListModel.h>
29 Handle_HYDROData_Document GetDocument()
31 return HYDROData_Document::Document( 0 );
34 HYDROGUI_ListModel::Object2VisibleList CreateTestObjects( int theObjCount )
36 HYDROGUI_ListModel::Object2VisibleList anObjects;
38 for( int i=0; i<theObjCount; i++ )
40 Handle_HYDROData_Entity anObj = GetDocument()->CreateObject( KIND_IMMERSIBLE_ZONE );
42 std::string aName = " ";
44 anObj->SetName( QString::fromStdString( aName ) );
46 bool isVisible = i%2==0;
48 anObjects.append( HYDROGUI_ListModel::Object2Visible( anObj, isVisible ) );
53 std::string test_HYDROGUI_ListModel::GetObjects( HYDROGUI_ListModel* theModel ) const
55 std::string anObjects;
56 for( int i=0, n=theModel->myObjects.size(); i<n; i++ )
58 std::string anObjName = theModel->myObjects[i].first->GetName().toStdString();
59 if( theModel->isObjectVisible( i ) )
60 anObjName = "*" + anObjName;
63 anObjects += anObjName;
69 Test move up algorithm.
71 void test_HYDROGUI_ListModel::testMoveUp()
73 HYDROGUI_ListModel* aModel = new HYDROGUI_ListModel();
74 aModel->setObjects( CreateTestObjects( 6 ) );
75 const HYDROGUI_ListModel::OpType anUp = HYDROGUI_ListModel::Up;
77 // 0. Check the initial state
78 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
80 // 1. [ *A ] / ALL OBJECTS
81 aModel->move( QList<int>() << 0, anUp, false );
82 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
84 // 2. [ *A, B ] / ALL OBJECTS
85 aModel->move( QList<int>() << 0 << 1, anUp, false );
86 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
88 // 3. [ *A, *C ] / ALL OBJECTS
89 aModel->move( QList<int>() << 0 << 2, anUp, false );
90 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
92 // 4. [ *A, F ] / ALL OBJECTS
93 aModel->move( QList<int>() << 0 << 5, anUp, false );
94 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
96 // 5. [ F ] X 6 times / ALL OBJECTS
97 aModel->move( QList<int>() << 5, anUp, false );
98 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, F, *E" ), GetObjects( aModel ) );
99 aModel->move( QList<int>() << 4, anUp, false );
100 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, F, D, *E" ), GetObjects( aModel ) );
101 aModel->move( QList<int>() << 3, anUp, false );
102 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, F, *C, D, *E" ), GetObjects( aModel ) );
103 aModel->move( QList<int>() << 2, anUp, false );
104 CPPUNIT_ASSERT_EQUAL( std::string( "*A, F, B, *C, D, *E" ), GetObjects( aModel ) );
105 aModel->move( QList<int>() << 1, anUp, false );
106 CPPUNIT_ASSERT_EQUAL( std::string( "F, *A, B, *C, D, *E" ), GetObjects( aModel ) );
107 aModel->move( QList<int>() << 0, anUp, false );
108 CPPUNIT_ASSERT_EQUAL( std::string( "F, *A, B, *C, D, *E" ), GetObjects( aModel ) );
110 // 6. [ *A, B ] / ALL OBJECTS
111 aModel->move( QList<int>() << 1 << 2, anUp, false );
112 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, F, *C, D, *E" ), GetObjects( aModel ) );
114 // 7. [ B, *C, *E ] / ALL OBJECTS
115 aModel->move( QList<int>() << 1 << 3 << 5, anUp, false );
116 CPPUNIT_ASSERT_EQUAL( std::string( "B, *A, *C, F, *E, D" ), GetObjects( aModel ) );
118 // 8. [ *A, *C, F, *E, D ] / ALL OBJECTS
119 aModel->move( QList<int>() << 1 << 2 << 3 << 4 << 5, anUp, false );
120 CPPUNIT_ASSERT_EQUAL( std::string( "*A, *C, F, *E, D, B" ), GetObjects( aModel ) );
122 // 9. [ *E ] / VISIBLE OBJECTS
123 aModel->move( QList<int>() << 3, anUp, true );
124 CPPUNIT_ASSERT_EQUAL( std::string( "*A, *E, *C, F, D, B" ), GetObjects( aModel ) );
126 // 10. [ *E, *C ] / VISIBLE OBJECTS
127 aModel->move( QList<int>() << 1 << 2, anUp, true );
128 CPPUNIT_ASSERT_EQUAL( std::string( "*E, *C, *A, F, D, B" ), GetObjects( aModel ) );
130 // 11. [ *A, F ] / ALL OBJECTS
131 aModel->move( QList<int>() << 2 << 3, anUp, false );
132 CPPUNIT_ASSERT_EQUAL( std::string( "*E, *A, F, *C, D, B" ), GetObjects( aModel ) );
134 // 12. [ *A, *C ] / VISIBLE OBJECTS
135 aModel->move( QList<int>() << 1 << 3, anUp, true );
136 CPPUNIT_ASSERT_EQUAL( std::string( "*A, *C, *E, F, D, B" ), GetObjects( aModel ) );
138 // 13. [] / ALL OBJECTS
139 aModel->move( QList<int>(), anUp, false );
140 CPPUNIT_ASSERT_EQUAL( std::string( "*A, *C, *E, F, D, B"), GetObjects( aModel ) );
142 // 14. [ *A, *C, *E, F, D, B ] / ALL OBJECTS
143 aModel->move( QList<int>() << 0 << 1 << 2 << 3 << 4 << 5, anUp, false );
144 CPPUNIT_ASSERT_EQUAL( std::string( "*A, *C, *E, F, D, B"), GetObjects( aModel ) );
150 Test move on top algorithm.
152 void test_HYDROGUI_ListModel::testMoveOnTop()
154 HYDROGUI_ListModel* aModel = new HYDROGUI_ListModel();
155 aModel->setObjects( CreateTestObjects( 6 ) );
156 const HYDROGUI_ListModel::OpType aTop = HYDROGUI_ListModel::Top;
158 // 0. Check the initial state
159 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
161 // 1. [ *A ] / ALL OBJECTS
162 aModel->move( QList<int>() << 0, aTop, false );
163 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
165 // 2. [ *A ] / VISIBLE OBJECTS
166 aModel->move( QList<int>() << 0, aTop, true );
167 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
169 // 3. [ F ] / ALL OBJECTS
170 aModel->move( QList<int>() << 5, aTop, false );
171 CPPUNIT_ASSERT_EQUAL( std::string( "F, *A, B, *C, D, *E" ), GetObjects( aModel ) );
173 // 4. [ *E ] / VISIBLE OBJECTS
174 aModel->move( QList<int>() << 5, aTop, true );
175 CPPUNIT_ASSERT_EQUAL( std::string( "*E, F, *A, B, *C, D" ), GetObjects( aModel ) );
177 // 5. [ *E, F ] / ALL OBJECTS
178 aModel->move( QList<int>() << 0 << 1, aTop, false );
179 CPPUNIT_ASSERT_EQUAL( std::string( "*E, F, *A, B, *C, D" ), GetObjects( aModel ) );
181 // 6. [ *E, *A ] / ALL OBJECTS
182 aModel->move( QList<int>() << 0 << 2, aTop, false );
183 CPPUNIT_ASSERT_EQUAL( std::string( "*E, *A, F, B, *C, D" ), GetObjects( aModel ) );
185 // 7. [ *A, F, *C ] / ALL OBJECTS
186 aModel->move( QList<int>() << 1 << 2 << 4, aTop, false );
187 CPPUNIT_ASSERT_EQUAL( std::string( "*A, F, *C, *E, B, D" ), GetObjects( aModel ) );
189 // 8. [ F, *C, *E, B, D ] / ALL OBJECTS
190 aModel->move( QList<int>() << 1 << 2 << 3 << 4 << 5, aTop, false );
191 CPPUNIT_ASSERT_EQUAL( std::string( "F, *C, *E, B, D, *A" ), GetObjects( aModel ) );
193 // 9. [] / ALL OBJECTS
194 aModel->move( QList<int>(), aTop, false );
195 CPPUNIT_ASSERT_EQUAL( std::string( "F, *C, *E, B, D, *A" ), GetObjects( aModel ) );
197 // 10. [*F, *C, *E, B, D, *A] / ALL OBJECTS
198 aModel->move( QList<int>() << 0 << 1 << 2 << 3 << 4 << 5, aTop, false );
199 CPPUNIT_ASSERT_EQUAL( std::string( "F, *C, *E, B, D, *A" ), GetObjects( aModel ) );
205 Test move down algorithm.
207 void test_HYDROGUI_ListModel::testMoveDown()
209 HYDROGUI_ListModel* aModel = new HYDROGUI_ListModel();
210 aModel->setObjects( CreateTestObjects( 6 ) );
211 const HYDROGUI_ListModel::OpType aDown = HYDROGUI_ListModel::Down;
213 // 0. Check the initial state
214 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
216 // 1. [ F ] / ALL OBJECTS
217 aModel->move( QList<int>() << 5, aDown, false );
218 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
220 // 2. [ *E, F ] / ALL OBJECTS
221 aModel->move( QList<int>() << 4 << 5, aDown, false );
222 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
224 // 3. [ D, F ] / ALL OBJECTS
225 aModel->move( QList<int>() << 3 << 5, aDown, false );
226 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
228 // 4. [ *A, F ] / ALL OBJECTS
229 aModel->move( QList<int>() << 0 << 5, aDown, false );
230 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
232 // 5. [ *A ] X 6 times / ALL OBJECTS
233 aModel->move( QList<int>() << 0, aDown, false );
234 CPPUNIT_ASSERT_EQUAL( std::string( "B, *A, *C, D, *E, F" ), GetObjects( aModel ) );
235 aModel->move( QList<int>() << 1, aDown, false );
236 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, *A, D, *E, F" ), GetObjects( aModel ) );
237 aModel->move( QList<int>() << 2, aDown, false );
238 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, D, *A, *E, F" ), GetObjects( aModel ) );
239 aModel->move( QList<int>() << 3, aDown, false );
240 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, D, *E, *A, F" ), GetObjects( aModel ) );
241 aModel->move( QList<int>() << 4, aDown, false );
242 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, D, *E, F, *A" ), GetObjects( aModel ) );
243 aModel->move( QList<int>() << 5, aDown, false );
244 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, D, *E, F, *A" ), GetObjects( aModel ) );
246 // 6. [ *E, *F ] / ALL OBJECTS
247 aModel->move( QList<int>() << 3 << 4, aDown, false );
248 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, D, *A, *E, F" ), GetObjects( aModel ) );
250 // 7. [ B, D, *E ] / ALL OBJECTS
251 aModel->move( QList<int>() << 0 << 2 << 4, aDown, false );
252 CPPUNIT_ASSERT_EQUAL( std::string( "*C, B, *A, D, F, *E" ), GetObjects( aModel ) );
254 // 8. [ *C, B, *A, D, F ] / ALL OBJECTS
255 aModel->move( QList<int>() << 0 << 1 << 2 << 3 << 4, aDown, false );
256 CPPUNIT_ASSERT_EQUAL( std::string( "*E, *C, B, *A, D, F" ), GetObjects( aModel ) );
258 // 9. [ *C ] / VISIBLE OBJECTS
259 aModel->move( QList<int>() << 1, aDown, true );
260 CPPUNIT_ASSERT_EQUAL( std::string( "*E, B, *A, *C, D, F" ), GetObjects( aModel ) );
262 // 10. [ *E, *A ] / VISIBLE OBJECTS
263 aModel->move( QList<int>() << 0 << 2, aDown, true );
264 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, *E, *A, D, F" ), GetObjects( aModel ) );
266 // 11. [ *E, *A ] / VISIBLE OBJECTS
267 aModel->move( QList<int>() << 2 << 3, aDown, true );
268 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, *E, *A, D, F" ), GetObjects( aModel ) );
270 // 12. [ *C, *E, *A ] / VISIBLE OBJECTS
271 aModel->move( QList<int>() << 1 << 2 << 3, aDown, true );
272 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, *E, *A, D, F" ), GetObjects( aModel ) );
274 // 13. [] / ALL OBJECTS
275 aModel->move( QList<int>(), aDown, false );
276 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, *E, *A, D, F"), GetObjects( aModel ) );
278 // 14. [ B, *C, *E, *A, D, F ] / ALL OBJECTS
279 aModel->move( QList<int>() << 0 << 1 << 2 << 3 << 4 << 5, aDown, false );
280 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, *E, *A, D, F"), GetObjects( aModel ) );
286 Test move on bottom algorithm.
288 void test_HYDROGUI_ListModel::testMoveOnBottom()
290 HYDROGUI_ListModel* aModel = new HYDROGUI_ListModel();
291 aModel->setObjects( CreateTestObjects( 6 ) );
292 const HYDROGUI_ListModel::OpType aBottom = HYDROGUI_ListModel::Bottom;
294 // 0. Check the initial state
295 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
297 // 1. [ F ] / ALL OBJECTS
298 aModel->move( QList<int>() << 5, aBottom, false );
299 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
301 // 2. [ F ] / VISIBLE OBJECTS
302 aModel->move( QList<int>() << 5, aBottom, true );
303 CPPUNIT_ASSERT_EQUAL( std::string( "*A, B, *C, D, *E, F" ), GetObjects( aModel ) );
305 // 3. [ *A ] / ALL OBJECTS
306 aModel->move( QList<int>() << 0, aBottom, false );
307 CPPUNIT_ASSERT_EQUAL( std::string( "B, *C, D, *E, F, *A" ), GetObjects( aModel ) );
309 // 4. [ *C ] / VISIBLE OBJECTS
310 aModel->move( QList<int>() << 1, aBottom, true );
311 CPPUNIT_ASSERT_EQUAL( std::string( "B, D, *E, F, *A, *C" ), GetObjects( aModel ) );
313 // 5. [ B, D ] / ALL OBJECTS
314 aModel->move( QList<int>() << 0 << 1, aBottom, false );
315 CPPUNIT_ASSERT_EQUAL( std::string( "*E, F, *A, *C, B, D" ), GetObjects( aModel ) );
317 // 6. [ *C, *D ] / ALL OBJECTS
318 aModel->move( QList<int>() << 3 << 5, aBottom, false );
319 CPPUNIT_ASSERT_EQUAL( std::string( "*E, F, *A, B, *C, D" ), GetObjects( aModel ) );
321 // 7. [ *E, *A, *C ] / ALL OBJECTS
322 aModel->move( QList<int>() << 0 << 2 << 4, aBottom, false );
323 CPPUNIT_ASSERT_EQUAL( std::string( "F, B, D, *E, *A, *C" ), GetObjects( aModel ) );
325 // 8. [ B, D, *E, *A ] / ALL OBJECTS
326 aModel->move( QList<int>() << 1 << 2 << 3 << 4 , aBottom, false );
327 CPPUNIT_ASSERT_EQUAL( std::string( "F, *C, B, D, *E, *A" ), GetObjects( aModel ) );
329 // 9. [] / ALL OBJECTS
330 aModel->move( QList<int>(), aBottom, false );
331 CPPUNIT_ASSERT_EQUAL( std::string( "F, *C, B, D, *E, *A" ), GetObjects( aModel ) );
333 // 10. [F, *C, B, D, *E, *A] / ALL OBJECTS
334 aModel->move( QList<int>() << 0 << 1 << 2 << 3 << 4 << 5, aBottom, false );
335 CPPUNIT_ASSERT_EQUAL( std::string( "F, *C, B, D, *E, *A" ), GetObjects( aModel ) );
341 Test drag and drop algorithm.
343 void test_HYDROGUI_ListModel::testDragAndDrop()
345 HYDROGUI_ListModel* aModel = new HYDROGUI_ListModel();
346 aModel->setObjects( CreateTestObjects( 8 ) );
347 const HYDROGUI_ListModel::OpType aDnD = HYDROGUI_ListModel::DragAndDrop;
349 // 0. Check the initial state
350 std::string anInitialState = std::string( "*A, B, *C, D, *E, F, *G, H" );
351 CPPUNIT_ASSERT_EQUAL( anInitialState, GetObjects( aModel ) );
353 // 1. [] -> B ( i=1 )
354 bool aRes = aModel->move( QList<int>(), aDnD, false, 1 );
355 CPPUNIT_ASSERT_EQUAL( false, aRes );
356 CPPUNIT_ASSERT_EQUAL( anInitialState, GetObjects( aModel ) );
358 // 2. ALL -> B ( i=1 )
360 anAll << 0 << 1 << 2 << 3 << 4 << 5 << 6 << 7;
361 aRes = aModel->move( anAll, aDnD, false, 1 );
362 CPPUNIT_ASSERT_EQUAL( false, aRes );
363 CPPUNIT_ASSERT_EQUAL( anInitialState, GetObjects( aModel ) );
365 // 3. [D, *E, *G] -> D : drop item is among dragged items ( at the beginning )
366 aRes = aModel->move( QList<int>() << 3 << 4 << 6, aDnD, false, 3 );
367 CPPUNIT_ASSERT_EQUAL( false, aRes );
368 CPPUNIT_ASSERT_EQUAL( anInitialState, GetObjects( aModel ) );
370 // 4. [D, *E, *G] -> *E : drop item is among dragged items ( in the middle )
371 aRes = aModel->move( QList<int>() << 3 << 4 << 6, aDnD, false, 4 );
372 CPPUNIT_ASSERT_EQUAL( false, aRes );
373 CPPUNIT_ASSERT_EQUAL( anInitialState, GetObjects( aModel ) );
375 // 5. [D, *E, *G] -> *G : drop item is among dragged items ( at the end )
376 aRes = aModel->move( QList<int>() << 3 << 4 << 6, aDnD, false, 6 );
377 CPPUNIT_ASSERT_EQUAL( false, aRes );
378 CPPUNIT_ASSERT_EQUAL( anInitialState, GetObjects( aModel ) );
380 // 6. [D, *E, *G] -> -1 : drop item index is out of range ( less than zero )
381 aRes = aModel->move( QList<int>() << 3 << 4 << 6, aDnD, false, -1 );
382 CPPUNIT_ASSERT_EQUAL( false, aRes );
383 CPPUNIT_ASSERT_EQUAL( anInitialState, GetObjects( aModel ) );
385 // 7. [D, *E, *G] -> -1 : drop item index is out of range ( more than than list length )
386 aRes = aModel->move( QList<int>() << 3 << 4 << 6, aDnD, false, 9 );
387 CPPUNIT_ASSERT_EQUAL( false, aRes );
388 CPPUNIT_ASSERT_EQUAL( anInitialState, GetObjects( aModel ) );
390 // 8. [D, *E, *G] -> B ( i = 1 )
391 aRes = aModel->move( QList<int>() << 3 << 4 << 6, aDnD, false, 1 );
392 CPPUNIT_ASSERT_EQUAL( true, aRes );
393 CPPUNIT_ASSERT_EQUAL( std::string( "*A, D, *E, *G, B, *C, F, H" ), GetObjects( aModel ) );
396 aRes = aModel->move( QList<int>() << 2 << 6, aDnD, false, 3 );
397 CPPUNIT_ASSERT_EQUAL( true, aRes );
398 CPPUNIT_ASSERT_EQUAL( std::string( "*A, D, *E, F, *G, B, *C, H" ), GetObjects( aModel ) );
400 // 10. [*E, F, *G] -> *A
401 aRes = aModel->move( QList<int>() << 2 << 3 << 4, aDnD, false, 0 );
402 CPPUNIT_ASSERT_EQUAL( true, aRes );
403 CPPUNIT_ASSERT_EQUAL( std::string( "*E, F, *G, *A, D, B, *C, H" ), GetObjects( aModel ) );
405 // 11. [*G, D, *C, H] -> B
406 aRes = aModel->move( QList<int>() << 2 << 4 << 6 << 7, aDnD, false, 5 );
407 CPPUNIT_ASSERT_EQUAL( true, aRes );
408 CPPUNIT_ASSERT_EQUAL( std::string( "*E, F, *A, *G, D, *C, H, B" ), GetObjects( aModel ) );
410 // 12. [F, *A, *G, D, *C, H, B] -> *E
411 QList<int> anAllWithoutFirst;
412 anAllWithoutFirst << 1 << 2 << 3 << 4 << 5 << 6 << 7;
413 aRes = aModel->move( anAllWithoutFirst, aDnD, false, 0 );
414 CPPUNIT_ASSERT_EQUAL( true, aRes );
415 CPPUNIT_ASSERT_EQUAL( std::string( "F, *A, *G, D, *C, H, B, *E" ), GetObjects( aModel ) );
417 // 13. [*A, *G] -> D : no changes
418 aRes = aModel->move( QList<int>() << 1 << 2, aDnD, false, 3 );
419 CPPUNIT_ASSERT_EQUAL( true, aRes );
420 CPPUNIT_ASSERT_EQUAL( std::string( "F, *A, *G, D, *C, H, B, *E" ), GetObjects( aModel ) );
423 aRes = aModel->move( QList<int>() << 0 << 2, aDnD, false, 3 );
424 CPPUNIT_ASSERT_EQUAL( true, aRes );
425 CPPUNIT_ASSERT_EQUAL( std::string( "*A, F, *G, D, *C, H, B, *E" ), GetObjects( aModel ) );
427 // 15. [*A, *G, *C, H, *E] -> D
428 aRes = aModel->move( QList<int>() << 0 << 2 << 4 << 5 << 7, aDnD, false, 3 );
429 CPPUNIT_ASSERT_EQUAL( true, aRes );
430 CPPUNIT_ASSERT_EQUAL( std::string( "F, *A, *G, *C, H, *E, D, B" ), GetObjects( aModel ) );