diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/OptionalRefTest.cpp | 24 | ||||
| -rw-r--r-- | src/test/ResourceManagerTest.cpp | 36 | ||||
| -rw-r--r-- | src/test/main.cpp | 15 | 
3 files changed, 69 insertions, 6 deletions
diff --git a/src/test/OptionalRefTest.cpp b/src/test/OptionalRefTest.cpp index 65bd816..219ccca 100644 --- a/src/test/OptionalRefTest.cpp +++ b/src/test/OptionalRefTest.cpp @@ -9,8 +9,30 @@ using namespace testing;  TEST(OptionalRefTest, Explicit) {  	string value = "foo";  	OptionalRef<string> ref; +	EXPECT_FALSE(ref); +	ASSERT_THROW(ref.get(), runtime_error); + +	ref.set(value); +	EXPECT_TRUE(ref); +	ASSERT_NO_THROW(ref.get()); + +	ref.clear(); +	EXPECT_FALSE(ref); +	ASSERT_THROW(ref.get(), runtime_error); +} + +TEST(OptionalRefTest, Implicit) { +	string value = "foo"; +	OptionalRef<string> ref = value; +	EXPECT_TRUE(ref); +	ASSERT_NO_THROW(ref.get()); -	EXPECT_FALSE(bool(ref)); +	ref.clear(); +	EXPECT_FALSE(ref);  	ASSERT_THROW(ref.get(), runtime_error); + +	ref = value; +	EXPECT_TRUE(ref); +	ASSERT_NO_THROW(ref.get());  } diff --git a/src/test/ResourceManagerTest.cpp b/src/test/ResourceManagerTest.cpp index 42b6b5d..5d1ae7a 100644 --- a/src/test/ResourceManagerTest.cpp +++ b/src/test/ResourceManagerTest.cpp @@ -1,5 +1,7 @@  #include <gtest/gtest.h> +#include <crepe/util/Log.h> +#include <crepe/api/Config.h>  #include <crepe/api/ResourceManager.h>  using namespace std; @@ -8,14 +10,42 @@ using namespace testing;  class ResourceManagerTest : public Test {  public: -	ResourceManager & manager = ResourceManager::get_instance(); +	ResourceManager & resman = ResourceManager::get_instance(); +	Config & cfg = Config::get_instance();  	void SetUp() override { -		this->manager.clear(); +		cfg.log.level = Log::Level::TRACE; +		resman.clear();  	}  };  TEST_F(ResourceManagerTest, Main) { -	Sound & sound = this->manager.cache<Sound>("mwe/audio/sfx1.wav"); +	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); + +	// NOTE: there is no way (that I know of) to ensure the above statement +	// allocates the new Sound instance in a different location than the first, +	// so this test was verified using the above print statements.  } diff --git a/src/test/main.cpp b/src/test/main.cpp index 241015d..19a8d6e 100644 --- a/src/test/main.cpp +++ b/src/test/main.cpp @@ -5,11 +5,22 @@  using namespace crepe;  using namespace testing; +class GlobalConfigReset : public EmptyTestEventListener { +public: +	Config & cfg = Config::get_instance(); + +	// This function is called before each test +	void OnTestStart(const TestInfo &) override { +		cfg.log.level = Log::Level::WARNING; +	} +}; +  int main(int argc, char ** argv) {  	InitGoogleTest(&argc, argv); -	auto & cfg = Config::get_instance(); -	cfg.log.level = Log::Level::ERROR; +	UnitTest & ut = *UnitTest::GetInstance(); +	ut.listeners().Append(new GlobalConfigReset);  	return RUN_ALL_TESTS();  } +  |