scene_test.cxx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // scene_test.cxx
  3. // engine-test
  4. //
  5. // Created by Sam Jaffe on 7/12/19.
  6. // Copyright © 2019 Sam Jaffe. All rights reserved.
  7. //
  8. #include <gmock/gmock.h>
  9. #include "game/engine/entity.hpp"
  10. #include "game/engine/game_dispatch.hpp"
  11. #include "game/engine/scene.hpp"
  12. #include "mock_renderer.h"
  13. struct test_scene : engine::scene {
  14. using engine::scene::scene;
  15. void update(float) override { check_collisions(); }
  16. void render(graphics::renderer &) override {}
  17. void handle_key_event(engine::event::key_event) override {}
  18. void handle_mouse_event(engine::event::mouse_event) override {}
  19. void add_with(engine::collision_t t, engine::collidable & c) {
  20. colliders[t].push_back(&c);
  21. }
  22. void add_as(engine::collision_t t, engine::collidable & c) {
  23. collidables[t].push_back(&c);
  24. }
  25. };
  26. struct mock_collidable : engine::collidable {
  27. mock_collidable(math::dim2::rectangle bounds)
  28. : engine::collidable({bounds, bounds, cast<graphics::material>(1), {}}) {}
  29. MOCK_METHOD1(collide, void(engine::collidable const &));
  30. };
  31. class SceneTest : public testing::Test {
  32. protected:
  33. void SetUp() override;
  34. void TearDown() override;
  35. test_scene & scene() const { return *scene_; }
  36. engine::game_dispatch & game() const { return *dispatch_; }
  37. std::shared_ptr<stub_renderer> renderer_;
  38. std::shared_ptr<engine::game_dispatch> dispatch_;
  39. std::shared_ptr<test_scene> scene_;
  40. };
  41. void SceneTest::SetUp() {
  42. renderer_.reset(new stub_renderer);
  43. dispatch_.reset(new engine::game_dispatch(renderer_));
  44. scene_.reset(new test_scene("test", dispatch_));
  45. }
  46. void SceneTest::TearDown() {
  47. scene_.reset();
  48. dispatch_.reset();
  49. renderer_.reset();
  50. }