14 #include <QApplication> 28 explicit TestWidget(QWidget* parent =
nullptr) :
QmitkAbstractNodeSelectionWidget(parent), m_UpdateInfo(0), m_OnNodePredicateChanged(0), m_OnDataStorageChanged(0),
29 m_OnInternalSelectionChanged(0), m_OnNodeAddedToStorage(0), m_OnNodeRemovedFromStorage(0), m_ReviseSelectionChanged(0), m_AllowEmissionOfSelection(0), m_Allow(true), m_NewSelectionEmited(0)
40 int m_OnNodePredicateChanged;
43 m_OnNodePredicateChanged++;
46 int m_OnDataStorageChanged;
49 m_OnDataStorageChanged++;
52 int m_OnInternalSelectionChanged;
55 m_OnInternalSelectionChanged++;
58 int m_OnNodeAddedToStorage;
61 m_OnNodeAddedToStorage++;
64 int m_OnNodeRemovedFromStorage;
67 m_OnNodeRemovedFromStorage++;
70 int m_ReviseSelectionChanged;
73 m_ReviseSelectionChanged++;
76 mutable int m_AllowEmissionOfSelection;
80 m_AllowEmissionOfSelection++;
86 int m_NewSelectionEmited;
88 void NewSelectionEmited(NodeList selection)
90 m_NewSelectionEmited++;
91 m_LastNewEmision = selection;
97 CPPUNIT_TEST_SUITE(QmitkAbstractNodeSelectionWidgetTestSuite);
106 CPPUNIT_TEST_SUITE_END();
114 QApplication* m_TestApp;
117 void setUp()
override 121 m_Node1->SetName(
"node1_1");
124 m_Node2->SetName(
"node2");
127 m_Node3->SetName(
"node3");
130 m_Node1_2->SetName(
"node1_2");
132 m_DataStorage->Add(m_Node1);
133 m_DataStorage->Add(m_Node2);
134 m_DataStorage->Add(m_Node3);
135 m_DataStorage->Add(m_Node1_2);
138 auto argc = cmdLineArgs.GetArgc();
139 auto argv = cmdLineArgs.GetArgv();
140 m_TestApp =
new QApplication(argc, argv);
147 return node->GetName().find(name,0) == 0;
150 return predicate.GetPointer();
153 void tearDown()
override 158 void SetDataStorageTest()
162 widget.SetDataStorage(
nullptr);
163 CPPUNIT_ASSERT_EQUAL(0, widget.m_UpdateInfo);
164 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
165 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"Set same data storage but triggered change", 0, widget.m_OnDataStorageChanged);
166 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnInternalSelectionChanged);
167 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
168 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
169 CPPUNIT_ASSERT_EQUAL(0, widget.m_ReviseSelectionChanged);
170 CPPUNIT_ASSERT_EQUAL(0, widget.m_AllowEmissionOfSelection);
171 CPPUNIT_ASSERT_EQUAL(0, widget.m_NewSelectionEmited);
173 widget.SetDataStorage(m_DataStorage);
174 CPPUNIT_ASSERT_EQUAL(1, widget.m_UpdateInfo);
175 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
176 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
177 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnInternalSelectionChanged);
178 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
179 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
180 CPPUNIT_ASSERT_EQUAL(1, widget.m_ReviseSelectionChanged);
181 CPPUNIT_ASSERT_EQUAL(1, widget.m_AllowEmissionOfSelection);
182 CPPUNIT_ASSERT_EQUAL(0, widget.m_NewSelectionEmited);
184 widget.SetCurrentSelection({ m_Node1 });
185 CPPUNIT_ASSERT_EQUAL(2, widget.m_UpdateInfo);
186 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
187 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
188 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnInternalSelectionChanged);
189 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
190 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
191 CPPUNIT_ASSERT_EQUAL(2, widget.m_ReviseSelectionChanged);
192 CPPUNIT_ASSERT_EQUAL(2, widget.m_AllowEmissionOfSelection);
193 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
197 widget.SetDataStorage(m_DataStorage);
198 CPPUNIT_ASSERT_EQUAL(2, widget.m_UpdateInfo);
199 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
200 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"Set same data storage but triggered change", 1, widget.m_OnDataStorageChanged);
201 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnInternalSelectionChanged);
202 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
203 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
204 CPPUNIT_ASSERT_EQUAL(2, widget.m_ReviseSelectionChanged);
205 CPPUNIT_ASSERT_EQUAL(2, widget.m_AllowEmissionOfSelection);
206 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
209 widget.SetDataStorage(
nullptr);
210 CPPUNIT_ASSERT_EQUAL(3, widget.m_UpdateInfo);
211 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
212 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"Set same data storage but triggered change", 2, widget.m_OnDataStorageChanged);
213 CPPUNIT_ASSERT_EQUAL(3, widget.m_OnInternalSelectionChanged);
214 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
215 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
216 CPPUNIT_ASSERT_EQUAL(3, widget.m_ReviseSelectionChanged);
217 CPPUNIT_ASSERT_EQUAL(3, widget.m_AllowEmissionOfSelection);
218 CPPUNIT_ASSERT_EQUAL(2, widget.m_NewSelectionEmited);
223 void DataStorageEventTest()
228 widget.SetDataStorage(m_DataStorage);
229 m_DataStorage->Add(newNode);
231 CPPUNIT_ASSERT_EQUAL(1, widget.m_UpdateInfo);
232 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
233 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
234 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnInternalSelectionChanged);
235 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodeAddedToStorage);
236 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
237 CPPUNIT_ASSERT_EQUAL(1, widget.m_ReviseSelectionChanged);
238 CPPUNIT_ASSERT_EQUAL(1, widget.m_AllowEmissionOfSelection);
239 CPPUNIT_ASSERT_EQUAL(0, widget.m_NewSelectionEmited);
241 widget.SetCurrentSelection({ newNode });
242 m_DataStorage->Remove(m_Node1);
243 CPPUNIT_ASSERT_EQUAL(2, widget.m_UpdateInfo);
244 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
245 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
246 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnInternalSelectionChanged);
247 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodeAddedToStorage);
248 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodeRemovedFromStorage);
249 CPPUNIT_ASSERT_EQUAL(2, widget.m_ReviseSelectionChanged);
250 CPPUNIT_ASSERT_EQUAL(2, widget.m_AllowEmissionOfSelection);
251 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
255 m_DataStorage->Remove(newNode);
256 CPPUNIT_ASSERT_EQUAL(3, widget.m_UpdateInfo);
257 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
258 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
259 CPPUNIT_ASSERT_EQUAL(3, widget.m_OnInternalSelectionChanged);
260 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodeAddedToStorage);
261 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnNodeRemovedFromStorage);
262 CPPUNIT_ASSERT_EQUAL(3, widget.m_ReviseSelectionChanged);
263 CPPUNIT_ASSERT_EQUAL(3, widget.m_AllowEmissionOfSelection);
264 CPPUNIT_ASSERT_EQUAL(2, widget.m_NewSelectionEmited);
268 widget.SetCurrentSelection({ m_Node2 });
269 m_DataStorage =
nullptr;
270 CPPUNIT_ASSERT_EQUAL(5, widget.m_UpdateInfo);
271 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
272 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnDataStorageChanged);
273 CPPUNIT_ASSERT_EQUAL(5, widget.m_OnInternalSelectionChanged);
274 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodeAddedToStorage);
275 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnNodeRemovedFromStorage);
276 CPPUNIT_ASSERT_EQUAL(5, widget.m_ReviseSelectionChanged);
277 CPPUNIT_ASSERT_EQUAL(5, widget.m_AllowEmissionOfSelection);
278 CPPUNIT_ASSERT_EQUAL(4, widget.m_NewSelectionEmited);
283 void NodePredicateTest()
287 CPPUNIT_ASSERT(
nullptr == widget.GetNodePredicate());
288 auto testPred = GeneratTestPredicate(
"node2");
289 widget.SetNodePredicate(testPred);
290 CPPUNIT_ASSERT(testPred == widget.GetNodePredicate());
292 CPPUNIT_ASSERT_EQUAL(1, widget.m_UpdateInfo);
293 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodePredicateChanged);
294 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnDataStorageChanged);
295 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnInternalSelectionChanged);
296 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
297 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
298 CPPUNIT_ASSERT_EQUAL(1, widget.m_ReviseSelectionChanged);
299 CPPUNIT_ASSERT_EQUAL(1, widget.m_AllowEmissionOfSelection);
300 CPPUNIT_ASSERT_EQUAL(0, widget.m_NewSelectionEmited);
302 widget.SetDataStorage(m_DataStorage);
304 widget.SetCurrentSelection({ m_Node3 });
305 CPPUNIT_ASSERT_EQUAL(3, widget.m_UpdateInfo);
306 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodePredicateChanged);
307 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
308 CPPUNIT_ASSERT_EQUAL(3, widget.m_OnInternalSelectionChanged);
309 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
310 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
311 CPPUNIT_ASSERT_EQUAL(3, widget.m_ReviseSelectionChanged);
312 CPPUNIT_ASSERT_EQUAL(3, widget.m_AllowEmissionOfSelection);
313 CPPUNIT_ASSERT_EQUAL(0, widget.m_NewSelectionEmited);
317 widget.SetCurrentSelection({ m_Node2 });
318 CPPUNIT_ASSERT_EQUAL(4, widget.m_UpdateInfo);
319 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodePredicateChanged);
320 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
321 CPPUNIT_ASSERT_EQUAL(4, widget.m_OnInternalSelectionChanged);
322 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
323 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
324 CPPUNIT_ASSERT_EQUAL(4, widget.m_ReviseSelectionChanged);
325 CPPUNIT_ASSERT_EQUAL(4, widget.m_AllowEmissionOfSelection);
326 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
331 widget.SetNodePredicate(GeneratTestPredicate(
"node1"));
332 CPPUNIT_ASSERT_EQUAL(5, widget.m_UpdateInfo);
333 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnNodePredicateChanged);
334 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
335 CPPUNIT_ASSERT_EQUAL(5, widget.m_OnInternalSelectionChanged);
336 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
337 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
338 CPPUNIT_ASSERT_EQUAL(5, widget.m_ReviseSelectionChanged);
339 CPPUNIT_ASSERT_EQUAL(5, widget.m_AllowEmissionOfSelection);
340 CPPUNIT_ASSERT_EQUAL(2, widget.m_NewSelectionEmited);
345 widget.SetCurrentSelection({ m_Node1, m_Node2, m_Node1_2 });
346 CPPUNIT_ASSERT_EQUAL(6, widget.m_UpdateInfo);
347 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnNodePredicateChanged);
348 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
349 CPPUNIT_ASSERT_EQUAL(6, widget.m_OnInternalSelectionChanged);
350 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
351 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
352 CPPUNIT_ASSERT_EQUAL(6, widget.m_ReviseSelectionChanged);
353 CPPUNIT_ASSERT_EQUAL(6, widget.m_AllowEmissionOfSelection);
354 CPPUNIT_ASSERT_EQUAL(3, widget.m_NewSelectionEmited);
359 void SelectOnlyVisibleNodesTest()
363 CPPUNIT_ASSERT_EQUAL(
true, widget.GetSelectOnlyVisibleNodes());
365 CPPUNIT_ASSERT(
nullptr == widget.GetNodePredicate());
366 auto testPred = GeneratTestPredicate(
"node2");
367 widget.SetNodePredicate(testPred);
368 widget.SetDataStorage(m_DataStorage);
369 widget.SetCurrentSelection({ m_Node3 });
370 CPPUNIT_ASSERT_EQUAL(3, widget.m_UpdateInfo);
371 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodePredicateChanged);
372 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
373 CPPUNIT_ASSERT_EQUAL(3, widget.m_OnInternalSelectionChanged);
374 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
375 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
376 CPPUNIT_ASSERT_EQUAL(3, widget.m_ReviseSelectionChanged);
377 CPPUNIT_ASSERT_EQUAL(3, widget.m_AllowEmissionOfSelection);
378 CPPUNIT_ASSERT_EQUAL(0, widget.m_NewSelectionEmited);
382 widget.SetSelectOnlyVisibleNodes(
false);
383 CPPUNIT_ASSERT_EQUAL(
false, widget.GetSelectOnlyVisibleNodes());
384 CPPUNIT_ASSERT_EQUAL(3, widget.m_UpdateInfo);
385 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodePredicateChanged);
386 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
387 CPPUNIT_ASSERT_EQUAL(3, widget.m_OnInternalSelectionChanged);
388 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
389 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
390 CPPUNIT_ASSERT_EQUAL(3, widget.m_ReviseSelectionChanged);
391 CPPUNIT_ASSERT_EQUAL(4, widget.m_AllowEmissionOfSelection);
392 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
397 widget.SetCurrentSelection({ m_Node1, m_Node2, m_Node1_2 });
398 CPPUNIT_ASSERT_EQUAL(4, widget.m_UpdateInfo);
399 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodePredicateChanged);
400 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
401 CPPUNIT_ASSERT_EQUAL(4, widget.m_OnInternalSelectionChanged);
402 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
403 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
404 CPPUNIT_ASSERT_EQUAL(4, widget.m_ReviseSelectionChanged);
405 CPPUNIT_ASSERT_EQUAL(5, widget.m_AllowEmissionOfSelection);
406 CPPUNIT_ASSERT_EQUAL(2, widget.m_NewSelectionEmited);
407 CPPUNIT_ASSERT(
EqualNodeSelections({ m_Node1, m_Node2, m_Node1_2 }, widget.m_LastNewEmision));
408 CPPUNIT_ASSERT(
EqualNodeSelections({ m_Node1, m_Node2, m_Node1_2 }, widget.GetSelectedNodes()));
411 widget.SetNodePredicate(GeneratTestPredicate(
"node1"));
412 CPPUNIT_ASSERT_EQUAL(5, widget.m_UpdateInfo);
413 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnNodePredicateChanged);
414 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
415 CPPUNIT_ASSERT_EQUAL(5, widget.m_OnInternalSelectionChanged);
416 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
417 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
418 CPPUNIT_ASSERT_EQUAL(5, widget.m_ReviseSelectionChanged);
419 CPPUNIT_ASSERT_EQUAL(6, widget.m_AllowEmissionOfSelection);
420 CPPUNIT_ASSERT_EQUAL(2, widget.m_NewSelectionEmited);
421 CPPUNIT_ASSERT(
EqualNodeSelections({ m_Node1, m_Node2, m_Node1_2 }, widget.m_LastNewEmision));
422 CPPUNIT_ASSERT(
EqualNodeSelections({ m_Node1, m_Node2, m_Node1_2 }, widget.GetSelectedNodes()));
424 widget.SetSelectOnlyVisibleNodes(
true);
425 CPPUNIT_ASSERT_EQUAL(
true, widget.GetSelectOnlyVisibleNodes());
426 CPPUNIT_ASSERT_EQUAL(5, widget.m_UpdateInfo);
427 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnNodePredicateChanged);
428 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
429 CPPUNIT_ASSERT_EQUAL(5, widget.m_OnInternalSelectionChanged);
430 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
431 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
432 CPPUNIT_ASSERT_EQUAL(5, widget.m_ReviseSelectionChanged);
433 CPPUNIT_ASSERT_EQUAL(7, widget.m_AllowEmissionOfSelection);
434 CPPUNIT_ASSERT_EQUAL(3, widget.m_NewSelectionEmited);
439 void OtherSetterAndGetterTest()
443 CPPUNIT_ASSERT(
"Error. Select data." == widget.GetInvalidInfo());
444 CPPUNIT_ASSERT(
"Empty. Make a selection." == widget.GetEmptyInfo());
445 CPPUNIT_ASSERT(
"Select a data node" == widget.GetPopUpTitel());
446 CPPUNIT_ASSERT(
"" == widget.GetPopUpHint());
447 CPPUNIT_ASSERT(
false == widget.GetSelectionIsOptional());
449 widget.SetInvalidInfo(
"SetInvalidInfo");
450 widget.SetEmptyInfo(
"SetEmptyInfo");
451 widget.SetPopUpTitel(
"SetPopUpTitel");
452 widget.SetPopUpHint(
"SetPopUpHint");
453 widget.SetSelectionIsOptional(
true);
455 CPPUNIT_ASSERT(
"SetInvalidInfo" == widget.GetInvalidInfo());
456 CPPUNIT_ASSERT(
"SetEmptyInfo" == widget.GetEmptyInfo());
457 CPPUNIT_ASSERT(
"SetPopUpTitel" == widget.GetPopUpTitel());
458 CPPUNIT_ASSERT(
"SetPopUpHint" == widget.GetPopUpHint());
459 CPPUNIT_ASSERT(
true == widget.GetSelectionIsOptional());
462 void AllowEmissionOfSelectionTest()
466 widget.SetDataStorage(m_DataStorage);
467 widget.SetCurrentSelection({ m_Node3 });
468 CPPUNIT_ASSERT_EQUAL(2, widget.m_UpdateInfo);
469 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
470 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
471 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnInternalSelectionChanged);
472 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
473 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
474 CPPUNIT_ASSERT_EQUAL(2, widget.m_ReviseSelectionChanged);
475 CPPUNIT_ASSERT_EQUAL(2, widget.m_AllowEmissionOfSelection);
476 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
480 widget.m_Allow =
false;
482 widget.SetCurrentSelection({ m_Node1 });
483 CPPUNIT_ASSERT_EQUAL(3, widget.m_UpdateInfo);
484 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
485 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
486 CPPUNIT_ASSERT_EQUAL(3, widget.m_OnInternalSelectionChanged);
487 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
488 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
489 CPPUNIT_ASSERT_EQUAL(3, widget.m_ReviseSelectionChanged);
490 CPPUNIT_ASSERT_EQUAL(3, widget.m_AllowEmissionOfSelection);
491 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
496 void OnNodeModifiedTest()
500 widget.SetDataStorage(m_DataStorage);
501 widget.SetCurrentSelection({ m_Node3 });
504 m_Node3->SetName(
"NewName");
505 CPPUNIT_ASSERT_EQUAL(2, widget.m_UpdateInfo);
506 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
507 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
508 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnInternalSelectionChanged);
509 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
510 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
511 CPPUNIT_ASSERT_EQUAL(2, widget.m_ReviseSelectionChanged);
512 CPPUNIT_ASSERT_EQUAL(3, widget.m_AllowEmissionOfSelection);
513 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
518 widget.m_Allow =
false;
519 m_Node3->SetName(
"NewName_temp");
520 widget.m_Allow =
true;
521 m_Node3->SetName(
"NewName");
522 CPPUNIT_ASSERT_EQUAL(4, widget.m_UpdateInfo);
523 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
524 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
525 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnInternalSelectionChanged);
526 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
527 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
528 CPPUNIT_ASSERT_EQUAL(2, widget.m_ReviseSelectionChanged);
529 CPPUNIT_ASSERT_EQUAL(7, widget.m_AllowEmissionOfSelection);
530 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
535 m_Node2->SetName(
"IrrelevantNode");
536 CPPUNIT_ASSERT_EQUAL(4, widget.m_UpdateInfo);
537 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
538 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
539 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnInternalSelectionChanged);
540 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
541 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
542 CPPUNIT_ASSERT_EQUAL(2, widget.m_ReviseSelectionChanged);
543 CPPUNIT_ASSERT_EQUAL(7, widget.m_AllowEmissionOfSelection);
544 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
549 widget.SetNodePredicate(GeneratTestPredicate(
"node1"));
550 m_Node3->SetName(
"NowAlsoIrrelevantNode");
551 CPPUNIT_ASSERT_EQUAL(5, widget.m_UpdateInfo);
552 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodePredicateChanged);
553 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
554 CPPUNIT_ASSERT_EQUAL(3, widget.m_OnInternalSelectionChanged);
555 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
556 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
557 CPPUNIT_ASSERT_EQUAL(3, widget.m_ReviseSelectionChanged);
558 CPPUNIT_ASSERT_EQUAL(8, widget.m_AllowEmissionOfSelection);
559 CPPUNIT_ASSERT_EQUAL(2, widget.m_NewSelectionEmited);
563 widget.SetCurrentSelection({ m_Node1, m_Node1_2 });
566 m_Node1->SetName(
"NodeSortedOutByPredicate");
567 CPPUNIT_ASSERT_EQUAL(7, widget.m_UpdateInfo);
568 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnNodePredicateChanged);
569 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
570 CPPUNIT_ASSERT_EQUAL(5, widget.m_OnInternalSelectionChanged);
571 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
572 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
573 CPPUNIT_ASSERT_EQUAL(5, widget.m_ReviseSelectionChanged);
574 CPPUNIT_ASSERT_EQUAL(10, widget.m_AllowEmissionOfSelection);
575 CPPUNIT_ASSERT_EQUAL(4, widget.m_NewSelectionEmited);
580 void SignalRecursionTest()
583 widget.SetDataStorage(m_DataStorage);
586 widget2.SetDataStorage(m_DataStorage);
591 widget.SetCurrentSelection({ m_Node1 });
592 CPPUNIT_ASSERT_EQUAL(2, widget.m_UpdateInfo);
593 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodePredicateChanged);
594 CPPUNIT_ASSERT_EQUAL(1, widget.m_OnDataStorageChanged);
595 CPPUNIT_ASSERT_EQUAL(2, widget.m_OnInternalSelectionChanged);
596 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeAddedToStorage);
597 CPPUNIT_ASSERT_EQUAL(0, widget.m_OnNodeRemovedFromStorage);
598 CPPUNIT_ASSERT_EQUAL(2, widget.m_ReviseSelectionChanged);
599 CPPUNIT_ASSERT_EQUAL(2, widget.m_AllowEmissionOfSelection);
600 CPPUNIT_ASSERT_EQUAL(1, widget.m_NewSelectionEmited);
604 CPPUNIT_ASSERT_EQUAL(2, widget2.m_UpdateInfo);
605 CPPUNIT_ASSERT_EQUAL(0, widget2.m_OnNodePredicateChanged);
606 CPPUNIT_ASSERT_EQUAL(1, widget2.m_OnDataStorageChanged);
607 CPPUNIT_ASSERT_EQUAL(2, widget2.m_OnInternalSelectionChanged);
608 CPPUNIT_ASSERT_EQUAL(0, widget2.m_OnNodeAddedToStorage);
609 CPPUNIT_ASSERT_EQUAL(0, widget2.m_OnNodeRemovedFromStorage);
610 CPPUNIT_ASSERT_EQUAL(2, widget2.m_ReviseSelectionChanged);
611 CPPUNIT_ASSERT_EQUAL(2, widget2.m_AllowEmissionOfSelection);
612 CPPUNIT_ASSERT_EQUAL(1, widget2.m_NewSelectionEmited);
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
static Pointer New(const FunctionType &_arg)
mitk::DataStorage::Pointer m_DataStorage
bool MITKQTWIDGETS_EXPORT EqualNodeSelections(const QList< mitk::DataNode::Pointer > &selection1, const QList< mitk::DataNode::Pointer > &selection2)
Test fixture for parameterized tests.
The ArgcHelperClass class is a convinience class to convert a vector of strings to the standard c++ a...
Class for nodes of the DataTree.