mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-19 02:23:34 +08:00
PanicBroadcaster
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <uavcan/protocol/panic_broadcaster.hpp>
|
||||
#include "helpers.hpp"
|
||||
|
||||
|
||||
TEST(PanicBroadcaster, Basic)
|
||||
{
|
||||
InterlinkedTestNodes nodes;
|
||||
|
||||
uavcan::PanicBroadcaster panicker(nodes.a);
|
||||
|
||||
SubscriberWithCollector<uavcan::protocol::Panic> sub(nodes.b);
|
||||
|
||||
uavcan::GlobalDataTypeRegistry::instance().reset();
|
||||
uavcan::DefaultDataTypeRegistrator<uavcan::protocol::Panic> _reg1;
|
||||
|
||||
ASSERT_LE(0, sub.start());
|
||||
|
||||
panicker.panic("I lost my towel!"); // Only the first 7 chars allowed
|
||||
|
||||
ASSERT_STREQ("I lost ", panicker.getReason().c_str());
|
||||
ASSERT_TRUE(panicker.isPanicking());
|
||||
|
||||
nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(2));
|
||||
ASSERT_TRUE(sub.collector.msg.get());
|
||||
ASSERT_STREQ("I lost ", sub.collector.msg->reason_text.c_str());
|
||||
sub.collector.msg.reset();
|
||||
|
||||
nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(300));
|
||||
ASSERT_TRUE(sub.collector.msg.get());
|
||||
ASSERT_STREQ("I lost ", sub.collector.msg->reason_text.c_str());
|
||||
sub.collector.msg.reset();
|
||||
|
||||
nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(300));
|
||||
ASSERT_TRUE(sub.collector.msg.get());
|
||||
ASSERT_STREQ("I lost ", sub.collector.msg->reason_text.c_str());
|
||||
sub.collector.msg.reset();
|
||||
|
||||
panicker.dontPanic();
|
||||
ASSERT_FALSE(panicker.isPanicking());
|
||||
|
||||
nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(300));
|
||||
ASSERT_FALSE(sub.collector.msg.get());
|
||||
}
|
||||
Reference in New Issue
Block a user