69 lines
1.3 KiB
C++
69 lines
1.3 KiB
C++
#include <string>
|
|
#include <memory>
|
|
|
|
#include <di/rpc.h>
|
|
#include <di/time.h>
|
|
#include <gtest/gtest.h>
|
|
|
|
/* Used because serialize message header loads di_time_get_stamp */
|
|
TEST(time, init)
|
|
{
|
|
di_time_init();
|
|
}
|
|
|
|
/**
|
|
Deserialize
|
|
```
|
|
{
|
|
"dinetrpc": 1,
|
|
"rep": "notify:info",
|
|
"device:uid": "00000000000000000000000000000000",
|
|
"id": 2,
|
|
"result": null
|
|
}
|
|
```
|
|
*/
|
|
TEST(rpc_deserialize, msg_rep)
|
|
{
|
|
mpack_reader_t r;
|
|
struct di_rpc_msg msg;
|
|
|
|
mpack_reader_init_file(&r, "data/rpc_deserialize_msg_1.mp");
|
|
di_rpc_deserialize_msg(&r, &msg);
|
|
|
|
ASSERT_EQ(1U, msg.dinetrpc);
|
|
ASSERT_STREQ("00000000000000000000000000000000", msg.device_uid);
|
|
ASSERT_EQ(DI_RPC_MSG_TYPE_REPLY, msg.msg_type);
|
|
ASSERT_EQ(DI_RPC_TYPE_NOTIFY_INFO, msg.type);
|
|
ASSERT_EQ(2U, msg.id);
|
|
|
|
mpack_reader_destroy(&r);
|
|
}
|
|
|
|
/**
|
|
Deserialize
|
|
```
|
|
{
|
|
"dinetrpc": 1,
|
|
"req": "deadbeef",
|
|
"device:uid": "00000000000000000000000000000000",
|
|
"id": 1337
|
|
}
|
|
```
|
|
*/
|
|
TEST(rpc_deserialize, msg_unknown_type)
|
|
{
|
|
mpack_reader_t r;
|
|
struct di_rpc_msg msg;
|
|
|
|
mpack_reader_init_file(&r, "data/rpc_deserialize_msg_2.mp");
|
|
di_rpc_deserialize_msg(&r, &msg);
|
|
|
|
ASSERT_EQ(1U, msg.dinetrpc);
|
|
ASSERT_EQ(DI_RPC_MSG_TYPE_REQUEST, msg.msg_type);
|
|
ASSERT_EQ(DI_RPC_TYPE_UNKNOWN, msg.type);
|
|
ASSERT_EQ(1337U, msg.id);
|
|
|
|
mpack_reader_destroy(&r);
|
|
}
|