Преглед на файлове

Add tests for constructing a text_engine.

Sam Jaffe преди 6 години
родител
ревизия
5e9dc6c62e
променени са 4 файла, в които са добавени 69 реда и са изтрити 0 реда
  1. 10 0
      engine/engine.xcodeproj/project.pbxproj
  2. BIN
      engine/test/data/images/fonts/font.bmp
  3. 17 0
      engine/test/data/images/fonts/font.json
  4. 42 0
      engine/test/text_engine_test.cxx

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

@@ -18,6 +18,9 @@
 		CD62FD402293746900376440 /* serial.cxx in Sources */ = {isa = PBXBuildFile; fileRef = CD62FD3E2293746900376440 /* serial.cxx */; settings = {COMPILER_FLAGS = "-fvisibility=default"; }; };
 		CD7E87792295FAB400D877FE /* libgameutils.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CD7E87782295FAB400D877FE /* libgameutils.dylib */; };
 		CD8064EF22D21EB500B9B4E4 /* libgraphics.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CD62D8452251A94C0023219A /* libgraphics.dylib */; };
+		CD8064F422D2284500B9B4E4 /* data in Resources */ = {isa = PBXBuildFile; fileRef = CD8064F322D2284500B9B4E4 /* data */; };
+		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 */; };
 		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"; }; };
@@ -82,6 +85,8 @@
 		CD62FD3922936E9C00376440 /* libjsoncpp.1.8.4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libjsoncpp.1.8.4.dylib; path = ../../../../../../../opt/local/lib/libjsoncpp.1.8.4.dylib; sourceTree = "<group>"; };
 		CD62FD3E2293746900376440 /* serial.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = serial.cxx; sourceTree = "<group>"; };
 		CD7E87782295FAB400D877FE /* libgameutils.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; path = libgameutils.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
+		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>"; };
 		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>"; };
@@ -96,6 +101,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				CD8064F722D22BF500B9B4E4 /* libgameutils.dylib in Frameworks */,
 				CD8064EF22D21EB500B9B4E4 /* libgraphics.dylib in Frameworks */,
 				CDED9C5222A4130700AE5CE5 /* libjsoncpp.1.8.4.dylib in Frameworks */,
 				CD62FCD622904A9B00376440 /* GoogleMock.framework in Frameworks */,
@@ -150,8 +156,10 @@
 		CDA34D8522515CA9008036A7 /* test */ = {
 			isa = PBXGroup;
 			children = (
+				CD8064F322D2284500B9B4E4 /* data */,
 				CDED9C4C22A4112200AE5CE5 /* mock_renderer.h */,
 				CDED9C5022A4114F00AE5CE5 /* serial_test.cxx */,
+				CD8064F522D228D300B9B4E4 /* text_engine_test.cxx */,
 			);
 			path = test;
 			sourceTree = "<group>";
@@ -321,6 +329,7 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				CD8064F422D2284500B9B4E4 /* data in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -351,6 +360,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				CD8064F622D228D300B9B4E4 /* text_engine_test.cxx in Sources */,
 				CDED9C5122A4114F00AE5CE5 /* serial_test.cxx in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;

BIN
engine/test/data/images/fonts/font.bmp


+ 17 - 0
engine/test/data/images/fonts/font.json

@@ -0,0 +1,17 @@
+{
+  "type":"monospace",
+  "cells":[8, 8],
+  "glyph_size":[10, 20],
+  "file":"font.bmp",
+  "default":"?",
+  "glyphs":[
+    [" ", "!", "\"", "#", "$", "%", "&", "'"],
+    ["(", ")", "*", "+", ",", "-", ".", "\\"],
+    ["0", "1", "2", "3", "4", "5", "6", "7"],
+    ["8", "9", ":", ";", "<", "=", ">", "?"],
+    ["@", "A", "B", "C", "D", "E", "F", "G"],
+    ["H", "I", "J", "K", "L", "M", "N", "O"],
+    ["P", "Q", "R", "S", "T", "U", "V", "W"],
+    ["X", "Y", "Z", "[", "/", "]", "^", "_"]
+  ]
+}

+ 42 - 0
engine/test/text_engine_test.cxx

@@ -0,0 +1,42 @@
+//
+//  text_engine_test.cxx
+//  engine-test
+//
+//  Created by Sam Jaffe on 7/7/19.
+//  Copyright © 2019 Sam Jaffe. All rights reserved.
+//
+
+#include <gmock/gmock.h>
+
+#include "game/engine/text_engine.hpp"
+
+#include "mock_renderer.h"
+
+#ifdef __APPLE__
+namespace env { namespace detail {
+  extern void bundle(std::string const &);
+}}
+#endif
+
+struct TextEngineTest : testing::Test {
+  void SetUp() override;
+  void TearDown() override;
+  std::shared_ptr<graphics::manager> manager;
+};
+
+void TextEngineTest::SetUp() {
+#ifdef __APPLE__
+  env::detail::bundle("leumasjaffe.engine-test");
+#endif
+  manager.reset(new stub_manager_impl);
+}
+
+void TextEngineTest::TearDown() { manager.reset(); }
+
+TEST_F(TextEngineTest, CanBuildFromFont) {
+  EXPECT_NO_THROW(engine::text_engine("font", manager));
+}
+
+TEST_F(TextEngineTest, ThrowsOnInvalidFile) {
+  EXPECT_ANY_THROW(engine::text_engine("missing", manager));
+}