Export of internal Abseil changes.
-- f9f068aa8a260dc576398e47b8e4540902e41358 by Derek Mauro <dmauro@google.com>: Fix test string with embedded NUL. Currently parses as octal. PiperOrigin-RevId: 237088193 -- d271ffdd3f450f817f6d30e98ff39d439aaf3a98 by Abseil Team <absl-team@google.com>: Make symbolizer examine any mapping with read+exec permission regardless of 'w' bit. PiperOrigin-RevId: 237056461 -- af315f8306d36a7367a452fd0b58cafdbf20719d by Abseil Team <absl-team@google.com>: Switch comments referencing base:: CondVar and Mutex to absl::. PiperOrigin-RevId: 236917884 -- c624d5d1c0bdb917bff5e651ba40599472f84e0e by Gennadiy Rozental <rogeeff@google.com>: Internal change PiperOrigin-RevId: 236898300 -- 3cdc82429af964846d1152f49148abc61d196a4b by Samuel Benzaquen <sbenza@google.com>: Make the `long double` overload if AbslHashValue a template to avoid invalid conversions with implicit operators. This overload was never meant to capture anything other than `long double` and any current caller to it that wasn't a `long double` is potentially a bug. In particular, any type with an implicit `bool` conversion is calling this overload instead of trying to find a hash<> specialization, thus causing pretty bad hash behavior. PiperOrigin-RevId: 236877073 GitOrigin-RevId: f9f068aa8a260dc576398e47b8e4540902e41358 Change-Id: If9cc008dd814f0ca06ed881f612c06575f1f7137
This commit is contained in:
parent
9fdf5e5b80
commit
febc5ee6a9
70 changed files with 483 additions and 410 deletions
|
|
@ -36,18 +36,19 @@ struct epair {
|
|||
|
||||
TEST(CEscape, EscapeAndUnescape) {
|
||||
const std::string inputs[] = {
|
||||
std::string("foo\nxx\r\b\0023"),
|
||||
std::string(""),
|
||||
std::string("abc"),
|
||||
std::string("\1chad_rules"),
|
||||
std::string("\1arnar_drools"),
|
||||
std::string("xxxx\r\t'\"\\"),
|
||||
std::string("\0xx\0", 4),
|
||||
std::string("\x01\x31"),
|
||||
std::string("abc\xb\x42\141bc"),
|
||||
std::string("123\1\x31\x32\x33"),
|
||||
std::string("\xc1\xca\x1b\x62\x19o\xcc\x04"),
|
||||
std::string("\\\"\xe8\xb0\xb7\xe6\xad\x8c\\\" is Google\\\'s Chinese name"),
|
||||
std::string("foo\nxx\r\b\0023"),
|
||||
std::string(""),
|
||||
std::string("abc"),
|
||||
std::string("\1chad_rules"),
|
||||
std::string("\1arnar_drools"),
|
||||
std::string("xxxx\r\t'\"\\"),
|
||||
std::string("\0xx\0", 4),
|
||||
std::string("\x01\x31"),
|
||||
std::string("abc\xb\x42\141bc"),
|
||||
std::string("123\1\x31\x32\x33"),
|
||||
std::string("\xc1\xca\x1b\x62\x19o\xcc\x04"),
|
||||
std::string(
|
||||
"\\\"\xe8\xb0\xb7\xe6\xad\x8c\\\" is Google\\\'s Chinese name"),
|
||||
};
|
||||
// Do this twice, once for octal escapes and once for hex escapes.
|
||||
for (int kind = 0; kind < 4; kind++) {
|
||||
|
|
@ -159,15 +160,14 @@ TEST(Unescape, BasicFunction) {
|
|||
EXPECT_TRUE(absl::CUnescape(val.escaped, &out));
|
||||
EXPECT_EQ(out, val.unescaped);
|
||||
}
|
||||
std::string bad[] =
|
||||
{"\\u1", // too short
|
||||
"\\U1", // too short
|
||||
"\\Uffffff", // exceeds 0x10ffff (largest Unicode)
|
||||
"\\U00110000", // exceeds 0x10ffff (largest Unicode)
|
||||
"\\uD835", // surrogate character (D800-DFFF)
|
||||
"\\U0000DD04", // surrogate character (D800-DFFF)
|
||||
"\\777", // exceeds 0xff
|
||||
"\\xABCD"}; // exceeds 0xff
|
||||
std::string bad[] = {"\\u1", // too short
|
||||
"\\U1", // too short
|
||||
"\\Uffffff", // exceeds 0x10ffff (largest Unicode)
|
||||
"\\U00110000", // exceeds 0x10ffff (largest Unicode)
|
||||
"\\uD835", // surrogate character (D800-DFFF)
|
||||
"\\U0000DD04", // surrogate character (D800-DFFF)
|
||||
"\\777", // exceeds 0xff
|
||||
"\\xABCD"}; // exceeds 0xff
|
||||
for (const std::string& e : bad) {
|
||||
std::string error;
|
||||
std::string out;
|
||||
|
|
@ -258,9 +258,11 @@ TEST_F(CUnescapeTest, UnescapesMultipleOctalNulls) {
|
|||
// All escapes, including newlines and null escapes, should have been
|
||||
// converted to the equivalent characters.
|
||||
EXPECT_EQ(std::string("\0\n"
|
||||
"0\n"
|
||||
"\0\n"
|
||||
"\0", 7), result_string_);
|
||||
"0\n"
|
||||
"\0\n"
|
||||
"\0",
|
||||
7),
|
||||
result_string_);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -268,17 +270,21 @@ TEST_F(CUnescapeTest, UnescapesMultipleHexNulls) {
|
|||
std::string original_string(kStringWithMultipleHexNulls);
|
||||
EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
|
||||
EXPECT_EQ(std::string("\0\n"
|
||||
"0\n"
|
||||
"\0\n"
|
||||
"\0", 7), result_string_);
|
||||
"0\n"
|
||||
"\0\n"
|
||||
"\0",
|
||||
7),
|
||||
result_string_);
|
||||
}
|
||||
|
||||
TEST_F(CUnescapeTest, UnescapesMultipleUnicodeNulls) {
|
||||
std::string original_string(kStringWithMultipleUnicodeNulls);
|
||||
EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
|
||||
EXPECT_EQ(std::string("\0\n"
|
||||
"0\n"
|
||||
"\0", 5), result_string_);
|
||||
"0\n"
|
||||
"\0",
|
||||
5),
|
||||
result_string_);
|
||||
}
|
||||
|
||||
static struct {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue