diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-12 22:43:32 +0100 | 
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-12 22:43:32 +0100 | 
| commit | 3e94ecb3dac5003a3d58210ed1a4d1f1cb2083d1 (patch) | |
| tree | 67c3e1c122652ae09e58e7de49db668e252c4730 /src/test | |
| parent | f2509e89c02894ebd3ad992324eb300103621d26 (diff) | |
add script unit tests + major refactoring
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | src/test/PhysicsTest.cpp | 4 | ||||
| -rw-r--r-- | src/test/ScriptTest.cpp | 73 | ||||
| -rw-r--r-- | src/test/audio.cpp | 10 | ||||
| -rw-r--r-- | src/test/dummy.cpp | 3 | ||||
| -rw-r--r-- | src/test/main.cpp | 15 | 
6 files changed, 94 insertions, 17 deletions
| diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 0e4eaed..9d303bc 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -1,6 +1,6 @@  target_sources(test_main PUBLIC -	dummy.cpp -	# audio.cpp -	PhysicsTest.cpp +	main.cpp +	# PhysicsTest.cpp +	ScriptTest.cpp  ) diff --git a/src/test/PhysicsTest.cpp b/src/test/PhysicsTest.cpp index 5385962..538d244 100644 --- a/src/test/PhysicsTest.cpp +++ b/src/test/PhysicsTest.cpp @@ -11,9 +11,11 @@ using namespace std::chrono_literals;  using namespace crepe;  class PhysicsTest : public ::testing::Test { -protected: +public:  	GameObject * game_object; +	ComponentManager component_manager;  	PhysicsSystem physics_system; +  	void SetUp() override {  		ComponentManager & mgr = ComponentManager::get_instance();  		std::vector<std::reference_wrapper<Transform>> transforms diff --git a/src/test/ScriptTest.cpp b/src/test/ScriptTest.cpp new file mode 100644 index 0000000..ea49a35 --- /dev/null +++ b/src/test/ScriptTest.cpp @@ -0,0 +1,73 @@ +#include <gtest/gtest.h> + +// stupid hack to allow access to private/protected members under test +#define private public +#define protected public + +#include <crepe/ComponentManager.h> +#include <crepe/system/ScriptSystem.h> +#include <crepe/api/BehaviorScript.h> +#include <crepe/api/Script.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/Vector2.h> + +using namespace std; +using namespace crepe; +using namespace testing; + +class ScriptTest : public Test { +public: +	ComponentManager component_manager {}; +	ScriptSystem system { component_manager }; + +	class MyScript : public Script { +		// NOTE: default (private) visibility of init and update shouldn't cause +		// issues! +		void init() { this->init_count++; } +		void update() { this->update_count++; } + +	public: +		unsigned init_count = 0; +		unsigned update_count = 0; +	}; + +	BehaviorScript * behaviorscript_ref = nullptr; +	MyScript * script_ref = nullptr; + +	void SetUp() override { +		auto & mgr = this->component_manager; +		GameObject & entity = mgr.new_object("name"); +		BehaviorScript & component = entity.add_component<BehaviorScript>(); + +		this->behaviorscript_ref = &component; +		EXPECT_EQ(this->behaviorscript_ref->script.get(), nullptr); +		component.set_script<MyScript>(); +		ASSERT_NE(this->behaviorscript_ref->script.get(), nullptr); + +		this->script_ref = (MyScript *) this->behaviorscript_ref->script.get(); +		ASSERT_NE(this->script_ref, nullptr); +	} +}; + +TEST_F(ScriptTest, Default) { +	EXPECT_EQ(0, this->script_ref->init_count); +	EXPECT_EQ(0, this->script_ref->update_count); +} + +TEST_F(ScriptTest, UpdateOnce) { +	EXPECT_EQ(0, this->script_ref->init_count); +	EXPECT_EQ(0, this->script_ref->update_count); + +	this->system.update(); +	EXPECT_EQ(1, this->script_ref->init_count); +	EXPECT_EQ(1, this->script_ref->update_count); +} + +TEST_F(ScriptTest, ListScripts) { +	size_t script_count = 0; +	for (auto & _ : this->system.get_scripts()) { +		script_count++; +	} +	ASSERT_EQ(1, script_count); +} + diff --git a/src/test/audio.cpp b/src/test/audio.cpp deleted file mode 100644 index d6ff689..0000000 --- a/src/test/audio.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include <gtest/gtest.h> - -using namespace std; -using namespace std::chrono_literals; - -// using namespace crepe; - -// TODO: mock internal audio class - -TEST(audio, play) { ASSERT_TRUE(true); } diff --git a/src/test/dummy.cpp b/src/test/dummy.cpp deleted file mode 100644 index a00a9c6..0000000 --- a/src/test/dummy.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include <gtest/gtest.h> - -TEST(dummy, foo) { ASSERT_TRUE(1); } diff --git a/src/test/main.cpp b/src/test/main.cpp new file mode 100644 index 0000000..6830a01 --- /dev/null +++ b/src/test/main.cpp @@ -0,0 +1,15 @@ +#include <crepe/api/Config.h> + +#include <gtest/gtest.h> + +using namespace crepe; +using namespace testing; + +int main(int argc, char **argv) { +  InitGoogleTest(&argc, argv); + +	auto & cfg = Config::get_instance(); +	cfg.log.level = LogLevel::ERROR; + +  return RUN_ALL_TESTS(); +} |