aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-12-07 15:29:33 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-12-07 15:29:33 +0100
commitf19f37ae3eff84161f86e62a26fbd8b68f8f91a9 (patch)
tree492ab107b375e51eef084b7be0f608b7f4fae319 /src/test
parentfdb4c99e139a264d4e15e6913a3756fc6cccb2f2 (diff)
make SaveManager no longer a singleton
Diffstat (limited to 'src/test')
-rw-r--r--src/test/CMakeLists.txt1
-rw-r--r--src/test/SaveManagerTest.cpp41
2 files changed, 42 insertions, 0 deletions
diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
index c9cbac5..734e3ee 100644
--- a/src/test/CMakeLists.txt
+++ b/src/test/CMakeLists.txt
@@ -17,4 +17,5 @@ target_sources(test_main PUBLIC
ScriptEventTest.cpp
ScriptSceneTest.cpp
Profiling.cpp
+ SaveManagerTest.cpp
)
diff --git a/src/test/SaveManagerTest.cpp b/src/test/SaveManagerTest.cpp
new file mode 100644
index 0000000..a1efc33
--- /dev/null
+++ b/src/test/SaveManagerTest.cpp
@@ -0,0 +1,41 @@
+#include <gtest/gtest.h>
+
+#include <crepe/manager/SaveManager.h>
+#include <crepe/facade/DB.h>
+#include <crepe/ValueBroker.h>
+
+using namespace std;
+using namespace crepe;
+using namespace testing;
+
+class SaveManagerTest : public Test {
+ Mediator m;
+ class TestSaveManager : public SaveManager {
+ using SaveManager::SaveManager;
+
+ // in-memory database for testing
+ DB db{};
+ virtual DB & get_db() override { return this->db; }
+ };
+
+public:
+ TestSaveManager mgr{m};
+};
+
+TEST_F(SaveManagerTest, ReadWrite) {
+ ASSERT_FALSE(mgr.has("foo"));
+ mgr.set<string>("foo", "bar");
+ ASSERT_TRUE(mgr.has("foo"));
+
+ ValueBroker value = mgr.get<string>("foo");
+ EXPECT_EQ(value.get(), "bar");
+}
+
+TEST_F(SaveManagerTest, DefaultValue) {
+ ValueBroker value = mgr.get<int>("foo", 3);
+
+ ASSERT_EQ(value.get(), 3);
+ value.set(5);
+ ASSERT_EQ(value.get(), 5);
+}
+