File indexing completed on 2024-05-19 04:39:50
0001 /* 0002 SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "test_controller.h" 0008 0009 #include <QTextEdit> 0010 #include <QTest> 0011 #include <QDebug> 0012 #include <QStandardPaths> 0013 0014 #include <sublime/controller.h> 0015 #include <sublime/tooldocument.h> 0016 #include <sublime/view.h> 0017 #include <sublime/area.h> 0018 0019 using namespace Sublime; 0020 0021 void TestController::initTestCase() 0022 { 0023 QStandardPaths::setTestModeEnabled(true); 0024 } 0025 0026 void TestController::documentDeletion() 0027 { 0028 Controller controller; 0029 Document *doc = new ToolDocument(QStringLiteral("tool"), &controller, new SimpleToolWidgetFactory<QTextEdit>(QStringLiteral("tool"))); 0030 QCOMPARE(controller.documents().count(), 1); 0031 delete doc; 0032 QCOMPARE(controller.documents().count(), 0); 0033 } 0034 0035 void TestController::areaDeletion() 0036 { 0037 Controller controller; 0038 Document *doc = new ToolDocument(QStringLiteral("tool"), &controller, new SimpleToolWidgetFactory<QTextEdit>(QStringLiteral("tool"))); 0039 //create a view which does not belong to an area 0040 View* view1 = doc->createView(); 0041 Q_UNUSED(view1); 0042 //create an area and two views in it 0043 Area *area = new Area(&controller, QStringLiteral("MyArea")); 0044 controller.addDefaultArea(area); 0045 QCOMPARE(controller.defaultAreas().count(), 1); 0046 View* view2 = doc->createView(); 0047 view2->setObjectName(QStringLiteral("VIEW2")); 0048 area->addView(view2); 0049 View* view3 = doc->createView(); 0050 view3->setObjectName(QStringLiteral("VIEW3")); 0051 area->addView(view3); 0052 QCOMPARE(doc->views().count(), 3); 0053 QCOMPARE(area->views().count(), 2); 0054 0055 delete area; 0056 view2 = nullptr; view3= nullptr; 0057 0058 QEXPECT_FAIL("", "Fails because of delayed view deletion", Continue); 0059 QCOMPARE(doc->views().count(), 1); 0060 QCOMPARE(controller.defaultAreas().count(), 0); 0061 0062 QTest::qWait(100); // wait for deleteLaters 0063 qDebug() << "Deleting doc"; 0064 delete doc; 0065 QTest::qWait(100); // wait for deleteLaters 0066 qDebug() << "View2 & view3 are destructored at this point (but no earlier)."; 0067 } 0068 0069 void TestController::namedAreas() 0070 { 0071 Controller controller; 0072 Area *area1 = new Area(&controller, QStringLiteral("1")); 0073 controller.addDefaultArea(area1); 0074 Area *area2 = new Area(&controller, QStringLiteral("2")); 0075 controller.addDefaultArea(area2); 0076 0077 QCOMPARE(controller.defaultArea(QStringLiteral("1")), area1); 0078 QCOMPARE(controller.defaultArea(QStringLiteral("2")), area2); 0079 } 0080 0081 QTEST_MAIN(TestController) 0082 0083 #include "moc_test_controller.cpp"