15 #include "absl/strings/str_format.h"
22 #include "gmock/gmock.h"
23 #include "gtest/gtest.h"
24 #include "absl/strings/cord.h"
25 #include "absl/strings/str_cat.h"
26 #include "absl/strings/string_view.h"
31 using str_format_internal::FormatArgImpl;
46 constexpr
const char* formats[] = {
50 #if !defined(_MSC_VER) && !defined(__ANDROID__) && !defined(__native_client__)
52 "complicated multipart %% %1$d format %1$0999d",
55 for (
const char*
fmt : formats) {
108 EXPECT_EQ(
"24",
StrFormat(
"%24$d", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
109 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24));
110 EXPECT_EQ(
"60",
StrFormat(
"%60$d", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
111 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
112 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
113 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
114 53, 54, 55, 56, 57, 58, 59, 60));
138 int i = 123, *ip = &
n;
174 #if !defined(_MSC_VER) && !defined(__ANDROID__) && !defined(__native_client__)
176 "complicated multipart %% %1$d format %1$080d",
180 for (
const auto&
fmt : formats) {
183 std::ostringstream oss;
184 oss <<
StreamFormat(*parsed, 123, 3, 49,
"multistreaming!!!", 1.01, 1.01);
185 int fmt_result = snprintf(&*
buf.begin(),
buf.size(),
fmt.c_str(),
186 123, 3, 49,
"multistreaming!!!", 1.01, 1.01);
188 ASSERT_TRUE(fmt_result >= 0 &&
static_cast<size_t>(fmt_result) <
buf.size())
195 std::ostringstream oss;
202 std::ostringstream oss;
237 namespace streamed_test {
284 EXPECT_EQ(
tmp.ReadFile(),
"STRING: ABC NUMBER: -000000019");
296 std::FILE* f = std::fopen(
"/dev/null",
"w");
297 int width = 2000000000;
306 int stdout_tmp = dup(STDOUT_FILENO);
310 dup2(fileno(
tmp.file()), STDOUT_FILENO);
315 dup2(stdout_tmp, STDOUT_FILENO);
319 EXPECT_EQ(
tmp.ReadFile(),
"STRING: ABC NUMBER: -000000019");
346 result =
SNPrintF(
nullptr, 0,
"Just checking the %s of the output.",
"size");
390 const long double long_double = 1.0;
410 #if !defined(__ANDROID_API__) || __ANDROID_API__ > 21
418 const int& something = *
reinterpret_cast<const int*
>(ptr_value);
433 "veni, vidi, vici!");
464 if (
conv.width.is_from_arg()) {
467 if (
conv.precision.is_from_arg()) {
487 EXPECT_EQ(
"{s:1$s}[FFF]{d:2$d}[ZZZ]{f:3$f}",
519 EXPECT_EQ(
"{2$s:2$s}[ ]{1$d:1$d}[ ]{1$d:1$d}",
552 #if defined(__cpp_nontype_template_parameter_auto)
561 using IsValidParsedFormatArg = decltype(IsValidParsedFormatArgTest<T>(
nullptr));
637 EXPECT_EQ(
"{2$s:2$s}[ ]{1$d:1$d}[ ]{1$d:1$d}",
703 template <
typename...
Args>