F´ Flight Software - C/C++ Documentation NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
main.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title main.cpp
3// \author T. Chieu
4// \brief main cpp file for FPP array tests
5//
6// \copyright
7// Copyright (C) 2009-2022 California Institute of Technology.
8// ALL RIGHTS RESERVED. United States Government Sponsorship
9// acknowledged.
10//
11// ======================================================================
12
13#include "FppTest/array/EnumArrayAc.hpp"
14#include "FppTest/array/StringArrayAc.hpp"
15#include "FppTest/array/StructArrayAc.hpp"
16#include "FppTest/array/Uint32ArrayArrayAc.hpp"
17#include "FppTest/array/String100ArrayAc.hpp"
18
22
23#include "STest/Random/Random.hpp"
24#include "gtest/gtest.h"
25
26// Instantiate array tests
27using ArrayTestImplementations = ::testing::Types<
28 Enum,
29 String,
30 Struct,
31 Uint32Array
32>;
34
35// Specializations for default values
36template <>
37void FppTest::Array::setDefaultVals<Enum>(E (&a)[Enum::SIZE]) {
38 a[0] = E::A;
39 a[1] = E::B;
40 a[2] = E::C;
41}
42
43// Specialization for test values
44template<>
45void FppTest::Array::setTestVals<Enum>(E (&a)[Enum::SIZE]) {
46 a[0] = static_cast<E::T>(STest::Pick::startLength(
47 E::B,
48 E::NUM_CONSTANTS - 1
49 ));
50
51 for (U32 i = 1; i < Enum::SIZE; i++) {
52 a[i] = static_cast<E::T>(STest::Pick::startLength(
53 E::A,
54 E::NUM_CONSTANTS - 1
55 ));
56 }
57}
58
59template<>
60void FppTest::Array::setTestVals<String>
61 (::String::StringSize80 (&a)[::String::SIZE]) {
62 char buf[80];
63 for (U32 i = 0; i < ::String::SIZE; i++) {
64 FppTest::Utils::setString(buf, sizeof(buf));
65 a[i] = buf;
66 }
67}
68
69template<>
70void FppTest::Array::setTestVals<Struct>(S (&a)[Struct::SIZE]) {
71 U32 b[3];
72 for (U32 i = 0; i < Struct::SIZE; i++) {
73 for (U32 j = 0; j < 3; j++) {
75 }
76 a[i].set(FppTest::Utils::getU32(), b);
77 }
78}
79
80template<>
81void FppTest::Array::setTestVals<Uint32Array>(Uint32 (&a)[Uint32Array::SIZE]) {
82 Uint32 b;
83 for (U32 i = 0; i < Uint32Array::SIZE; i++) {
84 for (U32 j = 0; j < Uint32::SIZE; j++) {
86 }
87 a[i] = b;
88 }
89}
90
91// Specializations for multi element constructor
92template<>
93Enum FppTest::Array::getMultiElementConstructedArray<Enum>
94 (E (&a)[Enum::SIZE]) {
95 return Enum(a[0], a[1], a[2]);
96}
97
98template<>
99::String FppTest::Array::getMultiElementConstructedArray<::String>
100 (::String::StringSize80 (&a)[::String::SIZE]) {
101 return ::String(a[0], a[1], a[2]);
102}
103
104template<>
105Struct FppTest::Array::getMultiElementConstructedArray<Struct>
106 (S (&a)[Struct::SIZE]) {
107 return Struct(a[0], a[1], a[2]);
108}
109
110template<>
111Uint32Array FppTest::Array::getMultiElementConstructedArray<Uint32Array>
112 (Uint32 (&a)[Uint32Array::SIZE]) {
113 return Uint32Array(a[0], a[1], a[2]);
114}
115
116// Specializations for serialized size
117template <>
118U32 FppTest::Array::getSerializedSize<::String>
119 (::String::StringSize80 (&a)[::String::SIZE]) {
120 U32 serializedSize = 0;
121
122 for (U32 i = 0; i < ::String::SIZE; i++) {
123 serializedSize += a[i].length() + sizeof(FwBuffSizeType);
124 }
125
126 return serializedSize;
127}
128
129// Instantiate string tests for arrays
130using StringTestImplementations = ::testing::Types<
131 String::StringSize80,
132 String100::StringSize100
133>;
135
136template<>
137U32 FppTest::String::getSize<String100::StringSize100>() {
138 return 100;
139}
140
141int main(int argc, char* argv[]) {
142 ::testing::InitGoogleTest(&argc, argv);
143 STest::Random::seed();
144
145 return RUN_ALL_TESTS();
146}
U16 FwBuffSizeType
Definition FpConfig.h:30
int main(int argc, char *argv[])
Definition main.cpp:141
::testing::Types< Enum, String, Struct, Uint32Array > ArrayTestImplementations
Definition main.cpp:32
INSTANTIATE_TYPED_TEST_SUITE_P(FppTest, ArrayTest, ArrayTestImplementations)
::testing::Types< String::StringSize80, String100::StringSize100 > StringTestImplementations
Definition main.cpp:133
void setString(char *buf, U32 size)
Definition Utils.cpp:41
U32 getU32()
Definition Utils.cpp:30