#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/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::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, update, (), (override)); }; crepe::OptionalRef<crepe::BehaviorScript> behaviorscript; crepe::OptionalRef<MyScript> script; virtual void SetUp(); };