libuav original

Dependents:   UAVCAN UAVCAN_Subscriber

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers panic_broadcaster.cpp Source File

panic_broadcaster.cpp

00001 /*
00002  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
00003  */
00004 
00005 #include <gtest/gtest.h>
00006 #include <uavcan/protocol/panic_broadcaster.hpp>
00007 #include "helpers.hpp"
00008 
00009 
00010 TEST(PanicBroadcaster, Basic)
00011 {
00012     InterlinkedTestNodesWithSysClock nodes;
00013 
00014     uavcan::PanicBroadcaster panicker(nodes.a);
00015 
00016     SubscriberWithCollector<uavcan::protocol::Panic> sub(nodes.b);
00017 
00018     uavcan::GlobalDataTypeRegistry::instance().reset();
00019     uavcan::DefaultDataTypeRegistrator<uavcan::protocol::Panic> _reg1;
00020 
00021     ASSERT_LE(0, sub.start());
00022 
00023     panicker.panic("I lost my towel!");  // Only the first 7 chars allowed
00024 
00025     ASSERT_STREQ("I lost ", panicker.getReason().c_str());
00026     ASSERT_TRUE(panicker.isPanicking());
00027 
00028     nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(10));
00029     ASSERT_TRUE(sub.collector.msg.get());
00030     ASSERT_STREQ("I lost ", sub.collector.msg->reason_text.c_str());
00031     sub.collector.msg.reset();
00032 
00033     nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(300));
00034     ASSERT_TRUE(sub.collector.msg.get());
00035     ASSERT_STREQ("I lost ", sub.collector.msg->reason_text.c_str());
00036     sub.collector.msg.reset();
00037 
00038     nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(300));
00039     ASSERT_TRUE(sub.collector.msg.get());
00040     ASSERT_STREQ("I lost ", sub.collector.msg->reason_text.c_str());
00041     sub.collector.msg.reset();
00042 
00043     panicker.dontPanic();
00044     ASSERT_FALSE(panicker.isPanicking());
00045 
00046     nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(300));
00047     ASSERT_FALSE(sub.collector.msg.get());
00048 }