diff --git a/test/plugins.cpp b/test/plugins.cpp new file mode 100644 index 00000000..65351b3d --- /dev/null +++ b/test/plugins.cpp @@ -0,0 +1,40 @@ +#include "zeroerr/assert.h" +#include "zeroerr/unittest.h" + +#include "plugins/Plugins.h" + +#include + +using eve::plugins::Plugins; + +TEST_CASE("plugins.load.rejectsEmptyPath") { + Plugins plugins; + CHECK_THROWS((plugins.load(""), false)); + CHECK_EQ(plugins.isLoaded(""), false); +} + +TEST_CASE("plugins.load.rejectsMissingLibrary") { + Plugins plugins; + const std::string missing = "evengine-plugin-that-does-not-exist.dll"; + CHECK_THROWS((plugins.load(missing), false)); + CHECK_EQ(plugins.isLoaded(missing), false); +} + +TEST_CASE("plugins.load.closesLibraryWithoutEntrypoint") { + Plugins plugins; +#if defined(_WIN32) + const std::string library = "kernel32.dll"; +#elif defined(__APPLE__) + const std::string library = "/usr/lib/libSystem.B.dylib"; +#else + const std::string library = "libm.so.6"; +#endif + CHECK_THROWS((plugins.load(library), false)); + CHECK_EQ(plugins.isLoaded(library), false); + CHECK_EQ(plugins.unload(library), false); +} + +TEST_CASE("plugins.unload.unknownPathIsNoop") { + Plugins plugins; + CHECK_EQ(plugins.unload("not-loaded"), false); +}