// // scene_test.cxx // engine-test // // Created by Sam Jaffe on 7/12/19. // Copyright © 2019 Sam Jaffe. All rights reserved. // #include #include "game/engine/entity.hpp" #include "game/engine/game_dispatch.hpp" #include "game/engine/scene.hpp" #include "mock_renderer.h" struct test_scene : engine::scene { using engine::scene::scene; void update(float) override { check_collisions(); } void render(graphics::renderer &) override {} void handle_key_event(engine::event::key_event) override {} void handle_mouse_event(engine::event::mouse_event) override {} void add_with(engine::collision_t t, engine::collidable & c) { colliders[t].push_back(&c); } void add_as(engine::collision_t t, engine::collidable & c) { collidables[t].push_back(&c); } }; struct mock_collidable : engine::collidable { mock_collidable(math::dim2::rectangle bounds) : engine::collidable({bounds, bounds, cast(1), {}}) {} MOCK_METHOD1(collide, void(engine::collidable const &)); }; class SceneTest : public testing::Test { protected: void SetUp() override; void TearDown() override; test_scene & scene() const { return *scene_; } engine::game_dispatch & game() const { return *dispatch_; } std::shared_ptr renderer_; std::shared_ptr dispatch_; std::shared_ptr scene_; }; void SceneTest::SetUp() { renderer_.reset(new stub_renderer); dispatch_.reset(new engine::game_dispatch(renderer_)); scene_.reset(new test_scene("test", dispatch_)); } void SceneTest::TearDown() { scene_.reset(); dispatch_.reset(); renderer_.reset(); }