src.dualinventive.com/dinet/libdi-php/libdi/tests/can_rpc.cpp

87 lines
2.5 KiB
C++

/**
* @file tests/can_rpc.cpp
* @brief brief
* @date Aug 25, 2015
* @author rheijden
* @copyright 2015 Dual Inventive Technology Centre B.V.
*
* descr
*/
#include "fixtures/CANTest.hpp"
TEST_F(DI_CAN, rpc_send_device_info) {
struct di_rpc_device_info d;
char l[] = "testlabel";
struct di_rpc_device_info_version version[1];
version[0].key = "fw-main";
version[0].value = "v1.0.2";
d.version = version;
d.versionn = DI_ARRAY_SIZE(version);
d.type = l;
ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_DEVICE_INFO, &d, 1));
ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_REPLY, DI_RPC_TYPE_DEVICE_INFO, &d, 1));
}
TEST_F(DI_CAN, rpc_send_sensor_info_bool) {
struct di_rpc_info info;
info.uid = 1;
info.label = "test-can-rpc-bool";
info.data_type = DI_RPC_DATA_TYPE_BOOL;
ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_SENSOR_INFO, &info, 1));
}
TEST_F(DI_CAN, rpc_send_sensor_info_enum) {
struct di_rpc_info info;
static const struct di_rpc_enum elist[] = {
{ "empty", 0 },
{ "crit", 1 },
{ "low", 2 },
{ "half", 3 },
{ "full", 4 }
};
info.uid = 1;
info.label = "bat1-state";
info.data_type = DI_RPC_DATA_TYPE_ENUM;
info.enumerator.size = DI_ARRAY_SIZE(elist);
info.enumerator.begin = (void *)elist;
ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_SENSOR_INFO, &info, 1));
}
TEST_F(DI_CAN, rpc_send_notify_info_single) {
struct di_rpc_info info;
info.uid = 1;
info.label = "wu-alarm-system";
info.data_type = DI_RPC_DATA_TYPE_BOOL;
ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_NOTIFY_INFO, &info, 1));
}
TEST_F(DI_CAN, rpc_send_log_info_single) {
struct di_rpc_log log;
log.msg = "Hello World!";
ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_LOG_INFO, &log, 1));
}
TEST_F(DI_CAN, rpc_send_device_ping) {
ASSERT_EQ(DNOK, di_can_rpc_send_device_ping(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, false));
// Realtime device:ping without an payload is currently not supported
ASSERT_EQ(DNE_PROTO, di_can_rpc_send_device_ping(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, true));
ASSERT_EQ(DNOK, di_can_rpc_send_device_ping(&_ctx, DI_CAN_TRANSFERTYPE_REPLY, false));
}
/** Send RPC reply on action:set with di_errno_t DNE_OPNOTSUPP (operation not supported) */
TEST_F(DI_CAN, rpc_send_errno) {
ASSERT_EQ(DNOK, di_can_rpc_send_errno(&_ctx, DI_CAN_TRANSFERTYPE_REPLY, DI_RPC_TYPE_ACTION_SET, DNE_OPNOTSUPP));
}