29 #include <gtest/gtest.h>
57 "Exclusive debug flag for the trace tests");
65 auto buf =
os.rdbuf();
66 std::ostringstream oss;
79 TEST(TraceTest, LogSimpleMessage)
85 ASSERT_EQ(
getString(&logger),
" 100: Test message");
89 TEST(TraceTest, LogMessageName)
95 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
99 TEST(TraceTest, LogMessageMaxTick)
101 std::stringstream
ss;
105 ASSERT_EQ(
getString(&logger),
"Foo: Test message");
109 TEST(TraceTest, LogMessageFlagDisabled)
111 std::stringstream
ss;
115 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
122 TEST(TraceTest, LogMessageTickDisabledAndEnableDisable)
124 std::stringstream
ss;
128 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
135 ASSERT_EQ(
getString(&logger),
"Foo: Test message");
137 ASSERT_EQ(
getString(&logger),
" 200: Foo: Test message");
144 ASSERT_EQ(
getString(&logger),
" 300: Foo: Test message");
151 TEST(TraceTest, LogMessageFlagEnabled)
153 std::stringstream
ss;
160 ASSERT_EQ(
getString(&logger),
" 100: Bar: Foo: Test message");
162 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
170 TEST(TraceTest, LogMessageActivateOne)
172 std::stringstream
ss;
181 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
190 ASSERT_EQ(
getString(&logger),
" 100: Bar: Test message");
194 TEST(TraceTest, LogMessageActivateMultiple)
196 std::stringstream
ss;
207 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
209 ASSERT_EQ(
getString(&logger),
" 100: Bar: Test message");
221 ASSERT_EQ(
getString(&logger),
" 100: Thy: Test message");
225 TEST(TraceTest, LogMessageIgnoreOne)
227 std::stringstream
ss;
238 ASSERT_EQ(
getString(&logger),
" 100: Bar: Test message");
243 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
249 TEST(TraceTest, LogMessageIgnoreMultiple)
251 std::stringstream
ss;
266 ASSERT_EQ(
getString(&logger),
" 100: Thy: Test message");
272 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
274 ASSERT_EQ(
getString(&logger),
" 100: Bar: Test message");
280 TEST(TraceTest, LogMessageActivateAndIgnore)
282 std::stringstream
ss;
292 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
304 std::stringstream
ss;
309 std::string message =
"Test message";
310 logger.
dump(
Tick(100),
"Foo", message.c_str(), message.size(),
"");
323 std::stringstream
ss;
328 std::string message =
"Test message";
329 logger.
dump(
Tick(100),
"Foo", message.c_str(), message.size(),
"Bar");
337 "54 65 73 74 20 6d 65 73 73 61 67 65 "
347 "54 65 73 74 20 6d 65 73 73 61 67 65 "
361 std::stringstream
ss;
364 std::string message =
365 "This is a very long line that will span over multiple lines";
366 logger.
dump(
Tick(100),
"Foo", message.c_str(), message.size(),
"");
368 " 100: Foo: 00000000 "
369 "54 68 69 73 20 69 73 20 61 20 76 65 72 79 20 6c This is a very l\n"
370 " 100: Foo: 00000010 "
371 "6f 6e 67 20 6c 69 6e 65 20 74 68 61 74 20 77 69 ong line that wi\n"
372 " 100: Foo: 00000020 "
373 "6c 6c 20 73 70 61 6e 20 6f 76 65 72 20 6d 75 6c ll span over mul\n"
374 " 100: Foo: 00000030 "
375 "74 69 70 6c 65 20 6c 69 6e 65 73 tiple lines\n");
382 TEST(TraceTest, DISABLED_GetNullLogger)
385 ASSERT_FALSE(logger ==
nullptr);
404 ASSERT_EQ(
getString(logger_from_getter),
" 100: Foo: Test message");
415 TEST(TraceTest, DprintfFlagIgnore)
417 std::stringstream
ss;
427 TEST(TraceTest, DprintfFlagZeroArgs)
429 std::stringstream
ss;
433 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
437 TEST(TraceTest, DprintfFlagOneArg)
439 std::stringstream
ss;
443 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
447 TEST(TraceTest, DprintfFlagMultipleArgs)
449 std::stringstream
ss;
453 "message",
'A', 217, 0x30);
454 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message A 217 30");
458 TEST(TraceTest, DprintfFlagEnabled)
460 std::stringstream
ss;
467 ASSERT_EQ(
getString(&logger),
" 100: Bar: Foo: Test message");
469 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
478 std::stringstream
ss;
488 TEST(TraceTest, DprintfEnabled)
490 std::stringstream
ss;
495 logger.
dprintf(
Tick(100),
"Foo",
"Test %s",
"message");
496 ASSERT_EQ(
getString(&logger),
" 100: Foo: Test message");
502 TEST(TraceTest, DprintfWrapper)
504 std::stringstream
ss, ss_flag;
508 logger.
dprintf(
Tick(100),
"Foo",
"Test %s %c %d %x",
509 "message",
'A', 217, 0x30);
511 "message",
'A', 217, 0x30);
519 std::string message =
"Test message";
528 " 0: TraceTestDebugFlag: Foo: 00000000 "
529 "54 65 73 74 20 6d 65 73 73 61 67 65 Test message\n");
553 " 0: TraceTestDebugFlag: Foo: Test message");
570 Named *named_ptr = &named;
580 " 0: TraceTestDebugFlag: Foo: Test message");
626 TEST(TraceTest, MacroDPRINTFNR)
637 TEST(TraceTest, MacroDPRINTF_UNCONDITIONAL)
648 " 0: TraceTestDebugFlag: Foo: Test message");
677 " 0: TraceTestDebugFlag: global: Test message");