mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-11 11:03:34 +08:00
Comparison operators for generated types
This commit is contained in:
@@ -105,6 +105,19 @@ struct ${t.cpp_type_name}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool operator!=(const ${type_name}& rhs) const { return !operator==(rhs); }
|
||||
bool operator==(const ${type_name}& rhs) const
|
||||
{
|
||||
% if fields:
|
||||
return
|
||||
% for idx,a in enumerate(fields):
|
||||
${a.name} == rhs.${a.name} ${'&&' if (idx + 1) < len(fields) else ';'}
|
||||
% endfor
|
||||
% else:
|
||||
return true;
|
||||
% endif
|
||||
}
|
||||
|
||||
<%def name="generate_codec_calls_per_field(call_name, self_parameter_type)">
|
||||
static int ${call_name}(${self_parameter_type} self, ::uavcan::ScalarCodec& codec,
|
||||
::uavcan::TailArrayOptimizationMode tao_mode = ::uavcan::TailArrayOptEnabled)
|
||||
|
||||
@@ -55,6 +55,25 @@ TEST(Dsdl, Signature)
|
||||
ASSERT_EQ(uavcan::DataTypeKindMessage, root_ns_a::NestedMessage::DataTypeKind);
|
||||
}
|
||||
|
||||
|
||||
TEST(Dsdl, Operators)
|
||||
{
|
||||
{
|
||||
root_ns_a::EmptyService::Request a, b;
|
||||
ASSERT_TRUE(a == b);
|
||||
ASSERT_FALSE(a != b);
|
||||
}
|
||||
{
|
||||
root_ns_a::NestedMessage c, d;
|
||||
ASSERT_TRUE(c == d);
|
||||
ASSERT_FALSE(c != d);
|
||||
|
||||
c.field = 1;
|
||||
ASSERT_FALSE(c == d);
|
||||
ASSERT_TRUE(c != d);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 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()
|
||||
|
||||
@@ -55,17 +55,6 @@ struct SubscriptionListener
|
||||
SimpleBinder bindSimple() { return SimpleBinder(this, &SelfType::receiveSimple); }
|
||||
};
|
||||
|
||||
// TODO: add autogenerated comparison operators, then remove this
|
||||
static bool operator==(const uavcan::mavlink::Message& a, const uavcan::mavlink::Message& b)
|
||||
{
|
||||
return
|
||||
a.seq == b.seq &&
|
||||
a.sysid == b.sysid &&
|
||||
a.compid == b.compid &&
|
||||
a.msgid == b.msgid &&
|
||||
a.payload == b.payload;
|
||||
}
|
||||
|
||||
|
||||
TEST(Subscriber, Basic)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user