#include #include #include "../pluginloader.h" char *pluginPath; class PluginLoaderTest : public ::testing::Test { protected: void SetUp() override { loader = new PluginLoader(pluginPath); } void TearDown() override { delete loader; } PluginLoader *loader = nullptr; }; TEST_F(PluginLoaderTest, InterfaceTest) { // Ensure plugin loads EXPECT_TRUE(loader->load()) << "plugin: " << pluginPath << '\n' << qUtf8Printable(loader->errorString()); // Ensure plugin has metadata const auto metadata = loader->metaData()["MetaData"].toObject(); EXPECT_TRUE(metadata.contains("name")); EXPECT_FALSE(metadata["name"].toString().isEmpty()); EXPECT_TRUE(metadata.contains("schemes")); EXPECT_FALSE(metadata["schemes"].toArray().isEmpty()); // check available schemes EXPECT_FALSE(loader->schemes().isEmpty()); // check interface cast EXPECT_FALSE(loader->interface() == nullptr); } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); pluginPath = argv[argc - 1]; return RUN_ALL_TESTS(); }