mirror of
https://github.com/whoahq/whoa.git
synced 2026-11-01 12:27:02 +03:00
feat(gx): handle remaining codes in GxuDetermineQuotedCode
This commit is contained in:
2 files changed
+318
-11
No files matched your search
@@ -70,4 +70,141 @@ TEST_CASE("GxuDetermineQuotedCode", "[gx]") {
|
||||
REQUIRE(quotedCode == CODE_NEWLINE);
|
||||
REQUIRE(advance == 2);
|
||||
}
|
||||
|
||||
SECTION("recognizes colors") {
|
||||
const char* str = "test1|c00123456test2|rtest3";
|
||||
uint32_t flags = 0x0;
|
||||
|
||||
int32_t advance;
|
||||
uint32_t wide;
|
||||
QUOTEDCODE quotedCode;
|
||||
CImVector color;
|
||||
|
||||
// |c00123456
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, &color, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_COLORON);
|
||||
REQUIRE(advance == 10);
|
||||
REQUIRE(color.value == 0xFF123456);
|
||||
str += advance;
|
||||
|
||||
// |r
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_COLORRESTORE);
|
||||
REQUIRE(advance == 2);
|
||||
}
|
||||
|
||||
SECTION("recognizes colors with uppercase codes") {
|
||||
const char* str = "test1|C00123456test2|Rtest3";
|
||||
uint32_t flags = 0x0;
|
||||
|
||||
int32_t advance;
|
||||
uint32_t wide;
|
||||
QUOTEDCODE quotedCode;
|
||||
CImVector color;
|
||||
|
||||
// |C00123456
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, &color, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_COLORON);
|
||||
REQUIRE(advance == 10);
|
||||
REQUIRE(color.value == 0xFF123456);
|
||||
str += advance;
|
||||
|
||||
// |R
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_COLORRESTORE);
|
||||
REQUIRE(advance == 2);
|
||||
}
|
||||
|
||||
SECTION("ignores colors when FLAG_IGNORE_COLORS is set") {
|
||||
const char* str = "test1|c00123456test2|rtest3";
|
||||
uint32_t flags = FLAG_IGNORE_COLORS;
|
||||
|
||||
int32_t advance;
|
||||
uint32_t wide;
|
||||
QUOTEDCODE quotedCode;
|
||||
|
||||
// |c00123456
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_INVALIDCODE);
|
||||
|
||||
// |r
|
||||
str += 15;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_INVALIDCODE);
|
||||
}
|
||||
|
||||
SECTION("recognizes hyperlinks") {
|
||||
const char* str = "test1|Hspell:2061:0|h[Flash Heal]|htest3";
|
||||
uint32_t flags = 0x0;
|
||||
|
||||
int32_t advance;
|
||||
uint32_t wide;
|
||||
QUOTEDCODE quotedCode;
|
||||
|
||||
// |Hspell:2061:0|h
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_HYPERLINKSTART);
|
||||
REQUIRE(advance == 16);
|
||||
str += advance;
|
||||
|
||||
// |h
|
||||
str += 12;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_HYPERLINKSTOP);
|
||||
REQUIRE(advance == 2);
|
||||
}
|
||||
|
||||
SECTION("ignores hyperlinks when FLAG_IGNORE_HYPERLINKS is set") {
|
||||
const char* str = "test1|Hspell:2061:0|h[Flash Heal]|htest3";
|
||||
uint32_t flags = FLAG_IGNORE_HYPERLINKS;
|
||||
|
||||
int32_t advance;
|
||||
uint32_t wide;
|
||||
QUOTEDCODE quotedCode;
|
||||
|
||||
// |Hspell:2061:0|h
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_INVALIDCODE);
|
||||
|
||||
// |h
|
||||
str += 28;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_INVALIDCODE);
|
||||
}
|
||||
|
||||
SECTION("recognizes textures") {
|
||||
const char* str = "test1|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_1.blp:0|ttest3";
|
||||
uint32_t flags = 0x0;
|
||||
|
||||
int32_t advance;
|
||||
uint32_t wide;
|
||||
QUOTEDCODE quotedCode;
|
||||
|
||||
// |TInterface\\TargetingFrame\\UI-RaidTargetingIcon_1.blp:0|t
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_TEXTURESTART);
|
||||
REQUIRE(advance == 57);
|
||||
}
|
||||
|
||||
SECTION("ignores textures when FLAG_IGNORE_TEXTURES is set") {
|
||||
const char* str = "test1|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_1.blp:0|ttest3";
|
||||
uint32_t flags = FLAG_IGNORE_TEXTURES;
|
||||
|
||||
int32_t advance;
|
||||
uint32_t wide;
|
||||
QUOTEDCODE quotedCode;
|
||||
|
||||
// |TInterface\\TargetingFrame\\UI-RaidTargetingIcon_1.blp:0|t
|
||||
str += 5;
|
||||
quotedCode = GxuDetermineQuotedCode(str, advance, nullptr, flags, wide);
|
||||
REQUIRE(quotedCode == CODE_INVALIDCODE);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user