13#ifndef FPP_TEST_ENUM_TEST_HPP
14#define FPP_TEST_ENUM_TEST_HPP
18#include "STest/Pick/Pick.hpp"
19#include "gtest/gtest.h"
28 template <
typename EnumType>
30 return static_cast<typename EnumType::T
>(0);
34 template <
typename EnumType>
36 U32 val = STest::Pick::startLength(
38 EnumType::NUM_CONSTANTS
41 return static_cast<typename EnumType::T
>(val);
45 template <
typename EnumType>
48 if (std::numeric_limits<typename EnumType::SerialType>::min() < 0) {
49 sign = STest::Pick::lowerUpper(0, 1);
54 return static_cast<typename EnumType::T
>(STest::Pick::lowerUpper(
55 EnumType::NUM_CONSTANTS,
57 std::numeric_limits<typename EnumType::SerialType>::max()
61 return static_cast<typename EnumType::T
>(STest::Pick::lowerUpper(
63 static_cast<U32
>((-1) *
64 (std::numeric_limits<typename EnumType::SerialType>::min() + 1)
75template <
typename EnumType>
86 TypeParam::SERIALIZED_SIZE,
87 sizeof(
typename TypeParam::SerialType)
91 ASSERT_EQ(e.e, FppTest::Enum::getDefaultValue<TypeParam>());
96 typename TypeParam::T validVal = FppTest::Enum::getValidValue<TypeParam>();
99 TypeParam e1(validVal);
100 ASSERT_EQ(e1.e, validVal);
104 ASSERT_EQ(e2.e, validVal);
112 typename TypeParam::T validVal = FppTest::Enum::getValidValue<TypeParam>();
116 ASSERT_EQ(e1.e, validVal);
120 ASSERT_EQ(e2.e, validVal);
126 typename TypeParam::T validVal1 = FppTest::Enum::getValidValue<TypeParam>();
127 typename TypeParam::T validVal2 = FppTest::Enum::getValidValue<TypeParam>();
128 while (validVal1 == validVal2) {
129 validVal2 = FppTest::Enum::getValidValue<TypeParam>();
134 TypeParam e3(validVal1);
135 TypeParam e4(validVal2);
138 ASSERT_TRUE(e3 == validVal1);
139 ASSERT_TRUE(e4 == validVal2);
140 ASSERT_FALSE(e3 == validVal2);
141 ASSERT_FALSE(e4 == validVal1);
143 ASSERT_TRUE(e1 == e2);
144 ASSERT_FALSE(e3 == e4);
147 ASSERT_TRUE(e3 != validVal2);
148 ASSERT_TRUE(e4 != validVal1);
149 ASSERT_FALSE(e3 != validVal1);
150 ASSERT_FALSE(e4 != validVal2);
152 ASSERT_TRUE(e3 != e4);
153 ASSERT_FALSE(e1 != e2);
158 TypeParam validEnum = FppTest::Enum::getValidValue<TypeParam>();
159 TypeParam invalidEnum = FppTest::Enum::getInvalidValue<TypeParam>();
161 ASSERT_TRUE(validEnum.isValid());
162 ASSERT_FALSE(invalidEnum.isValid());
167 TypeParam validEnum = FppTest::Enum::getValidValue<TypeParam>();
168 TypeParam invalidEnum = FppTest::Enum::getInvalidValue<TypeParam>();
171 TypeParam validEnumCopy;
172 TypeParam invalidEnumCopy;
175 U8 data[TypeParam::SERIALIZED_SIZE * 2];
182 ASSERT_EQ(buf.
getBuffLength(),
sizeof(
typename TypeParam::SerialType));
187 ASSERT_EQ(buf.
getBuffLength(),
sizeof(
typename TypeParam::SerialType) * 2);
193 ASSERT_EQ(validEnumCopy, validEnum);
uint8_t U8
8-bit unsigned integer
TYPED_TEST_P(EnumTest, Default)
REGISTER_TYPED_TEST_SUITE_P(EnumTest, Default, Constructors, AssignmentOp, EqualityOp, IsValidFunction, Serialization)
TYPED_TEST_SUITE_P(EnumTest)
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
EnumType::T getValidValue()
EnumType::T getDefaultValue()
EnumType::T getInvalidValue()
SerializeStatus
forward declaration for string
@ FW_DESERIALIZE_FORMAT_ERROR
Deserialization data had incorrect values (unexpected data types)
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.