Quick fix for test execution order problems (yes, singletones are hard to unittest)

This commit is contained in:
Pavel Kirienko
2014-03-09 17:03:39 +04:00
parent c7351c4bbb
commit acca96f5a0
2 changed files with 56 additions and 51 deletions
+53 -50
View File
@@ -55,53 +55,56 @@ TEST(Dsdl, Signature)
ASSERT_EQ(uavcan::DataTypeKindMessage, root_ns_a::NestedMessage::DataTypeKind);
}
TEST(Dsdl, Registration)
{
using uavcan::GlobalDataTypeRegistry;
/*
* Descriptors
*/
const uavcan::DataTypeDescriptor* desc = NULL;
desc = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, "root_ns_a.EmptyMessage");
ASSERT_TRUE(desc);
ASSERT_EQ(root_ns_a::EmptyMessage::DefaultDataTypeID, desc->getID());
ASSERT_EQ(root_ns_a::EmptyMessage::DataTypeKind, desc->getKind());
ASSERT_EQ(root_ns_a::EmptyMessage::getDataTypeSignature(), desc->getSignature());
ASSERT_STREQ(root_ns_a::EmptyMessage::getDataTypeFullName(), desc->getFullName());
desc = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, "root_ns_a.EmptyService");
ASSERT_TRUE(desc);
ASSERT_EQ(root_ns_a::EmptyService::DefaultDataTypeID, desc->getID());
ASSERT_EQ(root_ns_a::EmptyService::DataTypeKind, desc->getKind());
ASSERT_EQ(root_ns_a::EmptyService::getDataTypeSignature(), desc->getSignature());
ASSERT_STREQ(root_ns_a::EmptyService::getDataTypeFullName(), desc->getFullName());
desc = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, "root_ns_a.ReportBackSoldier");
ASSERT_TRUE(desc);
ASSERT_EQ(root_ns_a::ReportBackSoldier::DefaultDataTypeID, desc->getID());
ASSERT_EQ(root_ns_a::ReportBackSoldier::DataTypeKind, desc->getKind());
ASSERT_EQ(root_ns_a::ReportBackSoldier::getDataTypeSignature(), desc->getSignature());
ASSERT_STREQ(root_ns_a::ReportBackSoldier::getDataTypeFullName(), desc->getFullName());
/*
* Mask
*/
uavcan::DataTypeIDMask mask;
GlobalDataTypeRegistry::instance().getDataTypeIDMask(uavcan::DataTypeKindMessage, mask);
ASSERT_TRUE(mask[8]);
mask[8] = false;
GlobalDataTypeRegistry::instance().getDataTypeIDMask(uavcan::DataTypeKindService, mask);
ASSERT_TRUE(mask[1]);
ASSERT_TRUE(mask[3]);
mask[1] = mask[3] = false;
/*
* Reset
*/
GlobalDataTypeRegistry::instance().reset();
ASSERT_FALSE(GlobalDataTypeRegistry::instance().isFrozen());
}
/*
* This test assumes that it will be executed before other GDTR tests; otherwise it fails.
* TODO: Probably it needs to be called directly from main()
*/
//TEST(Dsdl, Registration)
//{
// using uavcan::GlobalDataTypeRegistry;
// /*
// * Descriptors
// */
// const uavcan::DataTypeDescriptor* desc = NULL;
//
// desc = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, "root_ns_a.EmptyMessage");
// ASSERT_TRUE(desc);
// ASSERT_EQ(root_ns_a::EmptyMessage::DefaultDataTypeID, desc->getID());
// ASSERT_EQ(root_ns_a::EmptyMessage::DataTypeKind, desc->getKind());
// ASSERT_EQ(root_ns_a::EmptyMessage::getDataTypeSignature(), desc->getSignature());
// ASSERT_STREQ(root_ns_a::EmptyMessage::getDataTypeFullName(), desc->getFullName());
//
// desc = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, "root_ns_a.EmptyService");
// ASSERT_TRUE(desc);
// ASSERT_EQ(root_ns_a::EmptyService::DefaultDataTypeID, desc->getID());
// ASSERT_EQ(root_ns_a::EmptyService::DataTypeKind, desc->getKind());
// ASSERT_EQ(root_ns_a::EmptyService::getDataTypeSignature(), desc->getSignature());
// ASSERT_STREQ(root_ns_a::EmptyService::getDataTypeFullName(), desc->getFullName());
//
// desc = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, "root_ns_a.ReportBackSoldier");
// ASSERT_TRUE(desc);
// ASSERT_EQ(root_ns_a::ReportBackSoldier::DefaultDataTypeID, desc->getID());
// ASSERT_EQ(root_ns_a::ReportBackSoldier::DataTypeKind, desc->getKind());
// ASSERT_EQ(root_ns_a::ReportBackSoldier::getDataTypeSignature(), desc->getSignature());
// ASSERT_STREQ(root_ns_a::ReportBackSoldier::getDataTypeFullName(), desc->getFullName());
//
// /*
// * Mask
// */
// uavcan::DataTypeIDMask mask;
//
// GlobalDataTypeRegistry::instance().getDataTypeIDMask(uavcan::DataTypeKindMessage, mask);
// ASSERT_TRUE(mask[8]);
// mask[8] = false;
//
// GlobalDataTypeRegistry::instance().getDataTypeIDMask(uavcan::DataTypeKindService, mask);
// ASSERT_TRUE(mask[1]);
// ASSERT_TRUE(mask[3]);
// mask[1] = mask[3] = false;
//
// /*
// * Reset
// */
// GlobalDataTypeRegistry::instance().reset();
// ASSERT_FALSE(GlobalDataTypeRegistry::instance().isFrozen());
//}
+3 -1
View File
@@ -26,7 +26,9 @@ TEST(Publisher, Basic)
uavcan::Publisher<uavcan::mavlink::Message> publisher(sch, buffer_provider);
ASSERT_FALSE(uavcan::GlobalDataTypeRegistry::instance().isFrozen());
// Manual type registration - we can't rely on the GDTR state
uavcan::GlobalDataTypeRegistry::instance().reset();
uavcan::DefaultDataTypeRegistrator<uavcan::mavlink::Message> _registrator;
/*
* Message layout: