5 #include <gtest/gtest.h>
12 std::queue<uavcan::protocol::debug::LogMessage>
msgs;
21 void log(
const uavcan::protocol::debug::LogMessage& message)
24 std::cout << message << std::endl;
27 uavcan::protocol::debug::LogMessage
pop()
31 std::cout <<
"LogSink is empty" << std::endl;
34 const uavcan::protocol::debug::LogMessage m =
msgs.front();
43 std::cout <<
"LogSink is empty" << std::endl;
46 const uavcan::protocol::debug::LogMessage m =
pop();
48 level == m.level.value &&
67 ASSERT_GT(0,
logger.logError(
"foo",
"Error (fail - type is not registered)"));
68 ASSERT_EQ(0,
logger.logDebug(
"foo",
"Debug (ignored - low logging level)"));
70 ASSERT_FALSE(
logger.getExternalSink());
71 logger.setExternalSink(&sink);
72 ASSERT_EQ(&sink,
logger.getExternalSink());
78 ASSERT_LE(0, log_sub.
start());
81 ASSERT_EQ(0,
logger.logDebug(
"foo",
"Debug (ignored due to low logging level)"));
82 ASSERT_TRUE(sink.
msgs.empty());
84 sink.
level = uavcan::protocol::debug::LogLevel::DEBUG;
85 ASSERT_EQ(0,
logger.logDebug(
"foo",
"Debug (sink only)"));
86 ASSERT_TRUE(sink.
popMatchByLevelAndText(uavcan::protocol::debug::LogLevel::DEBUG,
"foo",
"Debug (sink only)"));
88 ASSERT_LE(0,
logger.logError(
"foo",
"Error"));
95 logger.setLevel(uavcan::protocol::debug::LogLevel::DEBUG);
96 ASSERT_LE(0,
logger.logWarning(
"foo",
"Warning"));
98 ASSERT_EQ(log_sub.
collector.
msg->level.value, uavcan::protocol::debug::LogLevel::WARNING);
102 ASSERT_LE(0,
logger.logInfo(
"foo",
"Info"));
104 ASSERT_EQ(log_sub.
collector.
msg->level.value, uavcan::protocol::debug::LogLevel::INFO);
108 ASSERT_LE(0,
logger.logDebug(
"foo",
"Debug"));
110 ASSERT_EQ(log_sub.
collector.
msg->level.value, uavcan::protocol::debug::LogLevel::DEBUG);
120 #if !defined(UAVCAN_CPP_VERSION) || !defined(UAVCAN_CPP11)
121 # error UAVCAN_CPP_VERSION
124 #if UAVCAN_CPP_VERSION >= UAVCAN_CPP11
131 logger.setLevel(uavcan::protocol::debug::LogLevel::DEBUG);
134 ASSERT_LE(0, log_sub.
start());
136 ASSERT_LE(0,
logger.logWarning(
"foo",
"char='%*', %* is %*",
'$',
"double", 12.34));
139 ASSERT_EQ(log_sub.
collector.
msg->level.value, uavcan::protocol::debug::LogLevel::WARNING);
141 ASSERT_EQ(log_sub.
collector.
msg->text,
"char='$', double is 12.34");