13#ifndef FPP_TEST_ARRAY_TEST_HPP
14#define FPP_TEST_ARRAY_TEST_HPP
18#include "STest/Pick/Pick.hpp"
19#include "gtest/gtest.h"
28 template <
typename ArrayType>
30 (
typename ArrayType::ElementType (&a)[ArrayType::SIZE]) {}
33 template <
typename ArrayType>
35 (
typename ArrayType::ElementType (&a)[ArrayType::SIZE]);
37 template <
typename ArrayType>
39 (
typename ArrayType::ElementType (&a)[ArrayType::SIZE]);
42 template <
typename ArrayType>
44 (
typename ArrayType::ElementType (&a)[ArrayType::SIZE]) {
45 return ArrayType::SERIALIZED_SIZE;
53template <
typename ArrayType>
57 FppTest::Array::setDefaultVals<ArrayType>(
defaultVals);
59 FppTest::Array::setTestVals<ArrayType>(
testVals);
64 for (U32 i = 0; i < ArrayType::SIZE; i++) {
74 typename ArrayType::ElementType
testVals[ArrayType::SIZE];
84 ASSERT_EQ(TypeParam::SIZE, 3);
86 TypeParam::SERIALIZED_SIZE,
87 TypeParam::SIZE * TypeParam::ElementType::SERIALIZED_SIZE
91 for (U32 i = 0; i < TypeParam::SIZE; i++) {
92 ASSERT_EQ(a[i], this->defaultVals[i]);
99 TypeParam a1(this->testVals);
100 for (U32 i = 0; i < TypeParam::SIZE; i++) {
101 ASSERT_EQ(a1[i], this->testVals[i]);
105 TypeParam a2(this->testVals[0]);
106 for (U32 i = 0; i < TypeParam::SIZE; i++) {
107 ASSERT_EQ(a2[i], this->testVals[0]);
111 TypeParam a3 = FppTest::Array::getMultiElementConstructedArray<TypeParam>
113 for (U32 i = 0; i < TypeParam::SIZE; i++) {
114 ASSERT_EQ(a3[i], this->testVals[i]);
119 for (U32 i = 0; i < TypeParam::SIZE; i++) {
120 ASSERT_EQ(a4[i], a1[i]);
128 for (U32 i = 0; i < TypeParam::SIZE; i++) {
129 a[i] = this->testVals[0];
130 ASSERT_EQ(a[i], this->testVals[0]);
140 for (U32 i = 0; i < TypeParam::SIZE; i++) {
141 ASSERT_EQ(a1[i], this->testVals[i]);
145 TypeParam& a1Ref = a1;
147 ASSERT_EQ(&a1, &a1Ref);
150 for (U32 i = 0; i < TypeParam::SIZE; i++) {
151 ASSERT_EQ(a2[i], a1[i]);
155 a1 = this->testVals[0];
156 for (U32 i = 0; i < TypeParam::SIZE; i++) {
157 ASSERT_EQ(a1[i], this->testVals[0]);
165 ASSERT_TRUE(a1 == a2);
166 ASSERT_FALSE(a1 != a2);
170 ASSERT_FALSE(a1 == a2);
171 ASSERT_TRUE(a1 != a2);
175 ASSERT_TRUE(a1 == a2);
176 ASSERT_FALSE(a1 != a2);
181 TypeParam a(this->testVals);
184 FppTest::Array::getSerializedSize<TypeParam>(this->testVals);
189 U8 data[TypeParam::SERIALIZED_SIZE];
209 U8 data2[serializedSize-1];
TYPED_TEST_SUITE_P(ArrayTest)
REGISTER_TYPED_TEST_SUITE_P(ArrayTest, Default, Constructors, SubscriptOp, AssignmentOp, EqualityOp, Serialization)
TYPED_TEST_P(ArrayTest, Default)
uint8_t U8
8-bit unsigned integer
ArrayType::ElementType defaultVals[ArrayType::SIZE]
ArrayType::ElementType testVals[ArrayType::SIZE]
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
ArrayType getMultiElementConstructedArray(typename ArrayType::ElementType(&a)[ArrayType::SIZE])
void setTestVals(typename ArrayType::ElementType(&a)[ArrayType::SIZE])
U32 getSerializedSize(typename ArrayType::ElementType(&a)[ArrayType::SIZE])
void setDefaultVals(typename ArrayType::ElementType(&a)[ArrayType::SIZE])
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.