15 #include "absl/strings/substitute.h"
20 #include "gtest/gtest.h"
21 #include "absl/strings/str_cat.h"
37 "-1234567890 3234567890 "
38 "-1234567890 3234567890 "
39 "-1234567890123456789 9234567890123456789",
41 "$0 $1 $2 $3 $4 $5 $6 $7",
42 static_cast<short>(-32767),
43 static_cast<unsigned short>(65535),
44 -1234567890, 3234567890U, -1234567890
L, 3234567890UL,
48 EXPECT_EQ(
"0 1 f ffff0ffff 0123456789abcdef",
57 EXPECT_EQ(
"0 115 -1-0001 81985529216486895",
66 const int* int_p =
reinterpret_cast<const int*
>(0x12345);
72 volatile int vol = 237;
73 volatile int *
volatile volptr = &vol;
83 const char* char_p =
"print me";
88 strncpy(char_buf,
"print me too",
sizeof(char_buf));
98 EXPECT_EQ(
"b, a, c, b",
absl::Substitute(
"$1, $0, $2, $1",
"a",
"b",
"c"));
115 "c",
"d",
"e",
"f",
"g"));
121 "e",
"f",
"g",
"h",
"i"));
124 "d",
"e",
"f",
"g",
"h",
"i",
"j"));
127 "d",
"e",
"f",
"g",
"h",
"i",
"j"));
129 const char* null_cstring =
nullptr;
168 "d",
"e",
"f",
"g",
"h",
"i");
172 "c",
"d",
"e",
"f",
"g",
"h",
"i",
"j");
176 TEST(SubstituteTest, VectorBoolRef) {
177 std::vector<bool>
v = {
true,
false};
187 TEST(SubstituteTest, Enums) {
188 enum UnscopedEnum { kEnum0 = 0, kEnum1 = 1 };
190 UnscopedEnum::kEnum1));
192 enum class ScopedEnum { kEnum0 = 0, kEnum1 = 1 };
199 ScopedEnumInt32::kEnum1));
203 ScopedEnumUInt32::kEnum1));
205 enum class ScopedEnumInt64 :
int64_t { kEnum0 = -1, kEnum1 = 42949672950 };
207 ScopedEnumInt64::kEnum1));
209 enum class ScopedEnumUInt64 :
uint64_t { kEnum0 = 1, kEnum1 = 42949672950 };
211 ScopedEnumUInt64::kEnum1));
213 enum class ScopedEnumChar : signed char { kEnum0 = -1, kEnum1 = 1 };
215 ScopedEnumChar::kEnum1));
217 enum class ScopedEnumUChar : unsigned char {
223 ScopedEnumUChar::kEnum1,
224 ScopedEnumUChar::kEnumMax));
226 enum class ScopedEnumInt16 :
int16_t { kEnum0 = -100, kEnum1 = 10000 };
228 ScopedEnumInt16::kEnum1));
230 enum class ScopedEnumUInt16 :
uint16_t { kEnum0 = 0, kEnum1 = 10000 };
232 ScopedEnumUInt16::kEnum1));
235 #ifdef GTEST_HAS_DEATH_TEST
237 TEST(SubstituteDeathTest, SubstituteDeath) {
240 "Invalid absl::Substitute\\(\\) format string: asked for \"\\$2\", "
241 "but only 2 args were given.");
244 "Invalid absl::Substitute\\(\\) format string: \"-\\$z-\"");
247 "Invalid absl::Substitute\\(\\) format string: \"-\\$\"");
250 #endif // GTEST_HAS_DEATH_TEST