13#include "FppTest/struct/NonPrimitiveSerializableAc.hpp"
18#include "STest/Pick/Pick.hpp"
20#include "gtest/gtest.h"
32 testEnum =
static_cast<StructEnum::T
>(STest::Pick::startLength(
37 for (U32 i = 0; i < StructArray::SIZE; i++) {
48 for (U32 i = 0; i < 3; i++) {
52 for (U32 i = 0; i < 3; i++) {
68 for (U32 i = 0; i < 3; i++) {
71 for (U32 i = 0; i < 3; i++) {
102 StructArray defaultArray;
103 Primitive defaultStruct1(
true, 0, 0, 3.14);
104 Primitive defaultStruct2(
true, 0, 0, 1.16);
108 NonPrimitive::SERIALIZED_SIZE,
109 NonPrimitive::StringSize80::SERIALIZED_SIZE
110 + StructEnum::SERIALIZED_SIZE
111 + StructArray::SERIALIZED_SIZE
112 + Primitive::SERIALIZED_SIZE
114 + (3 * Primitive::SERIALIZED_SIZE)
118 ASSERT_EQ(s.getmString(),
"");
119 ASSERT_EQ(s.getmEnum(), StructEnum::C);
120 ASSERT_EQ(s.getmArray(), defaultArray);
121 ASSERT_EQ(s.getmStruct(), defaultStruct1);
123 for (U32 i = 0; i < 3; i++) {
124 ASSERT_EQ(s.getmU32Arr()[i], 0);
126 for (U32 i = 0; i < 3; i++) {
127 ASSERT_EQ(s.getmStructArr()[i], defaultStruct2);
134 NonPrimitive s1(testString, testEnum, testArray,
135 testStruct, testU32Arr, testStructArr);
136 assertStructMembers(s1);
139 NonPrimitive s2(testString, testEnum, testArray,
140 testStruct, testU32Arr[0], testStructArr[0]);
142 ASSERT_EQ(s2.getmString(), testString);
143 ASSERT_EQ(s2.getmEnum(), testEnum);
144 ASSERT_EQ(s2.getmArray(), testArray);
145 ASSERT_EQ(s2.getmStruct(), testStruct);
147 for (U32 i = 0; i < 3; i++) {
148 ASSERT_EQ(s2.getmU32Arr()[i], testU32Arr[0]);
150 for (U32 i = 0; i < 3; i++) {
151 ASSERT_EQ(s2.getmStructArr()[i], testStructArr[0]);
156 assertStructMembers(s3);
162 NonPrimitive s2(testString, testEnum, testArray,
163 testStruct, testU32Arr, testStructArr);
167 assertStructMembers(s1);
169 NonPrimitive& s1Ref = s1;
171 ASSERT_EQ(&s1, &s1Ref);
178 ASSERT_TRUE(s1 == s2);
179 ASSERT_FALSE(s1 != s2);
181 s1.setmString(testString);
183 ASSERT_FALSE(s1 == s2);
184 ASSERT_TRUE(s1 != s2);
186 s2.setmString(testString);
187 s1.setmEnum(testEnum);
190 ASSERT_FALSE(s1 == s2);
191 ASSERT_TRUE(s1 != s2);
193 s2.setmEnum(testEnum);
194 s1.setmArray(testArray);
196 ASSERT_FALSE(s1 == s2);
197 ASSERT_TRUE(s1 != s2);
199 s2.setmArray(testArray);
200 s1.setmStruct(testStruct);
202 ASSERT_FALSE(s1 == s2);
203 ASSERT_TRUE(s1 != s2);
205 s2.setmStruct(testStruct);
206 s1.setmU32Arr(testU32Arr);
208 ASSERT_FALSE(s1 == s2);
209 ASSERT_TRUE(s1 != s2);
211 s2.setmU32Arr(testU32Arr);
212 s1.setmStructArr(testStructArr);
214 ASSERT_FALSE(s1 == s2);
215 ASSERT_TRUE(s1 != s2);
217 s2.setmStructArr(testStructArr);
219 ASSERT_TRUE(s1 == s2);
220 ASSERT_FALSE(s1 != s2);
228 s1.set(testString, testEnum, testArray,
229 testStruct, testU32Arr, testStructArr);
230 assertStructMembers(s1);
233 s2.setmString(testString);
234 ASSERT_EQ(s2.getmString(), testString);
236 s2.setmEnum(testEnum);
237 ASSERT_EQ(s2.getmEnum(), testEnum);
239 s2.setmArray(testArray);
240 ASSERT_EQ(s2.getmArray(), testArray);
242 s2.setmStruct(testStruct);
243 ASSERT_EQ(s2.getmStruct(), testStruct);
245 s2.setmU32Arr(testU32Arr);
246 for (U32 i = 0; i < 3; i++) {
247 ASSERT_EQ(s2.getmU32Arr()[i], testU32Arr[i]);
250 s2.setmStructArr(testStructArr);
251 for (U32 i = 0; i < 3; i++) {
252 ASSERT_EQ(s2.getmStructArr()[i], testStructArr[i]);
256 s2.getmStruct().setmU32(testU32Arr[0]);
257 ASSERT_EQ(s2.getmStruct().getmU32(), testU32Arr[0]);
262 NonPrimitive s(testString, testEnum, testArray,
263 testStruct, testU32Arr, testStructArr);
266 U32 stringSerializedSize = testString.length() +
sizeof(
FwBuffSizeType);
267 U32 serializedSize = NonPrimitive::SERIALIZED_SIZE
268 - NonPrimitive::StringSize80::SERIALIZED_SIZE
269 + stringSerializedSize;
273 U8 data[NonPrimitive::SERIALIZED_SIZE];
289 assertUnsuccessfulSerialization(s, stringSerializedSize - 1);
290 assertUnsuccessfulSerialization(s, stringSerializedSize
291 + StructEnum::SERIALIZED_SIZE - 1);
292 assertUnsuccessfulSerialization(s, stringSerializedSize
293 + StructEnum::SERIALIZED_SIZE + StructArray::SERIALIZED_SIZE - 1);
294 assertUnsuccessfulSerialization(s, stringSerializedSize
295 + StructEnum::SERIALIZED_SIZE + StructArray::SERIALIZED_SIZE
296 + Primitive::SERIALIZED_SIZE - 1);
297 assertUnsuccessfulSerialization(s, stringSerializedSize
298 + StructEnum::SERIALIZED_SIZE + StructArray::SERIALIZED_SIZE
299 + Primitive::SERIALIZED_SIZE + (3 *
sizeof(U32)) - 1);
300 assertUnsuccessfulSerialization(s, serializedSize - 1);
305 NonPrimitive s(testString, testEnum, testArray,
306 testStruct, testU32Arr, testStructArr);
307 std::stringstream buf1, buf2;
312 <<
"mString = " << testString <<
", "
313 <<
"mEnum = " << testEnum <<
", "
314 <<
"mArray = " << testArray <<
", "
315 <<
"mStruct = " << testStruct <<
", "
317 << testU32Arr[0] <<
", "
318 << testU32Arr[1] <<
", "
319 << testU32Arr[2] <<
" ], "
321 << testStructArr[0] <<
", "
322 << testStructArr[1] <<
", "
323 << testStructArr[2] <<
" ] "
327 char buf2Str[FW_SERIALIZABLE_TO_STRING_BUFFER_SIZE];
329 FW_SERIALIZABLE_TO_STRING_BUFFER_SIZE);
331 ASSERT_STREQ(buf1.str().c_str(), buf2Str);
uint8_t U8
8-bit unsigned integer
TEST_F(NonPrimitiveStructTest, Default)
A variable-length serializable buffer.
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
NATIVE_UINT_TYPE getBuffLength() const
returns current buffer size
void assertUnsuccessfulSerialization(NonPrimitive &s, U32 bufSize)
void assertStructMembers(const NonPrimitive &s)
NonPrimitive::StringSize80 testString
Primitive testStructArr[3]
void setString(char *buf, U32 size)
char * string_copy(char *destination, const char *source, U32 num)
copy string with null-termination guaranteed
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.