mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-29 12:15:39 +00:00
Merge pull request #11707 from milescoviello/test/font-terminate-code
test(libSceFont): cover the terminate code and position a font string records
This commit is contained in:
1 file changed
+22
@@ -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<ParsedText*>(source->textObject);
|
||||
*order = const_cast<char*>(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<unsigned char>(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);
|
||||
|
||||
Reference in new issue
Block a user