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
ParamTests.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title ParamTests.cpp
3// \author T. Chieu
4// \brief cpp file for parameter tests
5//
6// \copyright
7// Copyright (C) 2009-2023 California Institute of Technology.
8// ALL RIGHTS RESERVED. United States Government Sponsorship
9// acknowledged.
10//
11// ======================================================================
12
13#include "test/ut/Tester.hpp"
14
15// ----------------------------------------------------------------------
16// Parameter tests
17// ----------------------------------------------------------------------
18
19void Tester ::testParam() {
20 ASSERT_TRUE(component.isConnected_prmGetOut_OutputPort(0));
21 component.loadParameters();
22
23 Fw::ParamValid valid;
24
25 bool boolVal = component.paramGet_ParamBool(valid);
26 ASSERT_EQ(valid, prmValid);
27 if (valid == Fw::ParamValid::VALID) {
28 ASSERT_EQ(boolVal, boolPrm.args.val);
29 }
30
31 U32 u32Val = component.paramGet_ParamU32(valid);
32 ASSERT_EQ(valid, prmValid);
33 if (valid == Fw::ParamValid::VALID) {
34 ASSERT_EQ(u32Val, u32Prm.args.val);
35 }
36
37 Fw::ParamString stringVal = component.paramGet_ParamString(valid);
38 if (valid == Fw::ParamValid::VALID) {
39 ASSERT_EQ(stringVal, stringPrm.args.val);
40 } else {
41 ASSERT_EQ(valid, Fw::ParamValid::DEFAULT);
42 }
43
44 FormalParamEnum enumVal = component.paramGet_ParamEnum(valid);
45 ASSERT_EQ(valid, prmValid);
46 if (valid == Fw::ParamValid::VALID) {
47 ASSERT_EQ(enumVal, enumPrm.args.val);
48 }
49
50 FormalParamArray arrayVal = component.paramGet_ParamArray(valid);
51 if (valid == Fw::ParamValid::VALID) {
52 ASSERT_EQ(arrayVal, arrayPrm.args.val);
53 } else {
54 ASSERT_EQ(valid, Fw::ParamValid::DEFAULT);
55 }
56
57 FormalParamStruct structVal = component.paramGet_ParamStruct(valid);
58 ASSERT_EQ(valid, prmValid);
59 if (valid == Fw::ParamValid::VALID) {
60 ASSERT_EQ(structVal, structPrm.args.val);
61 }
62}
63
64void Tester ::testParamCommand(NATIVE_INT_TYPE portNum, FppTest::Types::BoolParam& data) {
66
67 // Test unsuccessful saving of param
68 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMBOOL_SAVE, 1, buf);
69
70 ASSERT_EQ(cmdResp, Fw::CmdResponse::EXECUTION_ERROR);
71
72 this->connectPrmSetIn();
73 ASSERT_TRUE(component.isConnected_prmSetOut_OutputPort(portNum));
74
75 // Test incorrect deserialization when setting param
76 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMBOOL_SET, 1, buf);
77
78 ASSERT_EQ(cmdResp, Fw::CmdResponse::VALIDATION_ERROR);
79
80 // Test successful setting of param
81 buf.serialize(data.args.val);
82
83 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMBOOL_SET, 1, buf);
84
85 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
86
87 // Test successful saving of param
88 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMBOOL_SAVE, 1, buf);
89
90 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
91 ASSERT_EQ(boolPrm.args.val, data.args.val);
92}
93
94void Tester ::testParamCommand(NATIVE_INT_TYPE portNum, FppTest::Types::U32Param& data) {
96
97 // Test unsuccessful saving of param
98 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMU32_SAVE, 1, buf);
99
100 ASSERT_EQ(cmdResp, Fw::CmdResponse::EXECUTION_ERROR);
101
102 this->connectPrmSetIn();
103 ASSERT_TRUE(component.isConnected_prmSetOut_OutputPort(portNum));
104
105 // Test incorrect deserialization when setting param
106 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMU32_SET, 1, buf);
107
108 ASSERT_EQ(cmdResp, Fw::CmdResponse::VALIDATION_ERROR);
109
110 // Test successful setting of param
111 buf.serialize(data.args.val);
112
113 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMU32_SET, 1, buf);
114
115 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
116
117 // Test successful saving of param
118 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMU32_SAVE, 1, buf);
119
120 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
121 ASSERT_EQ(u32Prm.args.val, data.args.val);
122}
123
124void Tester ::testParamCommand(NATIVE_INT_TYPE portNum, FppTest::Types::PrmStringParam& data) {
126
127 // Test unsuccessful saving of param
128 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMSTRING_SAVE, 1, buf);
129
130 ASSERT_EQ(cmdResp, Fw::CmdResponse::EXECUTION_ERROR);
131
132 this->connectPrmSetIn();
133 ASSERT_TRUE(component.isConnected_prmSetOut_OutputPort(portNum));
134
135 // Test incorrect deserialization when setting param
136 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMSTRING_SET, 1, buf);
137
138 ASSERT_EQ(cmdResp, Fw::CmdResponse::VALIDATION_ERROR);
139
140 // Test successful setting of param
141 buf.serialize(data.args.val);
142
143 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMSTRING_SET, 1, buf);
144
145 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
146
147 // Test successful saving of param
148 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMSTRING_SAVE, 1, buf);
149
150 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
151 ASSERT_EQ(stringPrm.args.val, data.args.val);
152}
153
154void Tester ::testParamCommand(NATIVE_INT_TYPE portNum, FppTest::Types::EnumParam& data) {
156
157 // Test unsuccessful saving of param
158 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMENUM_SAVE, 1, buf);
159
160 ASSERT_EQ(cmdResp, Fw::CmdResponse::EXECUTION_ERROR);
161
162 this->connectPrmSetIn();
163 ASSERT_TRUE(component.isConnected_prmSetOut_OutputPort(portNum));
164
165 // Test incorrect deserialization when setting param
166 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMENUM_SET, 1, buf);
167
168 ASSERT_EQ(cmdResp, Fw::CmdResponse::VALIDATION_ERROR);
169
170 // Test successful setting of param
171 buf.serialize(data.args.val);
172
173 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMENUM_SET, 1, buf);
174
175 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
176
177 // Test successful saving of param
178 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMENUM_SAVE, 1, buf);
179
180 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
181 ASSERT_EQ(enumPrm.args.val, data.args.val);
182}
183
184void Tester ::testParamCommand(NATIVE_INT_TYPE portNum, FppTest::Types::ArrayParam& data) {
186
187 // Test unsuccessful saving of param
188 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMARRAY_SAVE, 1, buf);
189
190 ASSERT_EQ(cmdResp, Fw::CmdResponse::EXECUTION_ERROR);
191
192 this->connectPrmSetIn();
193 ASSERT_TRUE(component.isConnected_prmSetOut_OutputPort(portNum));
194
195 // Test incorrect deserialization when setting param
196 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMARRAY_SET, 1, buf);
197
198 ASSERT_EQ(cmdResp, Fw::CmdResponse::VALIDATION_ERROR);
199
200 // Test successful setting of param
201 buf.serialize(data.args.val);
202
203 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMARRAY_SET, 1, buf);
204
205 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
206
207 // Test successful saving of param
208 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMARRAY_SAVE, 1, buf);
209
210 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
211 ASSERT_EQ(arrayPrm.args.val, data.args.val);
212}
213
214void Tester ::testParamCommand(NATIVE_INT_TYPE portNum, FppTest::Types::StructParam& data) {
216
217 // Test unsuccessful saving of param
218 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMSTRUCT_SAVE, 1, buf);
219
220 ASSERT_EQ(cmdResp, Fw::CmdResponse::EXECUTION_ERROR);
221
222 this->connectPrmSetIn();
223 ASSERT_TRUE(component.isConnected_prmSetOut_OutputPort(portNum));
224
225 // Test incorrect deserialization when setting param
226 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMSTRUCT_SET, 1, buf);
227
228 ASSERT_EQ(cmdResp, Fw::CmdResponse::VALIDATION_ERROR);
229
230 // Test successful setting of param
231 buf.serialize(data.args.val);
232
233 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMSTRUCT_SET, 1, buf);
234
235 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
236
237 // Test successful saving of param
238 this->invoke_to_cmdOut(portNum, component.OPCODE_PARAMSTRUCT_SAVE, 1, buf);
239
240 ASSERT_EQ(cmdResp, Fw::CmdResponse::OK);
241 ASSERT_EQ(structPrm.args.val, data.args.val);
242}
PlatformIntType NATIVE_INT_TYPE
Definition BasicTypes.h:51
@ EXECUTION_ERROR
Command had execution error.
@ VALIDATION_ERROR
Command failed validation.
@ OK
Command successfully executed.
Enum representing parameter validity.
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int