1 /* 2 SPDX-FileCopyrightText: 2008 Manuel Breugelmans <mbr.nxi@gmail.com> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #ifndef KDEVELOP_SHELL_TEST_PROJECTCONTROLLER_H 8 #define KDEVELOP_SHELL_TEST_PROJECTCONTROLLER_H 9 10 #include <QObject> 11 #include <QDir> 12 13 #include "util/path.h" 14 15 #include <memory> 16 17 class QSignalSpy; 18 namespace KDevelop 19 { 20 class Core; 21 class IProject; 22 class Project; 23 class ProjectController; 24 } 25 26 class FakeFileManager; 27 28 class TestProjectController : public QObject 29 { 30 Q_OBJECT 31 private Q_SLOTS: 32 void initTestCase(); 33 void cleanupTestCase(); 34 void init(); 35 void cleanup(); 36 37 void openProject(); 38 void closeProject(); 39 void openCloseOpen(); 40 void openMultiple(); 41 void reopen(); 42 void reopenWhileLoading(); 43 44 void emptyProject(); 45 void singleFile(); 46 void singleDirectory(); 47 void fileInSubdirectory(); 48 void prettyFileName_data(); 49 void prettyFileName(); 50 51 private: 52 KDevelop::Path writeProjectConfig(const QString& name); 53 54 std::unique_ptr<QSignalSpy> createOpenedSpy(); 55 std::unique_ptr<QSignalSpy> createClosedSpy(); 56 std::unique_ptr<QSignalSpy> createClosingSpy(); 57 58 KDevelop::Project* assertProjectOpened(const QString& name); 59 void assertSpyCaughtProject(QSignalSpy* spy, KDevelop::IProject* proj); 60 void assertProjectClosed(KDevelop::IProject* proj); 61 void assertEmptyProjectModel(); 62 63 FakeFileManager* createFileManager(); 64 65 private: 66 KDevelop::Path m_projFilePath; 67 KDevelop::Core* m_core; 68 KDevelop::ProjectController* m_projCtrl; 69 QString m_projName; 70 QList<KDevelop::Path> m_tmpConfigs; 71 QDir m_scratchDir; 72 KDevelop::Path m_projFolder; 73 74 QList<FakeFileManager*> m_fileManagerGarbage; 75 }; 76 77 #endif // KDEVELOP_SHELL_TEST_PROJECTCONTROLLER_H 78