diff --git a/core/libs/tests/GuestFont.cpp b/core/libs/tests/GuestFont.cpp index 147e09012c..94b9b51b49 100644 --- a/core/libs/tests/GuestFont.cpp +++ b/core/libs/tests/GuestFont.cpp @@ -87,6 +87,18 @@ static std::int32_t APS5_VABI ParseText(FontTextSource* source, void** order, Fo return 1; } +static std::int32_t APS5_VABI ParseLine(FontTextSource* source, void** order, FontTextParseResult* result) { + auto* parsed = static_cast(source->textObject); + *order = const_cast(parsed->text + parsed->at); + if (parsed->text[parsed->at] == '\n') { + result->Terminate.terminateCode = '\n'; + return 0; + } + result->FontCode.font = parsed->font; + result->FontCode.code = static_cast(parsed->text[parsed->at++]); + return 1; +} + struct ParsedCodes { const std::uint32_t* codes; std::size_t count; @@ -116,6 +128,16 @@ static void CheckTextCodes(const FontMemory* memory, FontHandle font) { FontTextCharacter* characters = sceFontStringRefersTextCharacters(string, &count); Require(characters != nullptr && count == 3); Require(sceFontStringGetWritingForm(string) == 0x12); + Require(sceFontStringGetTerminateCode(string) == 0 && sceFontStringGetTerminateOrder(string) == parsed.text + 3); + ParsedText line{"AV\nA", 0, font}; + FontTextSource lineSource{}; + Require(sceFontTextSourceInit(&lineSource, line.text, 4, ParseLine, &line) == SCE_FONT_OK); + FontString lineString = nullptr; + Require(sceFontCreateString(memory, &lineSource, nullptr, &lineString) == SCE_FONT_OK && lineString != nullptr); + std::uint32_t lineCount = 0; + Require(sceFontStringRefersTextCharacters(lineString, &lineCount) != nullptr && lineCount == 2); + Require(sceFontStringGetTerminateCode(lineString) == '\n' && sceFontStringGetTerminateOrder(lineString) == line.text + 2); + Require(sceFontDestroyString(&lineString) == SCE_FONT_OK); FontString rtlString = nullptr; Require(sceFontTextSourceSetWritingForm(&source, 0x11) == SCE_FONT_OK && sceFontCreateString(memory, &source, nullptr, &rtlString) == SCE_FONT_OK); Require(sceFontStringGetWritingForm(rtlString) == 0x11);