فهرست منبع

Test generating text graphic strings.

Sam Jaffe 6 سال پیش
والد
کامیت
d297d954a3
1فایلهای تغییر یافته به همراه61 افزوده شده و 0 حذف شده
  1. 61 0
      engine/test/text_engine_test.cxx

+ 61 - 0
engine/test/text_engine_test.cxx

@@ -18,6 +18,10 @@ namespace env { namespace detail {
 }}
 #endif
 
+using testing::Eq;
+using testing::Le;
+using testing::SizeIs;
+
 struct TextEngineTest : testing::Test {
   void SetUp() override;
   void TearDown() override;
@@ -40,3 +44,60 @@ TEST_F(TextEngineTest, CanBuildFromFont) {
 TEST_F(TextEngineTest, ThrowsOnInvalidFile) {
   EXPECT_ANY_THROW(engine::text_engine("missing", manager));
 }
+
+struct CreateTextTest : TextEngineTest {
+  void SetUp() override;
+  void TearDown() override;
+
+  std::vector<graphics::object> out;
+  std::unique_ptr<engine::text_engine> engine;
+  engine::text_engine::cell const data{make_vector(0.f, 0.f),
+                                       make_vector(10.f, 20.f), "HELLO"};
+};
+
+void CreateTextTest::SetUp() {
+  TextEngineTest::SetUp();
+  engine = std::make_unique<engine::text_engine>("font", manager);
+}
+
+void CreateTextTest::TearDown() {
+  engine.reset();
+  TextEngineTest::TearDown();
+}
+
+TEST_F(CreateTextTest, TextGenIsNoThrow) {
+  EXPECT_NO_THROW(engine->create_text_cells(out, data));
+}
+
+TEST_F(CreateTextTest, GeneratesOneObjectPerChar) {
+  engine->create_text_cells(out, data);
+  EXPECT_THAT(out, SizeIs(5));
+}
+
+TEST_F(CreateTextTest, ShrinksOutVectorIfNeeded) {
+  out.resize(10, {{}, {}, cast<graphics::material>(1), {}});
+  engine->create_text_cells(out, data);
+  EXPECT_THAT(out, SizeIs(5));
+}
+
+TEST_F(CreateTextTest, ObjectsDoNotOverlap) {
+  engine->create_text_cells(out, data);
+  for (std::size_t i = 0; i < out.size() - 1; ++i) {
+    EXPECT_THAT(out[i].location.origin[0] + data.size[0],
+                Le(out[i + 1].location.origin[0]));
+  }
+}
+
+TEST_F(CreateTextTest, ObjectsAreOnSameHeight) {
+  engine->create_text_cells(out, data);
+  for (std::size_t i = 0; i < out.size(); ++i) {
+    EXPECT_THAT(out[i].location.origin[1], Eq(data.origin[1]));
+  }
+}
+
+TEST_F(CreateTextTest, EachObjectIsSizedByTheCell) {
+  engine->create_text_cells(out, data);
+  for (auto & obj : out) {
+    EXPECT_THAT(obj.location.size, Eq(data.size));
+  }
+}