133 lines
3.2 KiB
C++
133 lines
3.2 KiB
C++
#include <memory>
|
|
#include <iostream>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
#include <di/Json.h>
|
|
#include <di/rpc/Class.h>
|
|
#include <di/rpc/Reader.h>
|
|
|
|
using namespace std;
|
|
using namespace Di;
|
|
using namespace Di::Rpc;
|
|
|
|
TEST(Msg, MsgType) {
|
|
Msg msg;
|
|
unique_ptr<Json> json;
|
|
|
|
// Unknown (initial)
|
|
EXPECT_EQ(msg.getMsgType(), Msg::Type::UNKNOWN);
|
|
|
|
// Unknown
|
|
json = unique_ptr<Json>(new Json("{\"test\":\"connection:disconnect\"}", 1));
|
|
msg.decodeHeader(move(json));
|
|
EXPECT_EQ(msg.getMsgType(), Msg::Type::UNKNOWN);
|
|
|
|
// Request
|
|
json = unique_ptr<Json>(new Json("{\"req\":\"test\"}", 1));
|
|
msg.decodeHeader(move(json));
|
|
EXPECT_EQ(msg.getMsgType(), Msg::Type::REQUEST);
|
|
|
|
// Reply
|
|
json = unique_ptr<Json>(new Json("{\"rep\":\"test\"}", 1));
|
|
msg.decodeHeader(move(json));
|
|
EXPECT_EQ(msg.getMsgType(), Msg::Type::REPLY);
|
|
|
|
// Publish
|
|
json = unique_ptr<Json>(new Json("{\"pub\":\"test\"}", 1));
|
|
msg.decodeHeader(move(json));
|
|
EXPECT_EQ(msg.getMsgType(), Msg::Type::PUBLISH);
|
|
}
|
|
|
|
TEST(Msg, RpcVersion) {
|
|
Msg msg;
|
|
unique_ptr<Json> json;
|
|
|
|
EXPECT_EQ(msg.getRpcVersion(), 0U);
|
|
|
|
json = unique_ptr<Json>(new Json("{\"dinetrpc\": 1}", 1));
|
|
msg.decodeHeader(move(json));
|
|
EXPECT_EQ(msg.getRpcVersion(), 1U);
|
|
|
|
json = unique_ptr<Json>(new Json("{\"dinetrpc\": 1234}", 1));
|
|
msg.decodeHeader(move(json));
|
|
EXPECT_EQ(msg.getRpcVersion(), 1234U);
|
|
}
|
|
|
|
TEST(Msg, ProjectId) {
|
|
Msg msg;
|
|
shared_ptr<Json> json;
|
|
|
|
EXPECT_EQ(msg.getProjectId(), 0U);
|
|
|
|
json = make_shared<Json>("{\"project:id\": 1234}", 0);
|
|
msg.decodeHeader(json);
|
|
EXPECT_EQ(msg.getProjectId(), 1234U);
|
|
}
|
|
|
|
TEST(Msg, DeviceUid) {
|
|
Msg msg;
|
|
shared_ptr<Json> json;
|
|
|
|
EXPECT_EQ(msg.getDeviceUid(), "");
|
|
|
|
json = make_shared<Json>("{\"device:uid\": \"1234\"}", 0);
|
|
msg.decodeHeader(json);
|
|
EXPECT_EQ(msg.getDeviceUid(), "1234");
|
|
|
|
json = make_shared<Json>("{\"device:uid\": \"5f5f64695f73696d756c61746f725f5f\"}");
|
|
msg.decodeHeader(json);
|
|
EXPECT_EQ(msg.getDeviceUid(), "5f5f64695f73696d756c61746f725f5f");
|
|
}
|
|
|
|
// The device:uid and project:id may coexist
|
|
TEST(Msg, DeviceUidAndProjectID) {
|
|
Msg msg;
|
|
shared_ptr<Json> json;
|
|
|
|
EXPECT_EQ(msg.getDeviceUid(), "");
|
|
|
|
json = make_shared<Json>("{\"device:uid\": \"1234\", \"project:id\": 666}", 0);
|
|
msg.decodeHeader(json);
|
|
EXPECT_EQ(msg.getDeviceUid(), "1234");
|
|
EXPECT_EQ(msg.getProjectId(), 666);
|
|
}
|
|
|
|
TEST(Msg, Id) {
|
|
Msg msg;
|
|
shared_ptr<Json> json;
|
|
|
|
EXPECT_EQ(msg.getId(), 0);
|
|
|
|
json = make_shared<Json>("{\"rep\":\"boem:bats\", \"id\": 1234}", 0);
|
|
msg.decodeHeader(move(json));
|
|
EXPECT_EQ(msg.getId(), 1234U);
|
|
}
|
|
|
|
TEST(Msg, ClassMethod) {
|
|
Msg msg;
|
|
shared_ptr<Json> json;
|
|
|
|
// Published connection disconnect event
|
|
json = make_shared<Json>("{\"pub\":\"connection:disconnect\"}", 0);
|
|
msg.decodeHeader(move(json));
|
|
EXPECT_EQ(msg.getMsgType(), Msg::Type::PUBLISH);
|
|
EXPECT_EQ(msg.getClass(), "connection");
|
|
EXPECT_EQ(msg.getMethod(), "disconnect");
|
|
}
|
|
|
|
TEST(Msg, getMsgType_StringFromEnum) {
|
|
Msg msg;
|
|
msg._msgType = Msg::Type::REQUEST;
|
|
EXPECT_EQ("req", msg.getMsgTypeString());
|
|
|
|
msg._msgType = Msg::Type::REPLY;
|
|
EXPECT_EQ("rep", msg.getMsgTypeString());
|
|
|
|
msg._msgType = Msg::Type::PUBLISH;
|
|
EXPECT_EQ("pub", msg.getMsgTypeString());
|
|
|
|
msg._msgType = Msg::Type::UNKNOWN;
|
|
EXPECT_EQ("<unknown>", msg.getMsgTypeString());
|
|
}
|