فهرست منبع

Add Unit Tests for injecting renderers with a string id.

Sam Jaffe 6 سال پیش
والد
کامیت
bb4e2d0f5f
1فایلهای تغییر یافته به همراه39 افزوده شده و 0 حذف شده
  1. 39 0
      graphics/test/renderer_test.cxx

+ 39 - 0
graphics/test/renderer_test.cxx

@@ -9,6 +9,7 @@
 #include <gmock/gmock.h>
 
 #include "../src/renderer_impl.hpp"
+#include "game/graphics/exception.h"
 #include "game/graphics/object.hpp"
 #include "game/graphics/renderer.hpp"
 #include "game/graphics/vertex.h"
@@ -155,3 +156,41 @@ TEST_F(BatchRendererTest, BatchLimitingCanSplitTheWrites) {
   renderer->draw(DemoObject(2));
   renderer->draw(DemoObject(2));
 }
+
+struct InjectRendererTest : testing::Test {
+protected:
+  void SetUp() override;
+  void TearDown() override;
+  mock_renderer_impl * mock;
+
+private:
+  graphics::renderer_impl_factory::scoped_binding scope_;
+};
+
+void InjectRendererTest::SetUp() {
+  mock = new mock_renderer_impl;
+  auto & factory = graphics::renderer_impl_factory::instance();
+  scope_ = factory.bind_scoped("mock", [this]() { return mock; });
+}
+
+void InjectRendererTest::TearDown() { delete mock; }
+
+TEST_F(InjectRendererTest, ThrowsOnRequestOfBlank) {
+  EXPECT_THROW(graphics::direct_renderer(""),
+               graphics::unmapped_enum<graphics::driver>);
+}
+
+TEST(UnboundRendererTest, ThrowsOnRequestOfUnboundDriver) {
+  EXPECT_THROW(graphics::direct_renderer("mock"),
+               graphics::unmapped_enum<graphics::driver>);
+}
+
+TEST_F(InjectRendererTest, SuccessfulConstructionWithBoundImpl) {
+  EXPECT_NO_THROW(graphics::direct_renderer("mock"));
+}
+
+TEST_F(InjectRendererTest, BoundImplIsSamePointed) {
+  graphics::direct_renderer renderer("mock");
+  EXPECT_CALL(*mock, draw(cast(1), math::matr4(), IsEmpty())).Times(1);
+  renderer.draw(cast(1), math::matr4(), {});
+}