Export of internal Abseil changes
-- f34cd235a12ad0ee1fea3a1ee5a427272dc2b285 by Abseil Team <absl-team@google.com>: Migrates uses of deprecated map types to recommended types. PiperOrigin-RevId: 309945156 -- e3410a47ad32c0775b6911610bc47b22938decad by Matthew Brown <matthewbr@google.com>: Internal Change PiperOrigin-RevId: 309856021 -- a58cfa25e0bb59e7fa9647ac1aae65eaccff0086 by Greg Falcon <gfalcon@google.com>: Internal change. PiperOrigin-RevId: 309804612 -- cdc5ec310035fbe25f496bda283fe655d94d7769 by Mark Barolak <mbar@google.com>: Standardize the header comments for friend functions in cord.h PiperOrigin-RevId: 309779073 -- fe61602701be795e54477b0fdbf5ffc1df12a6b7 by Samuel Benzaquen <sbenza@google.com>: Implement %f natively for any input. It evaluates the input at runtime and allocates stack space accordingly. This removes a potential fallback into snprintf, improves performance, and removes all memory allocations in this formatting path. PiperOrigin-RevId: 309752501 -- 79e2a24f3f959e8b06ddf1d440bbabbd5f89b5b7 by Greg Falcon <gfalcon@google.com>: Add a Cord::swap() method. Many other Abseil types already provide this, but it was missing here. We already provided a two-argument free function form of `swap()`, but that API is better suited for generic code. The swap member function is a better API when the types are known. PiperOrigin-RevId: 309751740 -- 85cdf60024f153fb4fcb7fe68ed2b14b9faf119d by Derek Mauro <dmauro@google.com>: Cleanup uses of "linker initialized" SpinLocks PiperOrigin-RevId: 309581867 -- 9e5443bfcec4b94056b13c75326576e987ab88fb by Matt Kulukundis <kfm@google.com>: Clarify intended mixing properties of `absl::Hash` PiperOrigin-RevId: 309520174 -- a0630f0827b67f217aaeae68a448fe4c1101e17d by Greg Falcon <gfalcon@google.com>: Comment out a test in Emscripten to sidestep `long double` issues. PiperOrigin-RevId: 309482953 GitOrigin-RevId: f34cd235a12ad0ee1fea3a1ee5a427272dc2b285 Change-Id: Icce0c9d547117374d596b9d684e4054ddd118669
This commit is contained in:
		
							parent
							
								
									a1d6689907
								
							
						
					
					
						commit
						d85783fd0b
					
				
					 24 changed files with 1112 additions and 197 deletions
				
			
		|  | @ -532,76 +532,103 @@ TEST_F(ParsedFormatTest, SimpleUncheckedIncorrect) { | |||
|   EXPECT_FALSE((ParsedFormat<'s', 'd', 'g'>::New(format))); | ||||
| } | ||||
| 
 | ||||
| using str_format_internal::Conv; | ||||
| using absl::str_format_internal::FormatConversionCharSet; | ||||
| 
 | ||||
| TEST_F(ParsedFormatTest, UncheckedCorrect) { | ||||
|   auto f = ExtendedParsedFormat<Conv::d>::New("ABC%dDEF"); | ||||
|   auto f = ExtendedParsedFormat<FormatConversionCharSet::d>::New("ABC%dDEF"); | ||||
|   ASSERT_TRUE(f); | ||||
|   EXPECT_EQ("[ABC]{d:1$d}[DEF]", SummarizeParsedFormat(*f)); | ||||
| 
 | ||||
|   std::string format = "%sFFF%dZZZ%f"; | ||||
|   auto f2 = ExtendedParsedFormat<Conv::kString, Conv::d, Conv::kFloating>::New( | ||||
|       format); | ||||
|   auto f2 = | ||||
|       ExtendedParsedFormat<FormatConversionCharSet::kString, | ||||
|                            FormatConversionCharSet::d, | ||||
|                            FormatConversionCharSet::kFloating>::New(format); | ||||
| 
 | ||||
|   ASSERT_TRUE(f2); | ||||
|   EXPECT_EQ("{s:1$s}[FFF]{d:2$d}[ZZZ]{f:3$f}", SummarizeParsedFormat(*f2)); | ||||
| 
 | ||||
|   f2 = ExtendedParsedFormat<Conv::kString, Conv::d, Conv::kFloating>::New( | ||||
|       "%s %d %f"); | ||||
|   f2 = | ||||
|       ExtendedParsedFormat<FormatConversionCharSet::kString, | ||||
|                            FormatConversionCharSet::d, | ||||
|                            FormatConversionCharSet::kFloating>::New("%s %d %f"); | ||||
| 
 | ||||
|   ASSERT_TRUE(f2); | ||||
|   EXPECT_EQ("{s:1$s}[ ]{d:2$d}[ ]{f:3$f}", SummarizeParsedFormat(*f2)); | ||||
| 
 | ||||
|   auto star = ExtendedParsedFormat<Conv::kStar, Conv::d>::New("%*d"); | ||||
|   auto star = ExtendedParsedFormat<FormatConversionCharSet::kStar, | ||||
|                                    FormatConversionCharSet::d>::New("%*d"); | ||||
|   ASSERT_TRUE(star); | ||||
|   EXPECT_EQ("{*d:2$1$*d}", SummarizeParsedFormat(*star)); | ||||
| 
 | ||||
|   auto dollar = ExtendedParsedFormat<Conv::d, Conv::s>::New("%2$s %1$d"); | ||||
|   auto dollar = | ||||
|       ExtendedParsedFormat<FormatConversionCharSet::d, | ||||
|                            FormatConversionCharSet::s>::New("%2$s %1$d"); | ||||
|   ASSERT_TRUE(dollar); | ||||
|   EXPECT_EQ("{2$s:2$s}[ ]{1$d:1$d}", SummarizeParsedFormat(*dollar)); | ||||
|   // with reuse
 | ||||
|   dollar = ExtendedParsedFormat<Conv::d, Conv::s>::New("%2$s %1$d %1$d"); | ||||
|   dollar = | ||||
|       ExtendedParsedFormat<FormatConversionCharSet::d, | ||||
|                            FormatConversionCharSet::s>::New("%2$s %1$d %1$d"); | ||||
|   ASSERT_TRUE(dollar); | ||||
|   EXPECT_EQ("{2$s:2$s}[ ]{1$d:1$d}[ ]{1$d:1$d}", | ||||
|             SummarizeParsedFormat(*dollar)); | ||||
| } | ||||
| 
 | ||||
| TEST_F(ParsedFormatTest, UncheckedIgnoredArgs) { | ||||
|   EXPECT_FALSE((ExtendedParsedFormat<Conv::d, Conv::s>::New("ABC"))); | ||||
|   EXPECT_FALSE((ExtendedParsedFormat<Conv::d, Conv::s>::New("%dABC"))); | ||||
|   EXPECT_FALSE((ExtendedParsedFormat<Conv::d, Conv::s>::New("ABC%2$s"))); | ||||
|   auto f = ExtendedParsedFormat<Conv::d, Conv::s>::NewAllowIgnored("ABC"); | ||||
|   EXPECT_FALSE((ExtendedParsedFormat<FormatConversionCharSet::d, | ||||
|                                      FormatConversionCharSet::s>::New("ABC"))); | ||||
|   EXPECT_FALSE( | ||||
|       (ExtendedParsedFormat<FormatConversionCharSet::d, | ||||
|                             FormatConversionCharSet::s>::New("%dABC"))); | ||||
|   EXPECT_FALSE( | ||||
|       (ExtendedParsedFormat<FormatConversionCharSet::d, | ||||
|                             FormatConversionCharSet::s>::New("ABC%2$s"))); | ||||
|   auto f = | ||||
|       ExtendedParsedFormat<FormatConversionCharSet::d, | ||||
|                            FormatConversionCharSet::s>::NewAllowIgnored("ABC"); | ||||
|   ASSERT_TRUE(f); | ||||
|   EXPECT_EQ("[ABC]", SummarizeParsedFormat(*f)); | ||||
|   f = ExtendedParsedFormat<Conv::d, Conv::s>::NewAllowIgnored("%dABC"); | ||||
|   f = ExtendedParsedFormat< | ||||
|       FormatConversionCharSet::d, | ||||
|       FormatConversionCharSet::s>::NewAllowIgnored("%dABC"); | ||||
|   ASSERT_TRUE(f); | ||||
|   EXPECT_EQ("{d:1$d}[ABC]", SummarizeParsedFormat(*f)); | ||||
|   f = ExtendedParsedFormat<Conv::d, Conv::s>::NewAllowIgnored("ABC%2$s"); | ||||
|   f = ExtendedParsedFormat< | ||||
|       FormatConversionCharSet::d, | ||||
|       FormatConversionCharSet::s>::NewAllowIgnored("ABC%2$s"); | ||||
|   ASSERT_TRUE(f); | ||||
|   EXPECT_EQ("[ABC]{2$s:2$s}", SummarizeParsedFormat(*f)); | ||||
| } | ||||
| 
 | ||||
| TEST_F(ParsedFormatTest, UncheckedMultipleTypes) { | ||||
|   auto dx = ExtendedParsedFormat<Conv::d | Conv::x>::New("%1$d %1$x"); | ||||
|   auto dx = ExtendedParsedFormat<FormatConversionCharSet::d | | ||||
|                                  FormatConversionCharSet::x>::New("%1$d %1$x"); | ||||
|   EXPECT_TRUE(dx); | ||||
|   EXPECT_EQ("{1$d:1$d}[ ]{1$x:1$x}", SummarizeParsedFormat(*dx)); | ||||
| 
 | ||||
|   dx = ExtendedParsedFormat<Conv::d | Conv::x>::New("%1$d"); | ||||
|   dx = ExtendedParsedFormat<FormatConversionCharSet::d | | ||||
|                             FormatConversionCharSet::x>::New("%1$d"); | ||||
|   EXPECT_TRUE(dx); | ||||
|   EXPECT_EQ("{1$d:1$d}", SummarizeParsedFormat(*dx)); | ||||
| } | ||||
| 
 | ||||
| TEST_F(ParsedFormatTest, UncheckedIncorrect) { | ||||
|   EXPECT_FALSE(ExtendedParsedFormat<Conv::d>::New("")); | ||||
|   EXPECT_FALSE(ExtendedParsedFormat<FormatConversionCharSet::d>::New("")); | ||||
| 
 | ||||
|   EXPECT_FALSE(ExtendedParsedFormat<Conv::d>::New("ABC%dDEF%d")); | ||||
|   EXPECT_FALSE( | ||||
|       ExtendedParsedFormat<FormatConversionCharSet::d>::New("ABC%dDEF%d")); | ||||
| 
 | ||||
|   std::string format = "%sFFF%dZZZ%f"; | ||||
|   EXPECT_FALSE((ExtendedParsedFormat<Conv::s, Conv::d, Conv::g>::New(format))); | ||||
|   EXPECT_FALSE((ExtendedParsedFormat<FormatConversionCharSet::s, | ||||
|                                      FormatConversionCharSet::d, | ||||
|                                      FormatConversionCharSet::g>::New(format))); | ||||
| } | ||||
| 
 | ||||
| TEST_F(ParsedFormatTest, RegressionMixPositional) { | ||||
|   EXPECT_FALSE((ExtendedParsedFormat<Conv::d, Conv::o>::New("%1$d %o"))); | ||||
|   EXPECT_FALSE( | ||||
|       (ExtendedParsedFormat<FormatConversionCharSet::d, | ||||
|                             FormatConversionCharSet::o>::New("%1$d %o"))); | ||||
| } | ||||
| 
 | ||||
| using FormatWrapperTest = ::testing::Test; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue