From 1140c4c6ab4bb282a80f3bbc92e5fb1ee03f096c Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Wed, 15 Jul 2020 12:12:05 +0200 Subject: [PATCH] SDK: Provide comparison operator for device and topo states --- fairmq/sdk/Topology.h | 10 ++++++++++ test/sdk/_topology.cxx | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/fairmq/sdk/Topology.h b/fairmq/sdk/Topology.h index c530d79c..999abd9f 100644 --- a/fairmq/sdk/Topology.h +++ b/fairmq/sdk/Topology.h @@ -92,6 +92,16 @@ enum class AggregatedTopologyState : int Mixed }; +inline auto operator==(DeviceState lhs, AggregatedTopologyState rhs) -> bool +{ + return static_cast(lhs) == static_cast(rhs); +} + +inline auto operator==(AggregatedTopologyState lhs, DeviceState rhs) -> bool +{ + return static_cast(lhs) == static_cast(rhs); +} + inline std::ostream& operator<<(std::ostream& os, const AggregatedTopologyState& state) { if (state == AggregatedTopologyState::Mixed) { diff --git a/test/sdk/_topology.cxx b/test/sdk/_topology.cxx index 6f1220c0..24b4ef7b 100644 --- a/test/sdk/_topology.cxx +++ b/test/sdk/_topology.cxx @@ -452,4 +452,26 @@ TEST_F(Topology, SetAndGetProperties) ASSERT_EQ(topo.ChangeState(TopologyTransition::ResetDevice).first, std::error_code()); } +TEST(Topology2, AggregatedTopologyStateComparison) +{ + using namespace fair::mq::sdk; + ASSERT_TRUE(DeviceState::Undefined == AggregatedTopologyState::Undefined); + ASSERT_TRUE(AggregatedTopologyState::Undefined == DeviceState::Undefined); + ASSERT_TRUE(DeviceState::Ok == AggregatedTopologyState::Ok); + ASSERT_TRUE(DeviceState::Error == AggregatedTopologyState::Error); + ASSERT_TRUE(DeviceState::Idle == AggregatedTopologyState::Idle); + ASSERT_TRUE(DeviceState::InitializingDevice == AggregatedTopologyState::InitializingDevice); + ASSERT_TRUE(DeviceState::Initialized == AggregatedTopologyState::Initialized); + ASSERT_TRUE(DeviceState::Binding == AggregatedTopologyState::Binding); + ASSERT_TRUE(DeviceState::Bound == AggregatedTopologyState::Bound); + ASSERT_TRUE(DeviceState::Connecting == AggregatedTopologyState::Connecting); + ASSERT_TRUE(DeviceState::DeviceReady == AggregatedTopologyState::DeviceReady); + ASSERT_TRUE(DeviceState::InitializingTask == AggregatedTopologyState::InitializingTask); + ASSERT_TRUE(DeviceState::Ready == AggregatedTopologyState::Ready); + ASSERT_TRUE(DeviceState::Running == AggregatedTopologyState::Running); + ASSERT_TRUE(DeviceState::ResettingTask == AggregatedTopologyState::ResettingTask); + ASSERT_TRUE(DeviceState::ResettingDevice == AggregatedTopologyState::ResettingDevice); + ASSERT_TRUE(DeviceState::Exiting == AggregatedTopologyState::Exiting); +} + } // namespace