F´ Flight Software - C/C++ Documentation NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
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::getNonzeroU32(), 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< String::StringSize80, String100::StringSize100 > StringTestImplementations
Definition main.cpp:130
::testing::Types< Enum, String, Struct, Uint32Array > ArrayTestImplementations
Definition main.cpp:27
INSTANTIATE_TYPED_TEST_SUITE_P(FppTest, ArrayTest, ArrayTestImplementations)
void setString(char *buf, U32 size)
Definition Utils.cpp:41
U32 getNonzeroU32()
Definition Utils.cpp:30
void InitGoogleTest()
Definition gtest.cc:6730