7template<
typename... Args>
58 << (now_tm.tm_year + 1900) % 1000 <<
" Some message\n";
62TEST_CASE(
"color range test1",
"[pattern_formatter]")
68 memory_buf_t formatted;
77TEST_CASE(
"color range test2",
"[pattern_formatter]")
82 memory_buf_t formatted;
89TEST_CASE(
"color range test3",
"[pattern_formatter]")
94 memory_buf_t formatted;
106 memory_buf_t formatted;
118 memory_buf_t formatted;
129 memory_buf_t formatted;
157TEST_CASE(
"short level_left_padded",
"[pattern_formatter]")
163TEST_CASE(
"short level_right_padded",
"[pattern_formatter]")
169TEST_CASE(
"short level_center_padded",
"[pattern_formatter]")
196 "[pattern_tester ] Some message\n");
199 "[pattern_tester ] Some message\n");
205 "[pattern_tester ] Some message\n");
208 "[pattern_tester ] Some message\n");
230TEST_CASE(
"padding_truncate_funcname",
"[pattern_formatter]")
234 const char *pattern =
"%v [%5!!]";
251 const char *pattern =
"%v [%10!]";
261 REQUIRE(test_sink.
lines()[1] ==
"message [func567890123]");
264TEST_CASE(
"clone-default-formatter",
"[pattern_formatter]")
267 auto formatter_2 = formatter_1->clone();
271 memory_buf_t formatted_1;
272 memory_buf_t formatted_2;
273 formatter_1->format(msg, formatted_1);
274 formatter_2->format(msg, formatted_2);
276 REQUIRE(fmt::to_string(formatted_1) == fmt::to_string(formatted_2));
279TEST_CASE(
"clone-default-formatter2",
"[pattern_formatter]")
282 auto formatter_2 = formatter_1->clone();
286 memory_buf_t formatted_1;
287 memory_buf_t formatted_2;
288 formatter_1->format(msg, formatted_1);
289 formatter_2->format(msg, formatted_2);
291 REQUIRE(fmt::to_string(formatted_1) == fmt::to_string(formatted_2));
297 auto formatter_2 = formatter_1->clone();
301 memory_buf_t formatted_1;
302 memory_buf_t formatted_2;
303 formatter_1->format(msg, formatted_1);
304 formatter_2->format(msg, formatted_2);
305 REQUIRE(fmt::to_string(formatted_1) == fmt::to_string(formatted_2));
312 auto formatter_2 = formatter_1->clone();
316 memory_buf_t formatted_1;
317 memory_buf_t formatted_2;
318 formatter_1->format(msg, formatted_1);
319 formatter_2->format(msg, formatted_2);
320 REQUIRE(fmt::to_string(formatted_1) == fmt::to_string(formatted_2));
348 return spdlog::details::make_unique<custom_test_flag>(
some_txt);
352TEST_CASE(
"clone-custom_formatter",
"[pattern_formatter]")
355 formatter_1->add_flag<
custom_test_flag>(
't',
"custom_output").set_pattern(
"[%n] [%t] %v");
356 auto formatter_2 = formatter_1->clone();
360 memory_buf_t formatted_1;
361 memory_buf_t formatted_2;
362 formatter_1->format(msg, formatted_1);
363 formatter_2->format(msg, formatted_2);
366 REQUIRE(fmt::to_string(formatted_1) == expected);
367 REQUIRE(fmt::to_string(formatted_2) == expected);
375static const char *
const test_path =
"\\a\\b\\c/myfile.cpp";
380TEST_CASE(
"short filename formatter-1",
"[pattern_formatter]")
383 memory_buf_t formatted;
388 REQUIRE(fmt::to_string(formatted) ==
"myfile.cpp");
391TEST_CASE(
"short filename formatter-2",
"[pattern_formatter]")
394 memory_buf_t formatted;
399 REQUIRE(fmt::to_string(formatted) ==
"myfile.cpp:123");
402TEST_CASE(
"short filename formatter-3",
"[pattern_formatter]")
405 memory_buf_t formatted;
410 REQUIRE(fmt::to_string(formatted) ==
" Hello");
413TEST_CASE(
"full filename formatter",
"[pattern_formatter]")
416 memory_buf_t formatted;
427 formatter->add_flag<
custom_test_flag>(
't',
"custom1").add_flag<custom_test_flag>(
'u',
"custom2").set_pattern(
"[%n] [%t] [%u] %v");
429 memory_buf_t formatted;
434 REQUIRE(fmt::to_string(formatted) == expected);
440 formatter->add_flag<
custom_test_flag>(
't',
"custom1").add_flag<custom_test_flag>(
'u',
"custom2").set_pattern(
"[%n] [%t] [%5u] %v");
442 memory_buf_t formatted;
447 REQUIRE(fmt::to_string(formatted) == expected);
450TEST_CASE(
"custom flags-exception",
"[pattern_formatter]")
453 formatter->add_flag<
custom_test_flag>(
't',
"throw_me").add_flag<custom_test_flag>(
'u',
"custom2").set_pattern(
"[%n] [%t] [%u] %v");
455 memory_buf_t formatted;
T back_inserter(T... args)
#define CHECK_THROWS_AS(expr, exceptionType)
std::unique_ptr< custom_flag_formatter > clone() const override
custom_test_flag(std::string txt)
spdlog::details::padding_info get_padding_info()
void format(const spdlog::details::log_msg &, const std::tm &, spdlog::memory_buf_t &dest) override
void set_formatter(std::unique_ptr< formatter > f)
void info(fmt::format_string< Args... > fmt, Args &&...args)
void set_level(level::level_enum log_level)
void log(const details::log_msg &msg) final
void set_formatter(std::unique_ptr< spdlog::formatter > sink_formatter) final
std::vector< std::string > lines()
static SPDLOG_CONSTEXPR const char * default_eol
SPDLOG_INLINE std::tm localtime() SPDLOG_NOEXCEPT
fmt::basic_string_view< char > string_view_t
fmt::basic_memory_buffer< char, 250 > memory_buf_t