File indexing completed on 2024-05-12 04:38:22
0001 /* 0002 SPDX-FileCopyrightText: 2008 Manuel Breugelmans <mbr.nxi@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KDEVELOP_SHELL_TEST_PROJECTCONTROLLER_H 0008 #define KDEVELOP_SHELL_TEST_PROJECTCONTROLLER_H 0009 0010 #include <QObject> 0011 #include <QDir> 0012 0013 #include "util/path.h" 0014 0015 #include <memory> 0016 0017 class QSignalSpy; 0018 namespace KDevelop 0019 { 0020 class Core; 0021 class IProject; 0022 class Project; 0023 class ProjectController; 0024 } 0025 0026 class FakeFileManager; 0027 0028 class TestProjectController : public QObject 0029 { 0030 Q_OBJECT 0031 private Q_SLOTS: 0032 void initTestCase(); 0033 void cleanupTestCase(); 0034 void init(); 0035 void cleanup(); 0036 0037 void openProject(); 0038 void closeProject(); 0039 void openCloseOpen(); 0040 void openMultiple(); 0041 void reopen(); 0042 void reopenWhileLoading(); 0043 0044 void emptyProject(); 0045 void singleFile(); 0046 void singleDirectory(); 0047 void fileInSubdirectory(); 0048 void prettyFileName_data(); 0049 void prettyFileName(); 0050 0051 private: 0052 KDevelop::Path writeProjectConfig(const QString& name); 0053 0054 std::unique_ptr<QSignalSpy> createOpenedSpy(); 0055 std::unique_ptr<QSignalSpy> createClosedSpy(); 0056 std::unique_ptr<QSignalSpy> createClosingSpy(); 0057 0058 KDevelop::Project* assertProjectOpened(const QString& name); 0059 void assertSpyCaughtProject(QSignalSpy* spy, KDevelop::IProject* proj); 0060 void assertProjectClosed(KDevelop::IProject* proj); 0061 void assertEmptyProjectModel(); 0062 0063 FakeFileManager* createFileManager(); 0064 0065 private: 0066 KDevelop::Path m_projFilePath; 0067 KDevelop::Core* m_core; 0068 KDevelop::ProjectController* m_projCtrl; 0069 QString m_projName; 0070 QList<KDevelop::Path> m_tmpConfigs; 0071 QDir m_scratchDir; 0072 KDevelop::Path m_projFolder; 0073 0074 QList<FakeFileManager*> m_fileManagerGarbage; 0075 }; 0076 0077 #endif // KDEVELOP_SHELL_TEST_PROJECTCONTROLLER_H