##// END OF EJS Templates
Merge branch 'feature/InitPlugin' into develop
Merge branch 'feature/InitPlugin' into develop

File last commit:

r71:fa55a3b11979
r72:538f97c38e97 merge
Show More
TestPluginManager.cpp
81 lines | 2.2 KiB | text/x-c | CppLexer
/ core / tests / Plugin / TestPluginManager.cpp
#include <Plugin/PluginManager.h>
#include <QObject>
#include <QtTest>
#include <QtDebug>
namespace {
/// Path for the tests
const auto TESTS_RESOURCES_PATH = QFileInfo{
QString{SCQCORE_TESTS_RESOURCES_PATH},
"Plugin/TestPluginManager"}.absoluteFilePath();
QString pluginDirPath(const QString &pluginDirName)
{
return QFileInfo{TESTS_RESOURCES_PATH, pluginDirName}.absoluteFilePath();
}
} // namespace
class TestPluginManager : public QObject {
Q_OBJECT
private slots:
/// Defines data for plugin loading
/// @sa testLoadPlugin()
void testLoadPlugin_data();
/// Tests plugin loading
void testLoadPlugin();
};
void TestPluginManager::testLoadPlugin_data()
{
// ////////////// //
// Test structure //
// ////////////// //
// Name of directory containing the plugins
QTest::addColumn<QString>("pluginDirName");
// Number of loaded plugins expected
QTest::addColumn<int>("nbPluginsLoaded");
// ////////// //
// Test cases //
// ////////// //
QTest::newRow("Valid plugin") << QStringLiteral("Test_ValidPlugin") << 1;
// Two different plugins
QTest::newRow("Valid plugins") << QStringLiteral("Test_ValidPlugins") << 2;
// Two plugins with the same name: we expect that only one is loaded
QTest::newRow("Duplicated plugins") << QStringLiteral("Test_DuplicatedPlugins") << 1;
QTest::newRow("Invalid plugin (not a DLL)") << QStringLiteral("Test_InvalidFileType") << 0;
QTest::newRow("Invalid plugin (not a SciQlop DLL)")
<< QStringLiteral("Test_NotSciqlopDll") << 0;
QTest::newRow("Invalid plugin (missing metadata)")
<< QStringLiteral("Test_MissingPluginMetadata") << 0;
}
void TestPluginManager::testLoadPlugin()
{
QFETCH(QString, pluginDirName);
QFETCH(int, nbPluginsLoaded);
// Generates plugin dir
auto pluginDir = QDir{pluginDirPath(pluginDirName)};
QVERIFY(pluginDir.exists());
// Load plugins
PluginManager pluginManager{};
pluginManager.loadPlugins(pluginDir);
// Check the number of plugins loaded
QCOMPARE(pluginManager.nbPluginsLoaded(), nbPluginsLoaded);
}
QTEST_MAIN(TestPluginManager)
#include "TestPluginManager.moc"