@@ -0,0 +1,81 | |||
|
1 | #include <Plugin/PluginManager.h> | |
|
2 | ||
|
3 | #include <QObject> | |
|
4 | #include <QtTest> | |
|
5 | ||
|
6 | #include <QtDebug> | |
|
7 | ||
|
8 | namespace { | |
|
9 | ||
|
10 | /// Path for the tests | |
|
11 | const auto TESTS_RESOURCES_PATH = QFileInfo{ | |
|
12 | QString{SCQCORE_TESTS_RESOURCES_PATH}, | |
|
13 | "Plugin/TestPluginManager"}.absoluteFilePath(); | |
|
14 | ||
|
15 | QString pluginDirPath(const QString &pluginDirName) | |
|
16 | { | |
|
17 | return QFileInfo{TESTS_RESOURCES_PATH, pluginDirName}.absoluteFilePath(); | |
|
18 | } | |
|
19 | ||
|
20 | } // namespace | |
|
21 | ||
|
22 | class TestPluginManager : public QObject { | |
|
23 | Q_OBJECT | |
|
24 | private slots: | |
|
25 | /// Defines data for plugin loading | |
|
26 | /// @sa testLoadPlugin() | |
|
27 | void testLoadPlugin_data(); | |
|
28 | ||
|
29 | /// Tests plugin loading | |
|
30 | void testLoadPlugin(); | |
|
31 | }; | |
|
32 | ||
|
33 | void TestPluginManager::testLoadPlugin_data() | |
|
34 | { | |
|
35 | // ////////////// // | |
|
36 | // Test structure // | |
|
37 | // ////////////// // | |
|
38 | ||
|
39 | // Name of directory containing the plugins | |
|
40 | QTest::addColumn<QString>("pluginDirName"); | |
|
41 | // Number of loaded plugins expected | |
|
42 | QTest::addColumn<int>("nbPluginsLoaded"); | |
|
43 | ||
|
44 | // ////////// // | |
|
45 | // Test cases // | |
|
46 | // ////////// // | |
|
47 | ||
|
48 | QTest::newRow("Valid plugin") << QStringLiteral("Test_ValidPlugin") << 1; | |
|
49 | ||
|
50 | // Two different plugins | |
|
51 | QTest::newRow("Valid plugins") << QStringLiteral("Test_ValidPlugins") << 2; | |
|
52 | ||
|
53 | // Two plugins with the same name: we expect that only one is loaded | |
|
54 | QTest::newRow("Duplicated plugins") << QStringLiteral("Test_DuplicatedPlugins") << 1; | |
|
55 | ||
|
56 | QTest::newRow("Invalid plugin (not a DLL)") << QStringLiteral("Test_InvalidFileType") << 0; | |
|
57 | QTest::newRow("Invalid plugin (not a SciQlop DLL)") | |
|
58 | << QStringLiteral("Test_NotSciqlopDll") << 0; | |
|
59 | QTest::newRow("Invalid plugin (missing metadata)") | |
|
60 | << QStringLiteral("Test_MissingPluginMetadata") << 0; | |
|
61 | } | |
|
62 | ||
|
63 | void TestPluginManager::testLoadPlugin() | |
|
64 | { | |
|
65 | QFETCH(QString, pluginDirName); | |
|
66 | QFETCH(int, nbPluginsLoaded); | |
|
67 | ||
|
68 | // Generates plugin dir | |
|
69 | auto pluginDir = QDir{pluginDirPath(pluginDirName)}; | |
|
70 | QVERIFY(pluginDir.exists()); | |
|
71 | ||
|
72 | // Load plugins | |
|
73 | PluginManager pluginManager{}; | |
|
74 | pluginManager.loadPlugins(pluginDir); | |
|
75 | ||
|
76 | // Check the number of plugins loaded | |
|
77 | QCOMPARE(pluginManager.nbPluginsLoaded(), nbPluginsLoaded); | |
|
78 | } | |
|
79 | ||
|
80 | QTEST_MAIN(TestPluginManager) | |
|
81 | #include "TestPluginManager.moc" |
General Comments 0
You need to be logged in to leave comments.
Login now