/** * @file tests/can_net_self.cpp * @brief CAN NET self node configuration * @date Dec 15, 2016 * @author jjacobs * @copyright 2016 Dual Inventive Technology Centre B.V. */ #include "fixtures/CANTest.hpp" /** Verify the correct behaviour of the self node role */ TEST_F(DI_CAN, net_self_set_node_role) { /* Initial value */ EXPECT_EQ(DI_CAN_NET_NODE_ROLE_PASSIVE, _ctx.net.self.role); /* UNKNOWN, LEADER are not allowed */ EXPECT_EQ(DNE_OPDENIED, di_can_net_self_set_node_role(&_ctx, DI_CAN_NET_NODE_ROLE_UNKNOWN)); EXPECT_EQ(DNE_OPDENIED, di_can_net_self_set_node_role(&_ctx, DI_CAN_NET_NODE_ROLE_LEADER)); /* PASSIVE -> FOLLOWER */ EXPECT_EQ(DNOK, di_can_net_self_set_node_role(&_ctx, DI_CAN_NET_NODE_ROLE_FOLLOWER)); EXPECT_EQ(DI_CAN_NET_NODE_ROLE_FOLLOWER, _ctx.net.self.role); /* LEADER -> FOLLOWER */ _ctx.net.self.role = DI_CAN_NET_NODE_ROLE_LEADER; EXPECT_EQ(DNOK, di_can_net_self_set_node_role(&_ctx, DI_CAN_NET_NODE_ROLE_FOLLOWER)); EXPECT_EQ(DI_CAN_NET_NODE_ROLE_FOLLOWER, _ctx.net.self.role); /* LEADER -> PASSIVE */ _ctx.net.self.role = DI_CAN_NET_NODE_ROLE_LEADER; EXPECT_EQ(DNOK, di_can_net_self_set_node_role(&_ctx, DI_CAN_NET_NODE_ROLE_PASSIVE)); EXPECT_EQ(DI_CAN_NET_NODE_ROLE_PASSIVE, _ctx.net.self.role); } /** Verify the correct behaviour of the self node type */ TEST_F(DI_CAN, net_self_set_node_type) { /* Initial value */ EXPECT_EQ(DI_CAN_NET_NODE_TYPE_UNKNOWN, _ctx.net.self.type); /* UNKNOWN -> UNKNOWN (denied) */ EXPECT_EQ(DNE_OPDENIED, di_can_net_self_set_node_type(&_ctx, DI_CAN_NET_NODE_TYPE_UNKNOWN)); /* UNKNOWN -> DEVICE -> DEVICE (denied) */ // EXPECT_EQ(DNOK, di_can_net_self_set_node_type(&_ctx, DI_CAN_NET_NODE_TYPE_DEVICE)); // EXPECT_EQ(DNE_OPDENIED, di_can_net_self_set_node_type(&_ctx, DI_CAN_NET_NODE_TYPE_DEVICE)); /* UNKNOWN -> GATEWAY */ _ctx.net.self.type = DI_CAN_NET_NODE_TYPE_UNKNOWN; EXPECT_EQ(DNOK, di_can_net_self_set_node_type(&_ctx, DI_CAN_NET_NODE_TYPE_GATEWAY)); EXPECT_EQ(DNE_OPDENIED, di_can_net_self_set_node_type(&_ctx, DI_CAN_NET_NODE_TYPE_GATEWAY)); }