src.dualinventive.com/jjacobs/dinetrpcll-sniffer/libdi/tests/rpc_serialize_msg.cpp

126 lines
2.8 KiB
C++

#include <string>
#include <memory>
#include <di/rpc.h>
#include <di/time.h>
#include <gtest/gtest.h>
#include <di/device/uid.h>
#include "tests/rpc_serialize.h"
/** Used because serialize message header loads di_time_get_stamp */
TEST(time, init)
{
di_time_init();
}
/** Serialize RPC message publish */
TEST(rpc, serialize_rpc_msg_pub)
{
auto writer = TEST_RPC_SERIALIZE_WRITER;
struct di_rpc_msg msg;
di_rpc_msg_reset(&msg, di_device_uid_get());
msg.msg_type = DI_RPC_MSG_TYPE_PUBLISH;
msg.type = DI_RPC_TYPE_NOTIFY_INFO;
di_rpc_serialize_msg(writer->get(), &msg);
}
/** Serialize RPC RT message publish without project:id */
TEST(rpc, serialize_rpc_msg_rt_pub)
{
auto writer = TEST_RPC_SERIALIZE_WRITER;
struct di_rpc_msg msg;
di_rpc_msg_reset(&msg, di_device_uid_get());
msg.msg_type = DI_RPC_MSG_TYPE_PUBLISH;
msg.type = DI_RPC_TYPE_DEVICE_DATA;
msg.rt = true;
msg.rt_seqnr = 1337;
di_rpc_serialize_msg(writer->get(), &msg);
}
/** Serialize RPC RT message publish with project:id */
TEST(rpc, serialize_rpc_msg_rt_pub_with_project_id)
{
auto writer = TEST_RPC_SERIALIZE_WRITER;
struct di_rpc_msg msg;
di_rpc_msg_reset(&msg, di_device_uid_get());
msg.project_id = 666;
msg.msg_type = DI_RPC_MSG_TYPE_PUBLISH;
msg.type = DI_RPC_TYPE_DEVICE_DATA;
msg.rt = true;
msg.rt_seqnr = 1337;
di_rpc_serialize_msg(writer->get(), &msg);
}
/** Serialize RPC message request */
TEST(rpc, serialize_rpc_msg_req)
{
auto writer = TEST_RPC_SERIALIZE_WRITER;
struct di_rpc_msg msg;
di_rpc_msg_reset(&msg, di_device_uid_get());
msg.msg_type = DI_RPC_MSG_TYPE_REQUEST;
msg.type = DI_RPC_TYPE_NOTIFY_INFO;
msg.id = 1;
di_rpc_serialize_msg(writer->get(), &msg);
}
/** Serialize RPC message reply */
TEST(rpc, serialize_rpc_msg_rep)
{
auto writer = TEST_RPC_SERIALIZE_WRITER;
struct di_rpc_msg msg;
di_rpc_msg_reset(&msg, di_device_uid_get());
msg.id = 2;
msg.msg_type = DI_RPC_MSG_TYPE_REPLY;
msg.type = DI_RPC_TYPE_NOTIFY_INFO;
msg.err = DNOK;
di_rpc_serialize_msg(writer->get(), &msg);
}
/** Serialize RPC message reply error */
TEST(rpc, serialize_rpc_msg_rep_error)
{
auto writer = TEST_RPC_SERIALIZE_WRITER;
struct di_rpc_msg msg;
di_rpc_msg_reset(&msg, di_device_uid_get());
msg.id = 1234;
msg.msg_type = DI_RPC_MSG_TYPE_REPLY;
msg.type = DI_RPC_TYPE_NOTIFY_INFO;
di_rpc_serialize_msg(writer->get(), &msg);
}
/** Serialize RPC message reply error */
TEST(rpc, serialize_rpc_msg_rep_error_unknown_type)
{
auto writer = TEST_RPC_SERIALIZE_WRITER;
struct di_rpc_msg msg;
di_rpc_msg_reset(&msg, di_device_uid_get());
msg.id = 1234;
msg.err = DNE_OPNOTSUPP;
msg.msg_type = DI_RPC_MSG_TYPE_REPLY;
msg.type = DI_RPC_TYPE_UNKNOWN;
di_rpc_serialize_msg(writer->get(), &msg);
}