Makes gtest print string literals correctly when it contains \x escape sequences. Contributed by Yair Chuchem.
This commit is contained in:
@@ -658,6 +658,20 @@ TEST(PrintStringTest, StringInStdNamespace) {
|
||||
Print(str));
|
||||
}
|
||||
|
||||
TEST(PrintStringTest, StringAmbiguousHex) {
|
||||
// "\x6BANANA" is ambiguous, it can be interpreted as starting with either of:
|
||||
// '\x6', '\x6B', or '\x6BA'.
|
||||
|
||||
// a hex escaping sequence following by a decimal digit
|
||||
EXPECT_EQ("\"0\\x12\" \"3\"", Print(::std::string("0\x12" "3")));
|
||||
// a hex escaping sequence following by a hex digit (lower-case)
|
||||
EXPECT_EQ("\"mm\\x6\" \"bananas\"", Print(::std::string("mm\x6" "bananas")));
|
||||
// a hex escaping sequence following by a hex digit (upper-case)
|
||||
EXPECT_EQ("\"NOM\\x6\" \"BANANA\"", Print(::std::string("NOM\x6" "BANANA")));
|
||||
// a hex escaping sequence following by a non-xdigit
|
||||
EXPECT_EQ("\"!\\x5-!\"", Print(::std::string("!\x5-!")));
|
||||
}
|
||||
|
||||
// Tests printing ::wstring and ::std::wstring.
|
||||
|
||||
#if GTEST_HAS_GLOBAL_WSTRING
|
||||
@@ -680,6 +694,16 @@ TEST(PrintWideStringTest, StringInStdNamespace) {
|
||||
"\\xD3\\x576\\x8D3\\xC74D a\\0\"",
|
||||
Print(str));
|
||||
}
|
||||
|
||||
TEST(PrintWideStringTest, StringAmbiguousHex) {
|
||||
// same for wide strings.
|
||||
EXPECT_EQ("L\"0\\x12\" L\"3\"", Print(::std::wstring(L"0\x12" L"3")));
|
||||
EXPECT_EQ("L\"mm\\x6\" L\"bananas\"",
|
||||
Print(::std::wstring(L"mm\x6" L"bananas")));
|
||||
EXPECT_EQ("L\"NOM\\x6\" L\"BANANA\"",
|
||||
Print(::std::wstring(L"NOM\x6" L"BANANA")));
|
||||
EXPECT_EQ("L\"!\\x5-!\"", Print(::std::wstring(L"!\x5-!")));
|
||||
}
|
||||
#endif // GTEST_HAS_STD_WSTRING
|
||||
|
||||
// Tests printing types that support generic streaming (i.e. streaming
|
||||
|
||||
Reference in New Issue
Block a user