blob: 8b540674b5e847d6f44a23457043682b23efdc8b [file] [log] [blame]
#include <iostream>
#include <chrono>
#include <gtest/gtest.h>
#include <memory>
#include "Message.h"
#include "ONSFactory.h"
class MessageTest : public testing::Test {
protected:
void SetUp() override {
ubody_ = new unsigned char[10];
memset(ubody_, 0, 10);
strcpy(reinterpret_cast<char *>(ubody_), "RocketMQ");
sbody = std::string("RocketMQ");
}
void TearDown() override {
delete ubody_;
}
const char *topic_ = "Topic";
const char *tag_ = "Tag";
const char *key_ = "Key";
const char *body_ = "RocketMQ";
const char *user_key_ = "UserKey";
const char *user_value_ = "UserValue";
const char *sys_key_ = "SysKey";
const char *sys_value_ = "SysValue";
unsigned char *ubody_;
int bodylen = strlen("RocketMQ");
std::string sbody;
};
TEST_F(MessageTest, testMessage_TopicBeingNULL) {
EXPECT_THROW(
ons::Message msg(NULL, tag_, key_, body_);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessageWithoutKey_TopicBeingNULL) {
EXPECT_THROW(
ons::Message msg(NULL, tag_, body_);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessage_TopicLenBeingZero) {
EXPECT_THROW(
ons::Message msg(topic_, 0, tag_, strlen(tag_), body_, strlen(body_));,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessage_BodyBeingNULL) {
EXPECT_THROW(
ons::Message msg(topic_, tag_, key_, NULL);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessageWithoutKey_BodyBeingNULL) {
EXPECT_THROW(
ons::Message msg(topic_, tag_, NULL);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessage_BodyLenBeingZero) {
EXPECT_THROW(
ons::Message msg(topic_, strlen(topic_), tag_, strlen(tag_), body_, 0);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessageSysPerperty_KeyBeingNULL) {
ons::Message msg(topic_, tag_, key_, body_);
EXPECT_THROW(
msg.putSystemProperties(NULL, sys_value_);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessageSysPerperty_ValueBeingNULL) {
ons::Message msg(topic_, tag_, key_, body_);
EXPECT_THROW(
msg.putSystemProperties(sys_key_, NULL);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessageUserPerperty_KeyBeingNULL) {
ons::Message msg(topic_, tag_, key_, body_);
EXPECT_THROW(
msg.putSystemProperties(NULL, user_value_);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessageUserPerperty_ValueBeingNULL) {
ons::Message msg(topic_, tag_, key_, body_);
EXPECT_THROW(
msg.putSystemProperties(user_key_, NULL);,
ons::ONSClientException);
}
TEST_F(MessageTest, testMessageGetTopic_ValueBeingNormal) {
ons::Message msg(topic_, tag_, key_, body_);
ASSERT_STREQ(topic_, msg.getTopic());
}
TEST_F(MessageTest, testMessageetTopic_ValueBeingNormal) {
ons::Message msg("", tag_, key_, body_);
msg.setTopic(topic_);
ASSERT_STREQ(topic_, msg.getTopic());
}
TEST_F(MessageTest, testMessageGetTopic_ValueBeingNull) {
ons::Message msg("", tag_, key_, body_);
ASSERT_STREQ("", msg.getTopic());
}
TEST_F(MessageTest, testMessageSetTopic_ValueBeingNull) {
ons::Message msg("", tag_, key_, body_);
msg.setTopic(NULL);
ASSERT_STREQ("", msg.getTopic());
}
TEST_F(MessageTest, testMessageGetTag_ValueBeingNormal) {
ons::Message msg(topic_, tag_, key_, body_);
ASSERT_STREQ(tag_, msg.getTag());
}
TEST_F(MessageTest, testMessageSetTag_ValueBeingNormal) {
ons::Message msg(topic_, "", key_, body_);
msg.setTag(tag_);
ASSERT_STREQ(tag_, msg.getTag());
}
TEST_F(MessageTest, testMessageGetTag_ValueBeingNull) {
ons::Message msg(topic_, "", key_, body_);
ASSERT_STREQ("", msg.getTag());
}
TEST_F(MessageTest, testMessageSetTag_ValueBeingNull) {
ons::Message msg(topic_, "", key_, body_);
msg.setTag(NULL);
ASSERT_STREQ("", msg.getTag());
}
TEST_F(MessageTest, testMessageGetBody_ValueBeingNormal) {
ons::Message msg(topic_, tag_, key_, body_);
ASSERT_STREQ(body_, msg.getBody());
}
TEST_F(MessageTest, testMessageSetBody_ValueBeingNormal) {
ons::Message msg(topic_, tag_, key_, "");
msg.setBody(ubody_, bodylen);
ASSERT_STREQ(body_, msg.getBody());
}
TEST_F(MessageTest, testMessageGetByteBody_ValueBeingNormal) {
int len = 0;
ons::Message msg(topic_, tag_, key_, body_);
const char *strBody = msg.getByteBody(&len);
ASSERT_STREQ(body_, strBody);
ASSERT_EQ(strlen(body_), len);
}
TEST_F(MessageTest, testMessageSetBodyWithLen_ValueBeingNormal) {
int len = 0;
ons::Message msg(topic_, tag_, key_, "");
msg.setBody(ubody_, bodylen);
const char *strBody = msg.getByteBody(&len);
ASSERT_STREQ(body_, strBody);
ASSERT_EQ(bodylen, len);
}
TEST_F(MessageTest, testMessageGetBody_ValueBeingNull) {
ons::Message msg(topic_, tag_, key_, "");
ASSERT_STREQ("", msg.getBody());
}
TEST_F(MessageTest, testMessageSetBody_ValueBeingNull) {
ons::Message msg(topic_, tag_, key_, "");
msg.setBody(NULL, strlen(body_));
ASSERT_STREQ("", msg.getBody());
}
TEST_F(MessageTest, testMessageGetMsgBody_ValueBeingString) {
ons::Message msg(topic_, tag_, key_, body_);
ASSERT_STREQ(sbody.c_str(), msg.getMsgBody().c_str());
}
TEST_F(MessageTest, testMessageGetMsgBodyLen_ValueBeingString) {
ons::Message msg(topic_, tag_, key_, body_);
ASSERT_EQ(sbody.length(), msg.getBodySize());
}
TEST_F(MessageTest, testMessageSetMsgBody_ValueBeingString) {
ons::Message msg(topic_, tag_, key_, "");
msg.setMsgBody(sbody);
ASSERT_STREQ(sbody.c_str(), msg.getMsgBody().c_str());
}
TEST_F(MessageTest, testMessageGetUserPerperty_KeyBeingNull) {
ons::Message msg(topic_, tag_, key_, "");
ASSERT_TRUE(NULL == msg.getUserProperties(NULL));
}
TEST_F(MessageTest, testMessageGetUserPerperty_KeyNotExsit) {
ons::Message msg(topic_, tag_, key_, "");
ASSERT_STREQ("", msg.getUserProperties("NONEEXISTKEY"));
}
TEST_F(MessageTest, testMessageGetSysPerperty_KeyBeingNull) {
ons::Message msg(topic_, tag_, key_, "");
ASSERT_TRUE(NULL == msg.getSystemProperties(NULL));
}
TEST_F(MessageTest, testMessageGetSysPerperty_KeyNotExsit) {
ons::Message msg(topic_, tag_, key_, "");
ASSERT_STREQ("", msg.getUserProperties("NONEEXISTKEY"));
}
TEST_F(MessageTest, testMessageSetDeliverTime_ValueBeingNormal) {
ons::Message msg(topic_, tag_, key_, body_);
long long now = 123456789L;
msg.setStartDeliverTime(now);
ASSERT_EQ(now, msg.getStartDeliverTime());
}
TEST_F(MessageTest, testMessageSetDeliverTime_ValueBeingZero) {
ons::Message msg(topic_, tag_, key_, body_);
long long now = 0;
msg.setStartDeliverTime(now);
ASSERT_EQ(now, msg.getStartDeliverTime());
}
TEST_F(MessageTest, testMessageSetDeliverTime_ValueBeingNagetive) {
ons::Message msg(topic_, tag_, key_, body_);
long long now = -10000;
msg.setStartDeliverTime(now);
ASSERT_EQ(now, msg.getStartDeliverTime());
}