Files

139 lines
3.4 KiB
C++
Raw Permalink Normal View History

2026-01-21 16:54:32 -05:00
#include <gtest/gtest.h>
#include "app_lifecycle.h"
#include "plugin_manager.h"
#include "plugin_registry.h"
2026-01-21 16:54:32 -05:00
2026-04-07 14:05:04 -04:00
static void clearPluginState()
{
PluginManager::terminateAll();
PluginManager::registry().clear();
}
2026-04-07 14:05:04 -04:00
int main(int argc, char** argv)
{
2026-01-21 16:54:32 -05:00
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
class AppLifecycleTest : public ::testing::Test {
protected:
2026-04-07 14:05:04 -04:00
void SetUp() override
{
clearPluginState();
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
void TearDown() override
{
clearPluginState();
2026-01-21 16:54:32 -05:00
}
};
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, Init_DoesNotThrow)
{
2026-01-21 16:54:32 -05:00
char* argv[] = {(char*)"test"};
2026-04-07 14:05:04 -04:00
EXPECT_NO_THROW(AppLifecycle::init(1, argv));
AppLifecycle::cleanup();
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, SetPluginsDir_SetsDirectory)
{
2026-01-21 16:54:32 -05:00
const char* testDir = "/test/plugins";
2026-03-25 21:09:59 -04:00
PluginManager::setPluginsDir(testDir);
2026-04-07 14:05:04 -04:00
ASSERT_EQ(PluginManager::registry().pluginsDirs().size(), 1u);
EXPECT_EQ(PluginManager::registry().pluginsDirs()[0], testDir);
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, SetPluginsDir_ClearsExisting)
{
2026-03-25 21:09:59 -04:00
PluginManager::addPluginsDir("/dir1");
PluginManager::addPluginsDir("/dir2");
2026-04-07 14:05:04 -04:00
ASSERT_EQ(PluginManager::registry().pluginsDirs().size(), 2u);
2026-03-25 21:09:59 -04:00
PluginManager::setPluginsDir("/new_dir");
2026-04-07 14:05:04 -04:00
ASSERT_EQ(PluginManager::registry().pluginsDirs().size(), 1u);
EXPECT_EQ(PluginManager::registry().pluginsDirs()[0], "/new_dir");
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, AddPluginsDir_AppendsDirectory)
{
2026-03-25 21:09:59 -04:00
PluginManager::addPluginsDir("/dir1");
PluginManager::addPluginsDir("/dir2");
2026-04-07 14:05:04 -04:00
ASSERT_EQ(PluginManager::registry().pluginsDirs().size(), 2u);
EXPECT_EQ(PluginManager::registry().pluginsDirs()[0], "/dir1");
EXPECT_EQ(PluginManager::registry().pluginsDirs()[1], "/dir2");
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, AddPluginsDir_NoDuplicates)
{
2026-03-25 21:09:59 -04:00
PluginManager::addPluginsDir("/test");
PluginManager::addPluginsDir("/test");
2026-04-07 14:05:04 -04:00
EXPECT_EQ(PluginManager::registry().pluginsDirs().size(), 1u);
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, Cleanup_ClearsGlobals)
{
PluginManager::registry().registerPlugin("test", "/path/to/test");
2026-03-25 21:09:59 -04:00
PluginManager::addPluginsDir("/test");
clearPluginState();
2026-03-25 21:09:59 -04:00
2026-04-07 14:05:04 -04:00
EXPECT_TRUE(PluginManager::registry().loadedPluginNames().empty());
EXPECT_TRUE(PluginManager::registry().knownPluginNames().empty());
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, ProcessEvents_HandlesNoApp)
{
2026-03-25 21:09:59 -04:00
char* argv[] = {(char*)"test"};
AppLifecycle::init(1, argv);
AppLifecycle::cleanup();
2026-01-21 16:54:32 -05:00
EXPECT_NO_THROW(AppLifecycle::processEvents());
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, ProcessEvents_DoesNotThrowAfterInit)
{
2026-01-21 16:54:32 -05:00
char* argv[] = {(char*)"test"};
AppLifecycle::init(1, argv);
2026-03-25 21:09:59 -04:00
2026-01-21 16:54:32 -05:00
EXPECT_NO_THROW(AppLifecycle::processEvents());
2026-04-07 14:05:04 -04:00
AppLifecycle::cleanup();
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, Start_UsesCustomPluginsDirs)
{
2026-01-21 16:54:32 -05:00
char* argv[] = {(char*)"test"};
AppLifecycle::init(1, argv);
2026-03-25 21:09:59 -04:00
PluginManager::setPluginsDir("/custom/plugins");
2026-01-21 16:54:32 -05:00
AppLifecycle::start();
2026-03-25 21:09:59 -04:00
2026-04-07 14:05:04 -04:00
ASSERT_EQ(PluginManager::registry().pluginsDirs().size(), 1u);
EXPECT_EQ(PluginManager::registry().pluginsDirs()[0], "/custom/plugins");
AppLifecycle::cleanup();
2026-01-21 16:54:32 -05:00
}
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, Exec_ReturnsNegativeWhenNotInitialized)
{
int result = AppLifecycle::exec();
EXPECT_EQ(result, -1);
}
2026-01-21 16:54:32 -05:00
2026-04-07 14:05:04 -04:00
TEST_F(AppLifecycleTest, Exec_ReturnsNegativeAfterCleanup)
{
2026-03-25 21:09:59 -04:00
char* argv[] = {(char*)"test"};
AppLifecycle::init(1, argv);
AppLifecycle::cleanup();
2026-01-21 16:54:32 -05:00
int result = AppLifecycle::exec();
2026-03-25 21:09:59 -04:00
2026-01-21 16:54:32 -05:00
EXPECT_EQ(result, -1);
}