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
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
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int