aboutsummaryrefslogtreecommitdiff
path: root/src/test/ScriptTest.h
blob: 8637df05aef4d08b3178ddfe631d2460ad881beb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#pragma once

#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include <crepe/api/BehaviorScript.h>
#include <crepe/api/Script.h>
#include <crepe/manager/ComponentManager.h>
#include <crepe/manager/EventManager.h>
#include <crepe/manager/LoopTimerManager.h>
#include <crepe/manager/SaveManager.h>
#include <crepe/system/ScriptSystem.h>

class ScriptTest : public testing::Test {
protected:
	crepe::Mediator mediator;
	static constexpr const char * OBJ_NAME = "foo";

public:
	crepe::ComponentManager component_manager{mediator};
	crepe::ScriptSystem system{mediator};
	crepe::EventManager event_mgr{mediator};
	crepe::LoopTimerManager loop_timer{mediator};
	crepe::SaveManager save_manager{mediator};
	crepe::GameObject entity = component_manager.new_object(OBJ_NAME);

	class MyScript : public crepe::Script {
		// NOTE: explicitly stating `public:` is not required on actual scripts

	public:
		MOCK_METHOD(void, init, (), (override));
		MOCK_METHOD(void, fixed_update, (crepe::duration_t), (override));
		MOCK_METHOD(void, frame_update, (crepe::duration_t), (override));
	};

	crepe::OptionalRef<crepe::BehaviorScript> behaviorscript;
	crepe::OptionalRef<MyScript> script;

	virtual void SetUp();
};