}
ACTION_P(AssignString, param) { strcpy(static_cast<char*>(arg1), param); }
-TEST(Serialization, maxString) {
+TEST(Serialization, maxStringPositive) {
using ::testing::_;
FakeIStream stream;
EXPECT_NO_THROW(Cynara::ProtocolSerialization::serialize(stream, string));
}
-TEST(Serialization, maxVector) {
+TEST(Serialization, maxVectorPositive) {
using ::testing::_;
FakeIStream stream;
std::vector<char> vector;
EXPECT_NO_THROW(Cynara::ProtocolSerialization::serialize(stream, vector));
}
-TEST(Serialization, vectorWithOverMaxString) {
+TEST(Serialization, vectorWithOverMaxStringNegative) {
using ::testing::_;
FakeIStream stream;
std::string string;
Cynara::InvalidProtocolException);
}
-TEST(Serialization, overMaxVector) {
+TEST(Serialization, overMaxVectorNegative) {
FakeIStream stream;
std::vector<char> vector;
Cynara::InvalidProtocolException);
}
-TEST(Serialization, overMaxString) {
+TEST(Serialization, overMaxStringNegative) {
FakeIStream stream;
std::string string;
Cynara::InvalidProtocolException);
}
-TEST(Deserialization, overMaxString) {
+TEST(Serialization, overMaxMapNegative) {
+ FakeIStream stream;
+ std::map<int, int> map;
+
+ for (int i = 0; i <= CYNARA_MAX_VECTOR_SIZE; i++) {
+ map[i] = i;
+ }
+
+ EXPECT_THROW(Cynara::ProtocolSerialization::serialize(stream, map),
+ Cynara::InvalidProtocolException);
+}
+
+TEST(Serialization, maxMapPositive) {
+ using ::testing::_;
+ FakeIStream stream;
+ std::map<int, int> map;
+
+ for (int i = 0; i < CYNARA_MAX_VECTOR_SIZE; i++) {
+ map[i] = i;
+ }
+
+ EXPECT_CALL(stream, write(_, _)).Times(2 * CYNARA_MAX_VECTOR_SIZE + 1);
+ EXPECT_NO_THROW(Cynara::ProtocolSerialization::serialize(stream, map));
+}
+
+TEST(Serialization, mapWithOverMaxKeyNegative) {
+ using ::testing::_;
+ FakeIStream stream;
+ std::map<std::string, int> map;
+
+ std::string key(CYNARA_MAX_ID_LENGTH + 1, 'c');
+ map[key] = 42;
+
+ EXPECT_CALL(stream, write(_, _)).Times(1);
+ EXPECT_THROW(Cynara::ProtocolSerialization::serialize(stream, map),
+ Cynara::InvalidProtocolException);
+}
+
+TEST(Serialization, mapWithOverMaxValueNegative) {
+ using ::testing::_;
+ FakeIStream stream;
+ std::map<int, std::string> map;
+
+ std::string value(CYNARA_MAX_ID_LENGTH + 1, 'c');
+ map[42] = value;
+
+ EXPECT_CALL(stream, write(_, _)).Times(2);
+ EXPECT_THROW(Cynara::ProtocolSerialization::serialize(stream, map),
+ Cynara::InvalidProtocolException);
+}
+
+TEST(Serialization, mapWithOverMaxValueVectorNegative) {
+ using ::testing::_;
+ FakeIStream stream;
+ std::map<int, std::vector<char>> map;
+
+ std::vector<char> value(CYNARA_MAX_ID_LENGTH + 1, 'c');
+ map[42] = value;
+
+ EXPECT_CALL(stream, write(_, _)).Times(2);
+ EXPECT_THROW(Cynara::ProtocolSerialization::serialize(stream, map),
+ Cynara::InvalidProtocolException);
+}
+
+TEST(Deserialization, overMaxStringNegative) {
using ::testing::_;
FakeIStream stream;
Cynara::InvalidProtocolException);
}
-TEST(Deserialization, overMaxStringWithLength) {
+TEST(Deserialization, overMaxStringWithLengthNegative) {
using ::testing::_;
FakeIStream stream;
Cynara::InvalidProtocolException);
}
-TEST(Deserialization, maxString) {
+TEST(Deserialization, maxStringPositive) {
using ::testing::_;
FakeIStream stream;
EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, string));
}
-TEST(Deserialization, maxStringWithLength) {
+TEST(Deserialization, maxStringWithLengthPositive) {
using ::testing::_;
FakeIStream stream;
string));
}
-TEST(Deserialization, overMaxVector) {
+TEST(Deserialization, overMaxVectorNegative) {
using ::testing::_;
FakeIStream stream;
std::vector<std::string> vector;
- EXPECT_CALL(stream, read(_, _)).WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH + 1));
+ EXPECT_CALL(stream, read(_, _)).WillOnce(AssignUInt16(CYNARA_MAX_VECTOR_SIZE + 1));
EXPECT_THROW(Cynara::ProtocolDeserialization::deserialize(stream, vector),
Cynara::InvalidProtocolException);
}
-TEST(Deserialization, maxVector) {
+TEST(Deserialization, maxVectorPositive) {
using ::testing::_;
using ::testing::Sequence;
Sequence sequence;
std::string stringInput;
std::vector<std::string> vector;
stringInput.resize(CYNARA_MAX_ID_LENGTH, ' ');
- vector.resize(CYNARA_MAX_VECTOR_SIZE);
EXPECT_CALL(stream, read(_, _)).InSequence(sequence)
.WillOnce(AssignUInt16(CYNARA_MAX_VECTOR_SIZE));
EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, vector));
}
-TEST(Deserialization, vectorWithOverMaxString) {
+TEST(Deserialization, vectorWithOverMaxStringNegative) {
using ::testing::_;
FakeIStream stream;
EXPECT_THROW(Cynara::ProtocolDeserialization::deserialize(stream, vector),
Cynara::InvalidProtocolException);
}
+
+TEST(Deserialization, overMaxMapNegative) {
+ using ::testing::_;
+
+ FakeIStream stream;
+ std::map<std::string, std::string> map;
+
+ EXPECT_CALL(stream, read(_, _)).WillOnce(AssignUInt16(CYNARA_MAX_VECTOR_SIZE + 1));
+ EXPECT_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map),
+ Cynara::InvalidProtocolException);
+}
+
+TEST(Deserialization, maxMapPositive) {
+ using ::testing::_;
+ using ::testing::Sequence;
+ Sequence sequence;
+
+ FakeIStream stream;
+ std::string stringInput;
+ std::map<std::string, std::string> map;
+ stringInput.resize(CYNARA_MAX_ID_LENGTH, ' ');
+
+ EXPECT_CALL(stream, read(_, _)).InSequence(sequence)
+ .WillOnce(AssignUInt16(CYNARA_MAX_VECTOR_SIZE));
+
+ for (int i = 0; i < CYNARA_MAX_VECTOR_SIZE; i++) {
+ EXPECT_CALL(stream, read(_, _)).InSequence(sequence)
+ .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
+ .WillOnce(AssignString(stringInput.c_str()))
+ .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
+ .WillOnce(AssignString(stringInput.c_str()));
+ }
+
+ EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map));
+}
+
+TEST(Deserialization, maxMapOfVectorsPositive) {
+ using ::testing::_;
+ using ::testing::Sequence;
+ Sequence sequence;
+
+ FakeIStream stream;
+ std::string stringInput;
+ std::map<std::string, std::string> map;
+ stringInput.resize(CYNARA_MAX_ID_LENGTH, ' ');
+
+ EXPECT_CALL(stream, read(_, _)).InSequence(sequence)
+ .WillOnce(AssignUInt16(CYNARA_MAX_VECTOR_SIZE));
+
+ for (int i = 0; i < CYNARA_MAX_VECTOR_SIZE; i++) {
+ EXPECT_CALL(stream, read(_, _)).InSequence(sequence)
+ .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
+ .WillOnce(AssignString(stringInput.c_str()))
+ .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
+ .WillOnce(AssignString(stringInput.c_str()));
+ }
+
+ EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map));
+}
+
+TEST(Deserialization, mapWithOverMaxKeyNegative) {
+ using ::testing::_;
+ using ::testing::Sequence;
+ Sequence sequence;
+
+ FakeIStream stream;
+ std::map<std::string, std::string> map;
+
+ EXPECT_CALL(stream, read(_, _)).WillOnce(AssignUInt16(1))
+ .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH + 1));
+ EXPECT_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map),
+ Cynara::InvalidProtocolException);
+}
+
+TEST(Deserialization, mapWithOverMaxValueNegative) {
+ using ::testing::_;
+ using ::testing::Sequence;
+ Sequence sequence;
+ std::string stringInput("a");
+ FakeIStream stream;
+ std::map<std::string, std::string> map;
+
+ EXPECT_CALL(stream, read(_, _))
+ .WillOnce(AssignUInt16(1))
+ .WillOnce(AssignUInt16(1))
+ .WillOnce(AssignString(stringInput.c_str()))
+ .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH + 1));
+ EXPECT_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map),
+ Cynara::InvalidProtocolException);
+}
+
+TEST(Deserialization, mapWithOverMaxValueVectorNegative) {
+ using ::testing::_;
+ using ::testing::Sequence;
+ Sequence sequence;
+ std::string stringInput("a");
+ FakeIStream stream;
+ std::map<std::string, std::vector<int>> map;
+
+ EXPECT_CALL(stream, read(_, _))
+ .WillOnce(AssignUInt16(1))
+ .WillOnce(AssignUInt16(1))
+ .WillOnce(AssignString(stringInput.c_str()))
+ .WillOnce(AssignUInt16(CYNARA_MAX_VECTOR_SIZE + 1));
+ EXPECT_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map),
+ Cynara::InvalidProtocolException);
+}