| 291 | } |
| 292 | |
| 293 | void EditorTest::testSubtree() |
| 294 | { |
| 295 | QString file_xml = readFile(":/crossdoor_with_subtree.xml"); |
| 296 | main_win->on_actionClear_triggered(); |
| 297 | main_win->loadFromXML( file_xml ); |
| 298 | |
| 299 | auto main_tree = getAbstractTree("MainTree"); |
| 300 | auto closed_tree = getAbstractTree("DoorClosed"); |
| 301 | |
| 302 | auto subtree_abs_node = main_tree.findFirstNode("DoorClosed"); |
| 303 | auto data_model = subtree_abs_node->graphic_node->nodeDataModel(); |
| 304 | auto subtree_model = dynamic_cast<SubtreeNodeModel*>(data_model); |
| 305 | |
| 306 | QTest::mouseClick( subtree_model->expandButton(), Qt::LeftButton ); |
| 307 | |
| 308 | QAbstractButton *button_lock = main_win->findChild<QAbstractButton*>("buttonLock"); |
| 309 | QVERIFY2(button_lock != nullptr, "Can't find the object [buttonLock]"); |
| 310 | |
| 311 | button_lock->setChecked(false); |
| 312 | |
| 313 | QTreeWidget* treeWidget = main_win->findChild<QTreeWidget*>("paletteTreeWidget"); |
| 314 | QVERIFY2(treeWidget != nullptr, "Can't find the object [paletteTreeWidget]"); |
| 315 | |
| 316 | auto subtree_items = treeWidget->findItems("DoorClosed", Qt::MatchExactly | Qt::MatchRecursive); |
| 317 | sleepAndRefresh( 500 ); |
| 318 | |
| 319 | QCOMPARE(subtree_items.size(), 1); |
| 320 | sleepAndRefresh( 500 ); |
| 321 | |
| 322 | auto sidepanel_editor = main_win->findChild<SidepanelEditor*>("SidepanelEditor"); |
| 323 | sidepanel_editor->onRemoveModel("DoorClosed"); |
| 324 | sleepAndRefresh( 500 ); |
| 325 | |
| 326 | auto tree_after_remove = getAbstractTree("MainTree"); |
| 327 | auto fallback_node = tree_after_remove.findFirstNode("root_Fallback"); |
| 328 | |
| 329 | QCOMPARE(fallback_node->children_index.size(), size_t(3) ); |
| 330 | QVERIFY2( main_win->getTabByName("DoorClosed") == nullptr, "Tab DoorClosed not deleted"); |
| 331 | sleepAndRefresh( 500 ); |
| 332 | |
| 333 | //--------------------------------------- |
| 334 | // create again the subtree |
| 335 | |
| 336 | auto closed_sequence_node = tree_after_remove.findFirstNode("door_closed_sequence"); |
| 337 | auto container = main_win->currentTabInfo(); |
| 338 | // This must fail and create a MessageBox |
| 339 | testMessageBox(1000, TEST_LOCATION(), [&]() |
| 340 | { |
| 341 | container->createSubtree( *closed_sequence_node->graphic_node, "MainTree" ); |
| 342 | }); |
| 343 | |
| 344 | container->createSubtree( *closed_sequence_node->graphic_node, "DoorClosed" ); |
| 345 | sleepAndRefresh( 500 ); |
| 346 | |
| 347 | auto new_main_tree = getAbstractTree("MainTree"); |
| 348 | auto new_closed_tree = getAbstractTree("DoorClosed"); |
| 349 | |
| 350 | bool is_same = (main_tree == new_main_tree); |
nothing calls this directly
no test coverage detected