hessian2/basic_codec/bool_codec_unittests.cc (65 lines of code) (raw):
#include <iostream>
#include <type_traits>
#include "gtest/gtest.h"
#include "hessian2/basic_codec/bool_codec.hpp"
#include "hessian2/test_framework/decoder_test_framework.h"
#include "hessian2/test_framework/encoder_test_framework.h"
namespace Hessian2 {
class BoolCodecTest : public testing::Test {
public:
void decodeSucc(absl::string_view data, bool out) {
Hessian2::Decoder decoder(data);
auto output = decoder.decode<bool>();
EXPECT_EQ(out, *output);
EXPECT_EQ(1, decoder.offset());
}
void decodeFail(absl::string_view data) {
Hessian2::Decoder decoder(data);
auto output = decoder.decode<bool>();
EXPECT_EQ(nullptr, output);
}
void encodeSucc(bool data, std::string expected_data = "") {
std::string res;
Hessian2::Encoder encoder(res);
encoder.encode<bool>(data);
if (!expected_data.empty()) {
EXPECT_EQ(expected_data, res);
}
decodeSucc(res, data);
}
};
TEST_F(TestDecoderFramework, DecoderJavaTestCaseForBool) {
{ EXPECT_TRUE(Decode<bool>("replyTrue", true)); }
{ EXPECT_TRUE(Decode<bool>("replyFalse", false)); }
}
TEST_F(TestEncoderFramework, EncoderJavaTestCaseForBool) {
{ EXPECT_TRUE(Encode<bool>("argTrue", true)); }
{ EXPECT_TRUE(Encode<bool>("argFalse", false)); }
}
TEST_F(BoolCodecTest, Decode) {
{
std::string data{0x01};
decodeFail(data);
}
{
std::string data{0x00};
decodeFail(data);
}
{
std::string data{'F'};
decodeSucc(data, false);
}
{
std::string data{'T'};
decodeSucc(data, true);
}
{
std::string data{'F', 'T'};
decodeSucc(data, false);
}
}
TEST_F(BoolCodecTest, encode) {
{ encodeSucc(true, "T"); }
{ encodeSucc(false, "F"); }
}
} // namespace Hessian2