瀏覽代碼

Add skeleton to test game_dispatch.

Sam Jaffe 6 年之前
父節點
當前提交
4dac7f25b6
共有 3 個文件被更改,包括 72 次插入0 次删除
  1. 4 0
      engine/engine.xcodeproj/project.pbxproj
  2. 53 0
      engine/test/game_dispatch_test.cxx
  3. 15 0
      engine/test/mock_renderer.h

+ 4 - 0
engine/engine.xcodeproj/project.pbxproj

@@ -22,6 +22,7 @@
 		CD8064F622D228D300B9B4E4 /* text_engine_test.cxx in Sources */ = {isa = PBXBuildFile; fileRef = CD8064F522D228D300B9B4E4 /* text_engine_test.cxx */; };
 		CD8064F722D22BF500B9B4E4 /* libgameutils.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CD7E87782295FAB400D877FE /* libgameutils.dylib */; };
 		CD8064F922D2984400B9B4E4 /* fps_counter_test.cxx in Sources */ = {isa = PBXBuildFile; fileRef = CD8064F822D2984400B9B4E4 /* fps_counter_test.cxx */; };
+		CD8064FB22D69CAE00B9B4E4 /* game_dispatch_test.cxx in Sources */ = {isa = PBXBuildFile; fileRef = CD8064FA22D69CAE00B9B4E4 /* game_dispatch_test.cxx */; };
 		CDB1F8C81D7A312B00700C6B /* game_dispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDB1F8C61D7A312B00700C6B /* game_dispatch.cpp */; settings = {COMPILER_FLAGS = "-fvisibility=default"; }; };
 		CDB1F8CC1D7A319A00700C6B /* scene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDB1F8CA1D7A319A00700C6B /* scene.cpp */; settings = {COMPILER_FLAGS = "-fvisibility=default"; }; };
 		CDB1F8D21D7A32A300700C6B /* events.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDB1F8D01D7A32A300700C6B /* events.cpp */; settings = {COMPILER_FLAGS = "-fvisibility=default"; }; };
@@ -89,6 +90,7 @@
 		CD8064F322D2284500B9B4E4 /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; path = data; sourceTree = "<group>"; };
 		CD8064F522D228D300B9B4E4 /* text_engine_test.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = text_engine_test.cxx; sourceTree = "<group>"; };
 		CD8064F822D2984400B9B4E4 /* fps_counter_test.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fps_counter_test.cxx; sourceTree = "<group>"; };
+		CD8064FA22D69CAE00B9B4E4 /* game_dispatch_test.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = game_dispatch_test.cxx; sourceTree = "<group>"; };
 		CDA34D8422515C99008036A7 /* game */ = {isa = PBXFileReference; lastKnownFileType = folder; name = game; path = include/game; sourceTree = "<group>"; };
 		CDB1F8AE1D7A30CD00700C6B /* libengine.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libengine.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
 		CDB1F8C61D7A312B00700C6B /* game_dispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = game_dispatch.cpp; sourceTree = "<group>"; };
@@ -162,6 +164,7 @@
 				CDED9C4C22A4112200AE5CE5 /* mock_renderer.h */,
 				CDED9C5022A4114F00AE5CE5 /* serial_test.cxx */,
 				CD8064F522D228D300B9B4E4 /* text_engine_test.cxx */,
+				CD8064FA22D69CAE00B9B4E4 /* game_dispatch_test.cxx */,
 				CD8064F822D2984400B9B4E4 /* fps_counter_test.cxx */,
 			);
 			path = test;
@@ -366,6 +369,7 @@
 				CD8064F922D2984400B9B4E4 /* fps_counter_test.cxx in Sources */,
 				CD8064F622D228D300B9B4E4 /* text_engine_test.cxx in Sources */,
 				CDED9C5122A4114F00AE5CE5 /* serial_test.cxx in Sources */,
+				CD8064FB22D69CAE00B9B4E4 /* game_dispatch_test.cxx in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 53 - 0
engine/test/game_dispatch_test.cxx

@@ -0,0 +1,53 @@
+//
+//  game_dispatch_test.cxx
+//  engine-test
+//
+//  Created by Sam Jaffe on 7/10/19.
+//  Copyright © 2019 Sam Jaffe. All rights reserved.
+//
+
+#include <memory>
+
+#include <gmock/gmock.h>
+
+#include "game/engine/events.hpp"
+#include "game/engine/game_dispatch.hpp"
+#include "game/engine/scene.hpp"
+#include "game/graphics/renderer.hpp"
+
+#include "mock_renderer.h"
+
+struct mock_scene : engine::scene {
+  mock_scene(std::shared_ptr<engine::game_dispatch> game)
+      : engine::scene("mock", game) {}
+  MOCK_METHOD1(update, void(float));
+  MOCK_METHOD1(render, void(graphics::renderer &));
+  MOCK_METHOD1(handle_key_event, void(engine::event::key_event));
+  MOCK_METHOD1(handle_mouse_event, void(engine::event::mouse_event));
+};
+
+class GameDispatchTest : public testing::Test {
+protected:
+  void SetUp() override;
+  void TearDown() override;
+
+  mock_scene & scene() const { return *scene_; }
+  engine::game_dispatch & game() const { return *dispatch_; }
+
+private:
+  std::shared_ptr<stub_renderer> renderer_;
+  std::shared_ptr<engine::game_dispatch> dispatch_;
+  std::shared_ptr<mock_scene> scene_;
+};
+
+void GameDispatchTest::SetUp() {
+  renderer_.reset(new stub_renderer);
+  dispatch_.reset(new engine::game_dispatch(renderer_));
+  scene_.reset(new mock_scene(dispatch_));
+}
+
+void GameDispatchTest::TearDown() {
+  scene_.reset();
+  dispatch_.reset();
+  renderer_.reset();
+}

+ 15 - 0
engine/test/mock_renderer.h

@@ -37,3 +37,18 @@ struct stub_manager_impl : graphics::manager {
     return {0, dims};
   }
 };
+
+class stub_renderer : public graphics::renderer {
+public:
+  std::shared_ptr<graphics::manager const> manager() const override {
+    return manager_;
+  }
+  void draw(graphics::object const &) override {}
+  void draw(identity<graphics::material>, math::matr4 const &,
+            std::vector<graphics::vertex> const &) override{};
+  void clear() override {}
+  void flush() override {}
+
+private:
+  std::shared_ptr<graphics::manager const> manager_{new stub_manager_impl};
+};