diff options
Diffstat (limited to 'src/test/ResourceManagerTest.cpp')
| -rw-r--r-- | src/test/ResourceManagerTest.cpp | 52 | 
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); +} +  |