libs
libuavcan
libuavcan
test
protocol
panic_broadcaster.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3
*/
4
5
#include <gtest/gtest.h>
6
#include <
uavcan/protocol/panic_broadcaster.hpp
>
7
#include "
helpers.hpp
"
8
9
10
TEST
(PanicBroadcaster, Basic)
11
{
12
InterlinkedTestNodesWithSysClock
nodes;
13
14
uavcan::PanicBroadcaster
panicker(nodes.
a
);
15
16
SubscriberWithCollector<uavcan::protocol::Panic>
sub(nodes.
b
);
17
18
uavcan::GlobalDataTypeRegistry::instance
().reset();
19
uavcan::DefaultDataTypeRegistrator<uavcan::protocol::Panic>
_reg1;
20
21
ASSERT_LE(0, sub.
start
());
22
23
panicker.
panic
(
"I lost my towel!"
);
// Only the first 7 chars allowed
24
25
ASSERT_STREQ(
"I lost "
, panicker.
getReason
().c_str());
26
ASSERT_TRUE(panicker.
isPanicking
());
27
28
nodes.
spinBoth
(
uavcan::MonotonicDuration::fromMSec
(10));
29
ASSERT_TRUE(sub.
collector
.
msg
.get());
30
ASSERT_STREQ(
"I lost "
, sub.
collector
.
msg
->reason_text.c_str());
31
sub.
collector
.
msg
.reset();
32
33
nodes.
spinBoth
(
uavcan::MonotonicDuration::fromMSec
(300));
34
ASSERT_TRUE(sub.
collector
.
msg
.get());
35
ASSERT_STREQ(
"I lost "
, sub.
collector
.
msg
->reason_text.c_str());
36
sub.
collector
.
msg
.reset();
37
38
nodes.
spinBoth
(
uavcan::MonotonicDuration::fromMSec
(300));
39
ASSERT_TRUE(sub.
collector
.
msg
.get());
40
ASSERT_STREQ(
"I lost "
, sub.
collector
.
msg
->reason_text.c_str());
41
sub.
collector
.
msg
.reset();
42
43
panicker.
dontPanic
();
44
ASSERT_FALSE(panicker.
isPanicking
());
45
46
nodes.
spinBoth
(
uavcan::MonotonicDuration::fromMSec
(300));
47
ASSERT_FALSE(sub.
collector
.
msg
.get());
48
}
uavcan::DefaultDataTypeRegistrator
Definition:
global_data_type_registry.hpp:186
SubscriberWithCollector
Definition:
libuavcan/libuavcan/test/protocol/helpers.hpp:33
uavcan::PanicBroadcaster::panic
void panic(const char *short_reason_description, MonotonicDuration broadcasting_period=MonotonicDuration::fromMSec(100), const TransferPriority priority=TransferPriority::Default)
Definition:
panic_broadcaster.hpp:50
uavcan::DurationBase< MonotonicDuration >::fromMSec
static MonotonicDuration fromMSec(int64_t ms)
Definition:
time.hpp:41
uavcan::PanicBroadcaster::getReason
const protocol::Panic::FieldTypes::reason_text & getReason() const
Definition:
panic_broadcaster.hpp:86
uavcan::PanicBroadcaster::dontPanic
void dontPanic()
Definition:
panic_broadcaster.hpp:78
SubscriberWithCollector::start
int start()
Definition:
libuavcan/libuavcan/test/protocol/helpers.hpp:45
TEST
TEST(PanicBroadcaster, Basic)
Definition:
panic_broadcaster.cpp:10
uavcan::PanicBroadcaster
Definition:
panic_broadcaster.hpp:18
helpers.hpp
InterlinkedTestNodes
Definition:
test_node.hpp:149
SubscriberWithCollector::collector
Collector collector
Definition:
libuavcan/libuavcan/test/protocol/helpers.hpp:38
InterlinkedTestNodes::a
TestNode a
Definition:
test_node.hpp:155
SubscriptionCollector::msg
std::unique_ptr< DataType > msg
Definition:
libuavcan/libuavcan/test/protocol/helpers.hpp:23
InterlinkedTestNodes::spinBoth
int spinBoth(uavcan::MonotonicDuration duration)
Definition:
test_node.hpp:176
panic_broadcaster.hpp
uavcan::GlobalDataTypeRegistry::instance
static GlobalDataTypeRegistry & instance()
Definition:
uc_global_data_type_registry.cpp:128
uavcan::PanicBroadcaster::isPanicking
bool isPanicking() const
Definition:
panic_broadcaster.hpp:84
InterlinkedTestNodes::b
TestNode b
Definition:
test_node.hpp:156
uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:02