61 lines
2.0 KiB
C++
61 lines
2.0 KiB
C++
/**
|
|
* @file tests/can_net_node_uid.cpp
|
|
* @brief CAN Net node UID
|
|
* @date Dec 14, 2016
|
|
* @author jjacobs
|
|
* @copyright 2016 Dual Inventive Technology Centre B.V.
|
|
*/
|
|
#include "fixtures/CANTest.hpp"
|
|
|
|
/**
|
|
* Test DI_CAN_NET_CANID_MSG_NODE_UID macro
|
|
*/
|
|
TEST_F(DI_CAN, CANID_MSG_NODE_UID) {
|
|
struct di_can_msg *msg;
|
|
|
|
msg = di_can_msg_alloc_with_canid(&_ctx, DI_CAN_NET_CANID_MSG_NODE_UID(REPLY));
|
|
ASSERT_NE(nullptr, msg);
|
|
|
|
ASSERT_EQ(DI_CAN_MSGTYPE_NET, DI_CAN_GET_MSGTYPE(msg->canid));
|
|
ASSERT_EQ(DI_CAN_TRANSFERTYPE_REPLY, DI_CAN_GET_TRANSFERTYPE(msg->canid));
|
|
ASSERT_EQ(DI_CAN_NET_DTYPE_NODE_UID, DI_CAN_GET_DATATYPE(msg->canid));
|
|
|
|
di_can_msg_free(&msg);
|
|
}
|
|
|
|
/**
|
|
* Test di_can_net_send_node_uid
|
|
*/
|
|
TEST_F(DI_CAN, net_reply_node_uid) {
|
|
static const char validDeviceUID[DI_DEVICE_UID_LEN] = "deadbeefcafebabedeadbeefcafebabe";
|
|
struct di_can_msg *req;
|
|
|
|
req = di_can_msg_alloc_with_canid(&_ctx, DI_CAN_NET_CANID_MSG_NODE_UID(REQUEST));
|
|
ASSERT_NE(nullptr, req);
|
|
req->src_id = 0x13371337;
|
|
|
|
// Request is necessary and may not be NULL
|
|
ASSERT_EQ(DNE_PARAM, di_can_net_send_node_uid(&_ctx, validDeviceUID, NULL));
|
|
// To short
|
|
ASSERT_EQ(DNE_PARAM, di_can_net_send_node_uid(&_ctx, "cafebeefdeadbeefdeadbeefdeadbee", req));
|
|
// To long
|
|
ASSERT_EQ(DNE_PARAM, di_can_net_send_node_uid(&_ctx, "c01abeefdeadbeefdeadbeefdeadbeeff", req));
|
|
// Valid send
|
|
ASSERT_EQ(DNOK, di_can_net_send_node_uid(&_ctx, validDeviceUID, req));
|
|
|
|
// Receive send and validate
|
|
struct di_can_msg *rep = di_can_recv(&_ctx, DI_CAN_MSGTYPE_ANY);
|
|
|
|
ASSERT_NE(nullptr, rep);
|
|
ASSERT_EQ(DI_CAN_TRANSFERTYPE_REPLY, DI_CAN_GET_TRANSFERTYPE(rep->canid));
|
|
ASSERT_EQ(DI_CAN_NET_DTYPE_NODE_UID, DI_CAN_GET_DATATYPE(rep->canid));
|
|
ASSERT_EQ(_ctx.nodeid, rep->src_id);
|
|
ASSERT_EQ(0x13371337, rep->dst_id);
|
|
ASSERT_EQ(DI_CAN_PTYPE_STRING, rep->ptype);
|
|
ASSERT_EQ(DI_DEVICE_UID_LEN, rep->size);
|
|
ASSERT_STREQ(validDeviceUID, (const char *)rep->msg);
|
|
|
|
di_can_msg_free(&req);
|
|
di_can_msg_free(&rep);
|
|
}
|