#include #include static std::uint8_t const SampleFontData[] = { 0, 0, 4, 4, 8, 8, 8, 8, 8, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 2, // Header '\n', 0, // First glyph 0, 4, 255, 255, // Unicode Table 0, '\n', 0, // Unicode entry }; TEST_CASE("TestFontReader.CanReadFontProperties") { auto font = monoformat::FontReader{std::as_bytes(std::span{SampleFontData})}; CHECK(font.supportsBackgroundColor() == false); CHECK(font.glyphCount() == 0); CHECK(font.m0() == 4); CHECK(font.m1() == 4); CHECK(font.bitCountW() == 8); CHECK(font.bitCountH() == 8); CHECK(font.bitCountX() == 8); CHECK(font.bitCountY() == 8); CHECK(font.bitCountD() == 8); CHECK(font.fontBoundingBoxWidth() == 1); CHECK(font.fontBoundingBoxHeight() == 2); CHECK(font.fontBoundingBoxXOffset() == 3); CHECK(font.fontBoundingBoxYOffset() == 4); CHECK(font.ascent() == 5); CHECK(font.descent() == 6); CHECK(font.ascentOfParentheses() == 7); CHECK(font.descentOfParentheses() == 8); CHECK(font.arrayOffsetUpperA() == 0); CHECK(font.arrayOffsetLowerA() == 0); CHECK(font.arrayOffset0x0100() == 2); CHECK(font.doesIgnoreUnknownGlyphs() == false); CHECK(font.lineHeight() == 3); } TEST_CASE("TestFontReader.CanHandleUnicodeNextIsZero") { auto font = monoformat::FontReader{std::as_bytes(std::span{SampleFontData})}; auto glyph = font.retrieveGlyphData(0x2603); REQUIRE(!!glyph == false); CHECK(glyph.error() == monoformat::LookupError::GlyphNotFound); }