File indexing completed on 2024-05-19 04:39:50
0001 /* 0002 SPDX-FileCopyrightText: 2006-2007 Alexander Dymo <adymo@kdevelop.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "test_areawalker.h" 0008 0009 #include <QStringList> 0010 #include <QTest> 0011 #include <QStandardPaths> 0012 0013 #include <sublime/area.h> 0014 #include <sublime/view.h> 0015 #include <sublime/controller.h> 0016 #include <sublime/urldocument.h> 0017 0018 #include "areaprinter.h" 0019 0020 using namespace Sublime; 0021 0022 struct AreaStopper { 0023 explicit AreaStopper(const QString& stopAt): m_stopAt(stopAt) {} 0024 Area::WalkerMode operator()(AreaIndex *index) 0025 { 0026 for (View* view : qAsConst(index->views())) { 0027 list << view->objectName(); 0028 if (view->objectName() == m_stopAt) 0029 return Area::StopWalker; 0030 } 0031 return Area::ContinueWalker; 0032 } 0033 Area::WalkerMode operator()(View *view, Sublime::Position) 0034 { 0035 list << view->objectName(); 0036 if (view->objectName() == m_stopAt) 0037 return Area::StopWalker; 0038 return Area::ContinueWalker; 0039 } 0040 QStringList list; 0041 QString m_stopAt; 0042 }; 0043 0044 void TestAreaWalker::initTestCase() 0045 { 0046 QStandardPaths::setTestModeEnabled(true); 0047 } 0048 0049 void TestAreaWalker::viewWalkerModes() 0050 { 0051 auto *controller = new Controller(this); 0052 Document *doc = new UrlDocument(controller, QUrl::fromLocalFile(QStringLiteral("~/foo.cpp"))); 0053 Area *area = new Area(controller, QStringLiteral("Area")); 0054 View *view1 = doc->createView(); 0055 view1->setObjectName(QStringLiteral("1")); 0056 area->addView(view1); 0057 View *view2 = doc->createView(); 0058 view2->setObjectName(QStringLiteral("2")); 0059 area->addView(view2, view1, Qt::Vertical); 0060 View *view3 = doc->createView(); 0061 view3->setObjectName(QStringLiteral("3")); 0062 area->addView(view3, view1, Qt::Vertical); 0063 View *view4 = doc->createView(); 0064 view4->setObjectName(QStringLiteral("4")); 0065 area->addView(view4, view1, Qt::Vertical); 0066 0067 AreaViewsPrinter p; 0068 area->walkViews(p, area->rootIndex()); 0069 QCOMPARE(p.result, QStringLiteral("\n\ 0070 [ vertical splitter ]\n\ 0071 [ vertical splitter ]\n\ 0072 [ vertical splitter ]\n\ 0073 [ 1 ]\n\ 0074 [ 4 ]\n\ 0075 [ 3 ]\n\ 0076 [ 2 ]\n\ 0077 ")); 0078 0079 AreaStopper stopper(QStringLiteral("1")); 0080 area->walkViews(stopper, area->rootIndex()); 0081 QCOMPARE(stopper.list.join(QLatin1Char(' ')), QStringLiteral("1")); 0082 0083 AreaStopper stopper2(QStringLiteral("2")); 0084 area->walkViews(stopper2, area->rootIndex()); 0085 QCOMPARE(stopper2.list.join(QLatin1Char(' ')), QStringLiteral("1 4 3 2")); 0086 0087 AreaStopper stopper3(QStringLiteral("3")); 0088 area->walkViews(stopper3, area->rootIndex()); 0089 QCOMPARE(stopper3.list.join(QLatin1Char(' ')), QStringLiteral("1 4 3")); 0090 0091 AreaStopper noStopper(QStringLiteral("X")); 0092 area->walkViews(noStopper, area->rootIndex()); 0093 QCOMPARE(noStopper.list.join(QLatin1Char(' ')), QStringLiteral("1 4 3 2")); 0094 0095 delete area; 0096 delete doc; 0097 delete controller; 0098 } 0099 0100 void TestAreaWalker::toolViewWalkerModes() 0101 { 0102 auto *controller = new Controller(this); 0103 Document *doc = new UrlDocument(controller, QUrl::fromLocalFile(QStringLiteral("~/foo.cpp"))); 0104 Area *area = new Area(controller, QStringLiteral("Area")); 0105 View *view = doc->createView(); 0106 view->setObjectName(QStringLiteral("1")); 0107 area->addToolView(view, Sublime::Left); 0108 view = doc->createView(); 0109 view->setObjectName(QStringLiteral("2")); 0110 area->addToolView(view, Sublime::Left); 0111 view = doc->createView(); 0112 view->setObjectName(QStringLiteral("3")); 0113 area->addToolView(view, Sublime::Bottom); 0114 0115 AreaStopper stopper1(QStringLiteral("1")); 0116 area->walkToolViews(stopper1, Sublime::AllPositions); 0117 QCOMPARE(stopper1.list.join(QLatin1Char(' ')), QStringLiteral("1")); 0118 0119 AreaStopper stopper2(QStringLiteral("2")); 0120 area->walkToolViews(stopper2, Sublime::AllPositions); 0121 QCOMPARE(stopper2.list.join(QLatin1Char(' ')), QStringLiteral("1 2")); 0122 0123 AreaStopper stopper3(QStringLiteral("3")); 0124 area->walkToolViews(stopper3, Sublime::AllPositions); 0125 QCOMPARE(stopper3.list.join(QLatin1Char(' ')), QStringLiteral("1 2 3")); 0126 0127 AreaStopper noStopper(QStringLiteral("X")); 0128 area->walkToolViews(noStopper, Sublime::AllPositions); 0129 QCOMPARE(noStopper.list.join(QLatin1Char(' ')), QStringLiteral("1 2 3")); 0130 0131 delete area; 0132 delete doc; 0133 delete controller; 0134 } 0135 0136 QTEST_MAIN(TestAreaWalker) 0137 0138 #include "moc_test_areawalker.cpp"