aboutsummaryrefslogtreecommitdiff
path: root/src/test/ResourceManagerTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ResourceManagerTest.cpp')
-rw-r--r--src/test/ResourceManagerTest.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/test/ResourceManagerTest.cpp b/src/test/ResourceManagerTest.cpp
new file mode 100644
index 0000000..3fc9ebd
--- /dev/null
+++ b/src/test/ResourceManagerTest.cpp
@@ -0,0 +1,52 @@
+#include <gtest/gtest.h>
+
+#include <crepe/util/Log.h>
+#include <crepe/api/Config.h>
+#include <crepe/api/ResourceManager.h>
+
+using namespace std;
+using namespace crepe;
+using namespace testing;
+
+class ResourceManagerTest : public Test {
+public:
+ ResourceManager & resman = ResourceManager::get_instance();
+ Config & cfg = Config::get_instance();
+
+ void SetUp() override {
+ resman.clear();
+ }
+};
+
+TEST_F(ResourceManagerTest, Main) {
+ // NOTE: there is no way (that I know of) to ensure the last cache call
+ // allocates the new Sound instance in a different location than the first,
+ // so this test should be verified manually using these print statements and
+ // debug trace messages.
+ cfg.log.level = Log::Level::TRACE;
+
+ Asset path1 = "mwe/audio/sfx1.wav";
+ Asset path2 = "mwe/audio/sfx1.wav";
+ ASSERT_EQ(path1, path2);
+
+ Sound * ptr1 = nullptr;
+ Sound * ptr2 = nullptr;
+ {
+ Log::logf(Log::Level::DEBUG, "Get first sound (constructor call)");
+ Sound & sound = resman.cache<Sound>(path1);
+ ptr1 = &sound;
+ }
+ {
+ Log::logf(Log::Level::DEBUG, "Get same sound (NO constructor call)");
+ Sound & sound = resman.cache<Sound>(path2);
+ ptr2 = &sound;
+ }
+ EXPECT_EQ(ptr1, ptr2);
+
+ Log::logf(Log::Level::DEBUG, "Clear cache (destructor call)");
+ resman.clear();
+
+ Log::logf(Log::Level::DEBUG, "Get first sound again (constructor call)");
+ Sound & sound = resman.cache<Sound>(path1);
+}
+