From bc6ff5f45041d6c751aa47981b1e259a21fb78ce Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Mon, 25 Jan 2016 19:46:18 +0300 Subject: [PATCH] Add basic font test --- tests/CMakeLists.txt | 6 +++ tests/test_font.cc | 102 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 tests/test_font.cc diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1d9d76a..5f5a820 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -26,6 +26,12 @@ IF(SDL2PP_WITH_IMAGE) ) ENDIF(SDL2PP_WITH_IMAGE) +IF(SDL2PP_WITH_TTF) + SET(CLI_TESTS ${CLI_TESTS} + test_font + ) +ENDIF(SDL2PP_WITH_TTF) + # disable self-move warning: it's deliberately used in tests INCLUDE(AppendCXXFlagIfSupported) APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-self-move CMAKE_CXX_FLAGS) diff --git a/tests/test_font.cc b/tests/test_font.cc new file mode 100644 index 0000000..9b5a058 --- /dev/null +++ b/tests/test_font.cc @@ -0,0 +1,102 @@ +#include + +#include +#include + +#include "testing.h" + +using namespace SDL2pp; + +BEGIN_TEST(int, char*[]) + SDLTTF ttf; + Font font(TESTDATA_DIR "/Vera.ttf", 30); + + { + // Move tests + TTF_Font* ptr = font.Get(); + + EXPECT_TRUE(ptr != nullptr); + + Font font1(std::move(font)); + EXPECT_TRUE(font1.Get() == ptr); + EXPECT_TRUE(font.Get() == nullptr); + + std::swap(font, font1); + EXPECT_TRUE(font.Get() == ptr); + EXPECT_TRUE(font1.Get() == nullptr); + + font = std::move(font); // self-move + EXPECT_TRUE(font.Get() == ptr); + } + + { + // Font style + EXPECT_EQUAL(font.GetStyle(), TTF_STYLE_NORMAL); + + font.SetStyle(TTF_STYLE_BOLD | TTF_STYLE_ITALIC | TTF_STYLE_UNDERLINE | TTF_STYLE_STRIKETHROUGH); + EXPECT_EQUAL(font.GetStyle(), TTF_STYLE_BOLD | TTF_STYLE_ITALIC | TTF_STYLE_UNDERLINE | TTF_STYLE_STRIKETHROUGH); + + font.SetStyle(); + EXPECT_EQUAL(font.GetStyle(), TTF_STYLE_NORMAL); + } + + { + // Outline + EXPECT_EQUAL(font.GetOutline(), 0); + + font.SetOutline(2); + EXPECT_EQUAL(font.GetOutline(), 2); + + font.SetOutline(); + EXPECT_EQUAL(font.GetOutline(), 0); + } + + { + // Hinting + EXPECT_EQUAL(font.GetHinting(), TTF_HINTING_NORMAL); + + font.SetHinting(TTF_HINTING_LIGHT); + EXPECT_EQUAL(font.GetHinting(), TTF_HINTING_LIGHT); + + font.SetHinting(); + EXPECT_EQUAL(font.GetHinting(), TTF_HINTING_NORMAL); + } + + { + // Kerning + EXPECT_EQUAL(font.GetKerning(), true); + + font.SetKerning(false); + EXPECT_EQUAL(font.GetKerning(), false); + + font.SetKerning(); + EXPECT_EQUAL(font.GetKerning(), true); + } + + { + // Metrics + EXPECT_EQUAL(font.GetHeight(), 36); + EXPECT_EQUAL(font.GetAscent(), 28); + EXPECT_EQUAL(font.GetDescent(), -7); + EXPECT_EQUAL(font.GetLineSkip(), 35); + } + + { + // Faces + EXPECT_EQUAL(font.GetNumFaces(), 1); + } + + { + // Fixed width + EXPECT_EQUAL(font.IsFixedWidth(), false); + } + + { + // Names + auto family = font.GetFamilyName(); + auto style = font.GetStyleName(); + + EXPECT_TRUE(family && *family == "Bitstream Vera Sans"); + EXPECT_TRUE(style && *style == "Roman"); + } +END_TEST()