From d237297cebc10c8d3d5f28498c8ef83902221de8 Mon Sep 17 00:00:00 2001 From: Gennadiy Civil Date: Tue, 9 Jan 2018 22:46:17 -0500 Subject: code merge, cleanups --- googletest/test/gtest-printers_test.cc | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'googletest/test/gtest-printers_test.cc') diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc index 2a6c017e..70ac9c55 100644 --- a/googletest/test/gtest-printers_test.cc +++ b/googletest/test/gtest-printers_test.cc @@ -52,13 +52,13 @@ // hash_map and hash_set are available under Visual C++, or on Linux. #if GTEST_HAS_UNORDERED_MAP_ -# include // NOLINT +# include // NOLINT #elif GTEST_HAS_HASH_MAP_ # include // NOLINT #endif // GTEST_HAS_HASH_MAP_ #if GTEST_HAS_UNORDERED_SET_ -# include // NOLINT +# include // NOLINT #elif GTEST_HAS_HASH_SET_ # include // NOLINT #endif // GTEST_HAS_HASH_SET_ @@ -192,13 +192,12 @@ inline ::std::ostream& operator<<(::std::ostream& os, return os << "StreamableTemplateInFoo: " << x.value(); } -// A user-defined streamable but recursivly-defined container type in +// A user-defined streamable but recursivly-defined container type in // a user namespace, it mimics therefore std::filesystem::path or // boost::filesystem::path. class PathLike { public: - struct iterator - { + struct iterator { typedef PathLike value_type; }; typedef iterator const_iterator; @@ -208,9 +207,7 @@ class PathLike { iterator begin() const { return iterator(); } iterator end() const { return iterator(); } - friend - ::std::ostream& operator<<(::std::ostream& os, const PathLike&) - { + friend ::std::ostream& operator<<(::std::ostream& os, const PathLike&) { return os << "Streamable-PathLike"; } }; @@ -250,9 +247,9 @@ using ::testing::internal::string; #if GTEST_HAS_UNORDERED_MAP_ #define GTEST_HAS_HASH_MAP_ 1 -template +template using hash_map = ::std::unordered_map; -template +template using hash_multimap = ::std::unordered_multimap; #elif GTEST_HAS_HASH_MAP_ @@ -270,9 +267,9 @@ using ::stdext::hash_multimap; #if GTEST_HAS_UNORDERED_SET_ #define GTEST_HAS_HASH_SET_ 1 -template +template using hash_set = ::std::unordered_set; -template +template using hash_multiset = ::std::unordered_multiset; #elif GTEST_HAS_HASH_SET_ @@ -1092,7 +1089,7 @@ TEST(PrintTr1TupleTest, VariousSizes) { ::std::tr1::tuple - t10(false, 'a', static_cast(3), 4, 5, 1.5F, -2.5, str, + t10(false, 'a', static_cast(3), 4, 5, 1.5F, -2.5, str, // NOLINT ImplicitCast_(NULL), "10"); EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) + " pointing to \"8\", NULL, \"10\")", @@ -1152,7 +1149,7 @@ TEST(PrintStdTupleTest, VariousSizes) { ::std::tuple - t10(false, 'a', static_cast(3), 4, 5, 1.5F, -2.5, str, + t10(false, 'a', static_cast(3), 4, 5, 1.5F, -2.5, str, // NOLINT ImplicitCast_(NULL), "10"); EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) + " pointing to \"8\", NULL, \"10\")", -- cgit v1.2.3 From 80defcec57cecc637e9fdfe0160e122f890eed54 Mon Sep 17 00:00:00 2001 From: Gennadiy Civil Date: Tue, 23 Jan 2018 12:33:54 -0500 Subject: Many code merge/upstream changes --- googletest/test/gtest-printers_test.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'googletest/test/gtest-printers_test.cc') diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc index 70ac9c55..aff97a2a 100644 --- a/googletest/test/gtest-printers_test.cc +++ b/googletest/test/gtest-printers_test.cc @@ -275,11 +275,11 @@ using hash_multiset = ::std::unordered_multiset; #elif GTEST_HAS_HASH_SET_ #ifdef _STLP_HASH_MAP // We got from STLport. -using ::std::hash_set; -using ::std::hash_multiset; +using ::std::hash_map; +using ::std::hash_multimap; #elif _MSC_VER -using ::stdext::hash_set; -using ::stdext::hash_multiset; +using ::stdext::hash_map; +using ::stdext::hash_multimap; #endif #endif -- cgit v1.2.3 From e29805aa5d233efca1fc102efcc7bce53cecaa12 Mon Sep 17 00:00:00 2001 From: Gennadiy Civil Date: Wed, 24 Jan 2018 13:04:36 -0500 Subject: upstream cl 182543808 --- googletest/test/gtest-printers_test.cc | 72 ++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'googletest/test/gtest-printers_test.cc') diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc index aff97a2a..a8c82a8a 100644 --- a/googletest/test/gtest-printers_test.cc +++ b/googletest/test/gtest-printers_test.cc @@ -1552,6 +1552,78 @@ TEST(PrintToStringTest, WorksForCharArrayWithEmbeddedNul) { EXPECT_PRINT_TO_STRING_(mutable_str_with_nul, "\"hello\\0 world\""); } + TEST(PrintToStringTest, ContainsNonLatin) { + // Sanity test with valid UTF-8. Prints both in hex and as text. + std::string non_ascii_str = ::std::string("오전 4:30"); + EXPECT_PRINT_TO_STRING_(non_ascii_str, + "\"\\xEC\\x98\\xA4\\xEC\\xA0\\x84 4:30\"\n" + " As Text: \"오전 4:30\""); + non_ascii_str = ::std::string("From ä — ẑ"); + EXPECT_PRINT_TO_STRING_(non_ascii_str, + "\"From \\xC3\\xA4 \\xE2\\x80\\x94 \\xE1\\xBA\\x91\"" + "\n As Text: \"From ä — ẑ\""); +} + +TEST(IsValidUTF8Test, IllFormedUTF8) { + // The following test strings are ill-formed UTF-8 and are printed + // as hex only (or ASCII, in case of ASCII bytes) because IsValidUTF8() is + // expected to fail, thus output does not contain "As Text:". + + static const char *const kTestdata[][2] = { + // 2-byte lead byte followed by a single-byte character. + {"\xC3\x74", "\"\\xC3t\""}, + // Valid 2-byte character followed by an orphan trail byte. + {"\xC3\x84\xA4", "\"\\xC3\\x84\\xA4\""}, + // Lead byte without trail byte. + {"abc\xC3", "\"abc\\xC3\""}, + // 3-byte lead byte, single-byte character, orphan trail byte. + {"x\xE2\x70\x94", "\"x\\xE2p\\x94\""}, + // Truncated 3-byte character. + {"\xE2\x80", "\"\\xE2\\x80\""}, + // Truncated 3-byte character followed by valid 2-byte char. + {"\xE2\x80\xC3\x84", "\"\\xE2\\x80\\xC3\\x84\""}, + // Truncated 3-byte character followed by a single-byte character. + {"\xE2\x80\x7A", "\"\\xE2\\x80z\""}, + // 3-byte lead byte followed by valid 3-byte character. + {"\xE2\xE2\x80\x94", "\"\\xE2\\xE2\\x80\\x94\""}, + // 4-byte lead byte followed by valid 3-byte character. + {"\xF0\xE2\x80\x94", "\"\\xF0\\xE2\\x80\\x94\""}, + // Truncated 4-byte character. + {"\xF0\xE2\x80", "\"\\xF0\\xE2\\x80\""}, + // Invalid UTF-8 byte sequences embedded in other chars. + {"abc\xE2\x80\x94\xC3\x74xyc", "\"abc\\xE2\\x80\\x94\\xC3txyc\""}, + {"abc\xC3\x84\xE2\x80\xC3\x84xyz", + "\"abc\\xC3\\x84\\xE2\\x80\\xC3\\x84xyz\""}, + // Non-shortest UTF-8 byte sequences are also ill-formed. + // The classics: xC0, xC1 lead byte. + {"\xC0\x80", "\"\\xC0\\x80\""}, + {"\xC1\x81", "\"\\xC1\\x81\""}, + // Non-shortest sequences. + {"\xE0\x80\x80", "\"\\xE0\\x80\\x80\""}, + {"\xf0\x80\x80\x80", "\"\\xF0\\x80\\x80\\x80\""}, + // Last valid code point before surrogate range, should be printed as text, + // too. + {"\xED\x9F\xBF", "\"\\xED\\x9F\\xBF\"\n As Text: \"퟿\""}, + // Start of surrogate lead. Surrogates are not printed as text. + {"\xED\xA0\x80", "\"\\xED\\xA0\\x80\""}, + // Last non-private surrogate lead. + {"\xED\xAD\xBF", "\"\\xED\\xAD\\xBF\""}, + // First private-use surrogate lead. + {"\xED\xAE\x80", "\"\\xED\\xAE\\x80\""}, + // Last private-use surrogate lead. + {"\xED\xAF\xBF", "\"\\xED\\xAF\\xBF\""}, + // Mid-point of surrogate trail. + {"\xED\xB3\xBF", "\"\\xED\\xB3\\xBF\""}, + // First valid code point after surrogate range, should be printed as text, + // too. + {"\xEE\x80\x80", "\"\\xEE\\x80\\x80\"\n As Text: \"\""} + }; + + for (int i = 0; i < sizeof(kTestdata)/sizeof(kTestdata[0]); ++i) { + EXPECT_PRINT_TO_STRING_(kTestdata[i][0], kTestdata[i][1]); + } +} + #undef EXPECT_PRINT_TO_STRING_ TEST(UniversalTersePrintTest, WorksForNonReference) { -- cgit v1.2.3 From b9651c04ef7bfb1fc87fb17c5d8d960d1437cc56 Mon Sep 17 00:00:00 2001 From: Gennadiy Civil Date: Wed, 24 Jan 2018 16:06:08 -0500 Subject: placating gcc and its overzeauls size comparison warnings --- googletest/test/gtest-printers_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'googletest/test/gtest-printers_test.cc') diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc index a8c82a8a..e30ce7ef 100644 --- a/googletest/test/gtest-printers_test.cc +++ b/googletest/test/gtest-printers_test.cc @@ -1619,7 +1619,7 @@ TEST(IsValidUTF8Test, IllFormedUTF8) { {"\xEE\x80\x80", "\"\\xEE\\x80\\x80\"\n As Text: \"\""} }; - for (int i = 0; i < sizeof(kTestdata)/sizeof(kTestdata[0]); ++i) { + for (int i = 0; i < int(sizeof(kTestdata)/sizeof(kTestdata[0])); ++i) { EXPECT_PRINT_TO_STRING_(kTestdata[i][0], kTestdata[i][1]); } } -- cgit v1.2.3 From 2a4683021ab3e969a63c5e9226c1db4522f7129d Mon Sep 17 00:00:00 2001 From: Gennadiy Civil Date: Tue, 30 Jan 2018 11:42:03 -0500 Subject: Ability to optionally depend on Abseil plus upstream of 183716547 --- googletest/test/gtest-printers_test.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'googletest/test/gtest-printers_test.cc') diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc index e30ce7ef..42e19656 100644 --- a/googletest/test/gtest-printers_test.cc +++ b/googletest/test/gtest-printers_test.cc @@ -1765,5 +1765,17 @@ TEST(UniversalTersePrintTupleFieldsToStringsTestWithStd, PrintsTersely) { #endif // GTEST_HAS_STD_TUPLE_ +#if GTEST_HAS_ABSL + +TEST(PrintOptionalTest, Basic) { + absl::optional value; + EXPECT_EQ("(nullopt)", PrintToString(value)); + value = {7}; + EXPECT_EQ("(7)", PrintToString(value)); + EXPECT_EQ("(1.1)", PrintToString(absl::optional{1.1})); + EXPECT_EQ("(\"A\")", PrintToString(absl::optional{"A"})); +} +#endif // GTEST_HAS_ABSL + } // namespace gtest_printers_test } // namespace testing -- cgit v1.2.3 From e55fded0c88228fa40e998a6b54069d15853a9c0 Mon Sep 17 00:00:00 2001 From: Gennadiy Civil Date: Tue, 30 Jan 2018 17:34:22 -0500 Subject: Code merges --- googletest/test/gtest-printers_test.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'googletest/test/gtest-printers_test.cc') diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc index 42e19656..0860abf5 100644 --- a/googletest/test/gtest-printers_test.cc +++ b/googletest/test/gtest-printers_test.cc @@ -837,22 +837,22 @@ TEST(PrintTypeWithGenericStreamingTest, TypeImplicitlyConvertible) { EXPECT_EQ("AllowsGenericStreamingAndImplicitConversionTemplate", Print(a)); } -#if GTEST_HAS_STRING_PIECE_ +#if GTEST_HAS_ABSL -// Tests printing StringPiece. +// Tests printing ::absl::string_view. -TEST(PrintStringPieceTest, SimpleStringPiece) { - const StringPiece sp = "Hello"; +TEST(PrintStringViewTest, SimpleStringView) { + const ::absl::string_view sp = "Hello"; EXPECT_EQ("\"Hello\"", Print(sp)); } -TEST(PrintStringPieceTest, UnprintableCharacters) { +TEST(PrintStringViewTest, UnprintableCharacters) { const char str[] = "NUL (\0) and \r\t"; - const StringPiece sp(str, sizeof(str) - 1); + const ::absl::string_view sp(str, sizeof(str) - 1); EXPECT_EQ("\"NUL (\\0) and \\r\\t\"", Print(sp)); } -#endif // GTEST_HAS_STRING_PIECE_ +#endif // GTEST_HAS_ABSL // Tests printing STL containers. -- cgit v1.2.3 From c8510504ddf3bd9e486fdce076bdf5dba62d18bb Mon Sep 17 00:00:00 2001 From: Troy Holsapple Date: Wed, 7 Feb 2018 22:06:00 -0800 Subject: Fixed typos --- googletest/test/gtest-printers_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'googletest/test/gtest-printers_test.cc') diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc index 0860abf5..60a8d037 100644 --- a/googletest/test/gtest-printers_test.cc +++ b/googletest/test/gtest-printers_test.cc @@ -1327,7 +1327,7 @@ TEST(FormatForComparisonFailureMessageTest, FormatsNonCharArrayAsPointer) { } // Tests formatting a char pointer when it's compared with another pointer. -// In this case we want to print it as a raw pointer, as the comparision is by +// In this case we want to print it as a raw pointer, as the comparison is by // pointer. // char pointer vs pointer -- cgit v1.2.3