mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
Don't base Value on NT_Value.
Also use std::string instead of NT_String. Conversions to/from the internal structures will be done at the interface.
This commit is contained in:
committed by
Peter Johnson
parent
555725a05b
commit
9906116d23
@@ -7,9 +7,6 @@
|
||||
|
||||
#include "WireDecoder.h"
|
||||
|
||||
#include "StringValueTest.h"
|
||||
#include "ValueTest.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include <cfloat>
|
||||
@@ -23,53 +20,46 @@ namespace ntimpl {
|
||||
class WireDecoderTest : public ::testing::Test {
|
||||
protected:
|
||||
virtual void SetUp() {
|
||||
Value v;
|
||||
v_boolean.SetBoolean(true);
|
||||
v_double.SetDouble(1.0);
|
||||
v_string.SetString("hello");
|
||||
v_raw.SetRaw("hello");
|
||||
v_boolean_array.SetBooleanArray(std::vector<int>{0, 1, 0});
|
||||
v_boolean_array_big.SetBooleanArray(std::vector<int>(255));
|
||||
v_double_array.SetDoubleArray(std::vector<double>{0.5, 0.25});
|
||||
v_double_array_big.SetDoubleArray(std::vector<double>(255));
|
||||
v_boolean = Value::MakeBoolean(true);
|
||||
v_double = Value::MakeDouble(1.0);
|
||||
v_string = Value::MakeString(llvm::StringRef("hello"));
|
||||
v_raw = Value::MakeRaw(llvm::StringRef("hello"));
|
||||
v_boolean_array = Value::MakeBooleanArray(std::vector<int>{0, 1, 0});
|
||||
v_boolean_array_big = Value::MakeBooleanArray(std::vector<int>(255));
|
||||
v_double_array = Value::MakeDoubleArray(std::vector<double>{0.5, 0.25});
|
||||
v_double_array_big = Value::MakeDoubleArray(std::vector<double>(255));
|
||||
|
||||
std::vector<StringValue> sa;
|
||||
sa.push_back(StringValue("hello"));
|
||||
sa.push_back(StringValue("goodbye"));
|
||||
v_string_array.SetStringArray(sa);
|
||||
std::vector<std::string> sa;
|
||||
sa.push_back("hello");
|
||||
sa.push_back("goodbye");
|
||||
v_string_array = Value::MakeStringArray(std::move(sa));
|
||||
|
||||
sa.clear();
|
||||
for (int i=0; i<255; ++i)
|
||||
sa.push_back(StringValue("h"));
|
||||
v_string_array_big.SetStringArray(sa);
|
||||
sa.push_back("h");
|
||||
v_string_array_big = Value::MakeStringArray(std::move(sa));
|
||||
|
||||
s_normal = std::string("hello");
|
||||
sv_normal = StringValue(s_normal);
|
||||
|
||||
s_long.clear();
|
||||
s_long.append(127, '*');
|
||||
s_long.push_back('x');
|
||||
sv_long = StringValue(s_long);
|
||||
|
||||
s_big2.clear();
|
||||
s_big2.append(65534, '*');
|
||||
s_big2.push_back('x');
|
||||
sv_big2 = StringValue(s_big2);
|
||||
|
||||
s_big3.clear();
|
||||
s_big3.append(65534, '*');
|
||||
s_big3.append(3, 'x');
|
||||
sv_big3 = StringValue(s_big3);
|
||||
}
|
||||
|
||||
Value v_empty;
|
||||
Value v_boolean, v_double, v_string, v_raw;
|
||||
Value v_boolean_array, v_boolean_array_big;
|
||||
Value v_double_array, v_double_array_big;
|
||||
Value v_string_array, v_string_array_big;
|
||||
std::shared_ptr<Value> v_boolean, v_double, v_string, v_raw;
|
||||
std::shared_ptr<Value> v_boolean_array, v_boolean_array_big;
|
||||
std::shared_ptr<Value> v_double_array, v_double_array_big;
|
||||
std::shared_ptr<Value> v_string_array, v_string_array_big;
|
||||
|
||||
std::string s_normal, s_long, s_big2, s_big3;
|
||||
StringValue sv_normal, sv_long, sv_big2, sv_big3;
|
||||
};
|
||||
|
||||
TEST_F(WireDecoderTest, Construct) {
|
||||
@@ -224,16 +214,16 @@ TEST_F(WireDecoderTest, Reset) {
|
||||
TEST_F(WireDecoderTest, ReadBooleanValue2) {
|
||||
raw_mem_istream is("\x01\x00", 2);
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN, &val));
|
||||
EXPECT_EQ(v_boolean, val);
|
||||
auto val = d.ReadValue(NT_BOOLEAN);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_boolean, *val);
|
||||
|
||||
Value v_false;
|
||||
v_false.SetBoolean(false);
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN, &val));
|
||||
EXPECT_EQ(v_false, val);
|
||||
auto v_false = Value::MakeBoolean(false);
|
||||
val = d.ReadValue(NT_BOOLEAN);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_false, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -243,53 +233,51 @@ TEST_F(WireDecoderTest, ReadDoubleValue2) {
|
||||
"\x3f\xf0\x00\x00\x00\x00\x00\x00",
|
||||
16);
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_DOUBLE, &val));
|
||||
EXPECT_EQ(v_double, val);
|
||||
auto val = d.ReadValue(NT_DOUBLE);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_double, *val);
|
||||
|
||||
Value val2;
|
||||
ASSERT_TRUE(d.ReadValue(NT_DOUBLE, &val2));
|
||||
EXPECT_EQ(v_double, val2);
|
||||
val = d.ReadValue(NT_DOUBLE);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_double, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadStringValue2) {
|
||||
raw_mem_istream is("\x00\x05hello\x00\x03" "bye\x55", 13);
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_STRING, &val));
|
||||
EXPECT_EQ(v_string, val);
|
||||
auto val = d.ReadValue(NT_STRING);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_string, *val);
|
||||
|
||||
Value val2;
|
||||
Value v_bye;
|
||||
v_bye.SetString("bye");
|
||||
ASSERT_TRUE(d.ReadValue(NT_STRING, &val2));
|
||||
EXPECT_EQ(v_bye, val2);
|
||||
auto v_bye = Value::MakeString(llvm::StringRef("bye"));
|
||||
val = d.ReadValue(NT_STRING);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_bye, *val);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadBooleanArrayValue2) {
|
||||
raw_mem_istream is("\x03\x00\x01\x00\x02\x01\x00\xff", 8);
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN_ARRAY, &val));
|
||||
EXPECT_EQ(v_boolean_array, val);
|
||||
auto val = d.ReadValue(NT_BOOLEAN_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_boolean_array, *val);
|
||||
|
||||
Value val2;
|
||||
Value v_boolean_array2;
|
||||
v_boolean_array2.SetBooleanArray(std::vector<int>{1, 0});
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN_ARRAY, &val2));
|
||||
EXPECT_EQ(v_boolean_array2, val2);
|
||||
auto v_boolean_array2 = Value::MakeBooleanArray(std::vector<int>{1, 0});
|
||||
val = d.ReadValue(NT_BOOLEAN_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_boolean_array2, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -299,11 +287,11 @@ TEST_F(WireDecoderTest, ReadBooleanArrayBigValue2) {
|
||||
s.append(255, '\x00');
|
||||
raw_mem_istream is(s.data(), s.size());
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN_ARRAY, &val));
|
||||
EXPECT_EQ(v_boolean_array_big, val);
|
||||
auto val = d.ReadValue(NT_BOOLEAN_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_boolean_array_big, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -313,15 +301,15 @@ TEST_F(WireDecoderTest, ReadDoubleArrayValue2) {
|
||||
"\x3f\xd0\x00\x00\x00\x00\x00\x00\x55",
|
||||
18);
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_DOUBLE_ARRAY, &val));
|
||||
EXPECT_EQ(v_double_array, val);
|
||||
auto val = d.ReadValue(NT_DOUBLE_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_double_array, *val);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -331,26 +319,26 @@ TEST_F(WireDecoderTest, ReadDoubleArrayBigValue2) {
|
||||
s.append(255*8, '\x00');
|
||||
raw_mem_istream is(s.data(), s.size());
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_DOUBLE_ARRAY, &val));
|
||||
EXPECT_EQ(v_double_array_big, val);
|
||||
auto val = d.ReadValue(NT_DOUBLE_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_double_array_big, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadStringArrayValue2) {
|
||||
raw_mem_istream is("\x02\x00\x05hello\x00\x07goodbye\x55", 18);
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_STRING_ARRAY, &val));
|
||||
EXPECT_EQ(v_string_array, val);
|
||||
auto val = d.ReadValue(NT_STRING_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_string_array, *val);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -361,43 +349,42 @@ TEST_F(WireDecoderTest, ReadStringArrayBigValue2) {
|
||||
s.append("\x00\x01h", 3);
|
||||
raw_mem_istream is(s.data(), s.size());
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_STRING_ARRAY, &val));
|
||||
EXPECT_EQ(v_string_array_big, val);
|
||||
auto val = d.ReadValue(NT_STRING_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_string_array_big, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadValueError2) {
|
||||
raw_mem_istream is("", 0);
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_FALSE(d.ReadValue(NT_UNASSIGNED, &val)); // unassigned
|
||||
ASSERT_FALSE(d.ReadValue(NT_UNASSIGNED)); // unassigned
|
||||
ASSERT_NE(nullptr, d.error());
|
||||
|
||||
d.Reset();
|
||||
ASSERT_FALSE(d.ReadValue(NT_RAW, &val)); // not supported
|
||||
ASSERT_FALSE(d.ReadValue(NT_RAW)); // not supported
|
||||
ASSERT_NE(nullptr, d.error());
|
||||
|
||||
d.Reset();
|
||||
ASSERT_FALSE(d.ReadValue(NT_RPC, &val)); // not supported
|
||||
ASSERT_FALSE(d.ReadValue(NT_RPC)); // not supported
|
||||
ASSERT_NE(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadBooleanValue3) {
|
||||
raw_mem_istream is("\x01\x00", 2);
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN, &val));
|
||||
EXPECT_EQ(v_boolean, val);
|
||||
auto val = d.ReadValue(NT_BOOLEAN);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_boolean, *val);
|
||||
|
||||
Value v_false;
|
||||
v_false.SetBoolean(false);
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN, &val));
|
||||
EXPECT_EQ(v_false, val);
|
||||
auto v_false = Value::MakeBoolean(false);
|
||||
val = d.ReadValue(NT_BOOLEAN);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_false, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -407,74 +394,71 @@ TEST_F(WireDecoderTest, ReadDoubleValue3) {
|
||||
"\x3f\xf0\x00\x00\x00\x00\x00\x00",
|
||||
16);
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_DOUBLE, &val));
|
||||
EXPECT_EQ(v_double, val);
|
||||
auto val = d.ReadValue(NT_DOUBLE);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_double, *val);
|
||||
|
||||
Value val2;
|
||||
ASSERT_TRUE(d.ReadValue(NT_DOUBLE, &val2));
|
||||
EXPECT_EQ(v_double, val2);
|
||||
val = d.ReadValue(NT_DOUBLE);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_double, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadStringValue3) {
|
||||
raw_mem_istream is("\x05hello\x03" "bye\x55", 11);
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_STRING, &val));
|
||||
EXPECT_EQ(v_string, val);
|
||||
auto val = d.ReadValue(NT_STRING);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_string, *val);
|
||||
|
||||
Value val2;
|
||||
Value v_bye;
|
||||
v_bye.SetString("bye");
|
||||
ASSERT_TRUE(d.ReadValue(NT_STRING, &val2));
|
||||
EXPECT_EQ(v_bye, val2);
|
||||
auto v_bye = Value::MakeString(llvm::StringRef("bye"));
|
||||
val = d.ReadValue(NT_STRING);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_bye, *val);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadRawValue3) {
|
||||
raw_mem_istream is("\x05hello\x03" "bye\x55", 11);
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_RAW, &val));
|
||||
EXPECT_EQ(v_raw, val);
|
||||
auto val = d.ReadValue(NT_RAW);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_raw, *val);
|
||||
|
||||
Value val2;
|
||||
Value v_bye;
|
||||
v_bye.SetRaw("bye");
|
||||
ASSERT_TRUE(d.ReadValue(NT_RAW, &val2));
|
||||
EXPECT_EQ(v_bye, val2);
|
||||
auto v_bye = Value::MakeRaw(llvm::StringRef("bye"));
|
||||
val = d.ReadValue(NT_RAW);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_bye, *val);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_RAW, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_RAW));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadBooleanArrayValue3) {
|
||||
raw_mem_istream is("\x03\x00\x01\x00\x02\x01\x00\xff", 8);
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN_ARRAY, &val));
|
||||
EXPECT_EQ(v_boolean_array, val);
|
||||
auto val = d.ReadValue(NT_BOOLEAN_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_boolean_array, *val);
|
||||
|
||||
Value val2;
|
||||
Value v_boolean_array2;
|
||||
v_boolean_array2.SetBooleanArray(std::vector<int>{1, 0});
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN_ARRAY, &val2));
|
||||
EXPECT_EQ(v_boolean_array2, val2);
|
||||
auto v_boolean_array2 = Value::MakeBooleanArray(std::vector<int>{1, 0});
|
||||
val = d.ReadValue(NT_BOOLEAN_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_boolean_array2, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -484,11 +468,11 @@ TEST_F(WireDecoderTest, ReadBooleanArrayBigValue3) {
|
||||
s.append(255, '\x00');
|
||||
raw_mem_istream is(s.data(), s.size());
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_BOOLEAN_ARRAY, &val));
|
||||
EXPECT_EQ(v_boolean_array_big, val);
|
||||
auto val = d.ReadValue(NT_BOOLEAN_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_boolean_array_big, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_BOOLEAN_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -498,15 +482,15 @@ TEST_F(WireDecoderTest, ReadDoubleArrayValue3) {
|
||||
"\x3f\xd0\x00\x00\x00\x00\x00\x00\x55",
|
||||
18);
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_DOUBLE_ARRAY, &val));
|
||||
EXPECT_EQ(v_double_array, val);
|
||||
auto val = d.ReadValue(NT_DOUBLE_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_double_array, *val);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -516,26 +500,26 @@ TEST_F(WireDecoderTest, ReadDoubleArrayBigValue3) {
|
||||
s.append(255*8, '\x00');
|
||||
raw_mem_istream is(s.data(), s.size());
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_DOUBLE_ARRAY, &val));
|
||||
EXPECT_EQ(v_double_array_big, val);
|
||||
auto val = d.ReadValue(NT_DOUBLE_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_double_array_big, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_DOUBLE_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadStringArrayValue3) {
|
||||
raw_mem_istream is("\x02\x05hello\x07goodbye\x55", 16);
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_STRING_ARRAY, &val));
|
||||
EXPECT_EQ(v_string_array, val);
|
||||
auto val = d.ReadValue(NT_STRING_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_string_array, *val);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -546,19 +530,18 @@ TEST_F(WireDecoderTest, ReadStringArrayBigValue3) {
|
||||
s.append("\x01h", 2);
|
||||
raw_mem_istream is(s.data(), s.size());
|
||||
WireDecoder d(is, 0x0300u);
|
||||
Value val;
|
||||
ASSERT_TRUE(d.ReadValue(NT_STRING_ARRAY, &val));
|
||||
EXPECT_EQ(v_string_array_big, val);
|
||||
auto val = d.ReadValue(NT_STRING_ARRAY);
|
||||
ASSERT_TRUE(bool(val));
|
||||
EXPECT_EQ(*v_string_array_big, *val);
|
||||
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING_ARRAY, &val));
|
||||
ASSERT_FALSE(d.ReadValue(NT_STRING_ARRAY));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
TEST_F(WireDecoderTest, ReadValueError3) {
|
||||
raw_mem_istream is("", 0);
|
||||
WireDecoder d(is, 0x0200u);
|
||||
Value val;
|
||||
ASSERT_FALSE(d.ReadValue(NT_UNASSIGNED, &val)); // unassigned
|
||||
ASSERT_FALSE(d.ReadValue(NT_UNASSIGNED)); // unassigned
|
||||
ASSERT_NE(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -573,19 +556,19 @@ TEST_F(WireDecoderTest, ReadString2) {
|
||||
s.push_back('\x55');
|
||||
raw_mem_istream is(s.data(), s.size());
|
||||
WireDecoder d(is, 0x0200u);
|
||||
StringValue sv;
|
||||
ASSERT_TRUE(d.ReadString(&sv));
|
||||
EXPECT_EQ(sv_normal, sv);
|
||||
ASSERT_TRUE(d.ReadString(&sv));
|
||||
EXPECT_EQ(sv_long, sv);
|
||||
ASSERT_TRUE(d.ReadString(&sv));
|
||||
EXPECT_EQ(sv_big2, sv);
|
||||
std::string outs;
|
||||
ASSERT_TRUE(d.ReadString(&outs));
|
||||
EXPECT_EQ(s_normal, outs);
|
||||
ASSERT_TRUE(d.ReadString(&outs));
|
||||
EXPECT_EQ(s_long, outs);
|
||||
ASSERT_TRUE(d.ReadString(&outs));
|
||||
EXPECT_EQ(s_big2, outs);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadString(&sv));
|
||||
ASSERT_FALSE(d.ReadString(&outs));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
@@ -600,19 +583,19 @@ TEST_F(WireDecoderTest, ReadString3) {
|
||||
s.push_back('\x55');
|
||||
raw_mem_istream is(s.data(), s.size());
|
||||
WireDecoder d(is, 0x0300u);
|
||||
StringValue sv;
|
||||
ASSERT_TRUE(d.ReadString(&sv));
|
||||
EXPECT_EQ(sv_normal, sv);
|
||||
ASSERT_TRUE(d.ReadString(&sv));
|
||||
EXPECT_EQ(sv_long, sv);
|
||||
ASSERT_TRUE(d.ReadString(&sv));
|
||||
EXPECT_EQ(sv_big3, sv);
|
||||
std::string outs;
|
||||
ASSERT_TRUE(d.ReadString(&outs));
|
||||
EXPECT_EQ(s_normal, outs);
|
||||
ASSERT_TRUE(d.ReadString(&outs));
|
||||
EXPECT_EQ(s_long, outs);
|
||||
ASSERT_TRUE(d.ReadString(&outs));
|
||||
EXPECT_EQ(s_big3, outs);
|
||||
|
||||
unsigned int b;
|
||||
ASSERT_TRUE(d.Read8(&b));
|
||||
EXPECT_EQ(0x55u, b);
|
||||
|
||||
ASSERT_FALSE(d.ReadString(&sv));
|
||||
ASSERT_FALSE(d.ReadString(&outs));
|
||||
ASSERT_EQ(nullptr, d.error());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user