libuav original
Dependents: UAVCAN UAVCAN_Subscriber
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 }
Generated on Tue Jul 12 2022 17:17:33 by 1.7.2