Skip to content

Commit da1fa37

Browse files
committed
[chargepoint] Fixed meter values unit test
1 parent 6450abc commit da1fa37

File tree

1 file changed

+128
-6
lines changed

1 file changed

+128
-6
lines changed

tests/chargepoint/metervalues/test_metervalues.cpp

Lines changed: 128 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,120 @@ static void checkClockAligned(const std::vector<std::pair<std::string, std::uniq
162162
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].value, "16");
163163
}
164164

165+
/** @brief Check all the sampled meter values */
166+
static void checkAllSampled(const std::vector<std::pair<std::string, std::unique_ptr<rapidjson::Document>>>& messages,
167+
ReadingContext context)
168+
{
169+
MeterValuesReq meter_value_req;
170+
171+
CHECK_EQ(messages.size(), 3u);
172+
CHECK_EQ(messages[0].first, METER_VALUES_ACTION);
173+
CHECK_EQ(messages[1].first, METER_VALUES_ACTION);
174+
CHECK_EQ(messages[2].first, METER_VALUES_ACTION);
175+
176+
CHECK(deserializeMeterValue((*messages[0].second), meter_value_req));
177+
CHECK_EQ(meter_value_req.connectorId, 0);
178+
CHECK_FALSE(meter_value_req.transactionId.isSet());
179+
CHECK_EQ(meter_value_req.meterValue.size(), 1u);
180+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue.size(), 4);
181+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].measurand, Measurand::CurrentImport);
182+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].phase, Phase::L1);
183+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].location, Location::Inlet);
184+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].format, ValueFormat::Raw);
185+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].unit, UnitOfMeasure::A);
186+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].context, context);
187+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].value, "10");
188+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].measurand, Measurand::CurrentImport);
189+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].phase, Phase::L2);
190+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].location, Location::Inlet);
191+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].format, ValueFormat::Raw);
192+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].unit, UnitOfMeasure::A);
193+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].context, context);
194+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].value, "20");
195+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].measurand, Measurand::CurrentImport);
196+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].phase, Phase::L3);
197+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].location, Location::Inlet);
198+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].format, ValueFormat::Raw);
199+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].unit, UnitOfMeasure::A);
200+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].context, context);
201+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].value, "30");
202+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].measurand, Measurand::EnergyActiveImportRegister);
203+
CHECK_FALSE(meter_value_req.meterValue[0].sampledValue[3].phase.isSet());
204+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].location, Location::Inlet);
205+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].format, ValueFormat::Raw);
206+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].unit, UnitOfMeasure::kWh);
207+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].context, context);
208+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].value, "123");
209+
210+
CHECK(deserializeMeterValue((*messages[1].second), meter_value_req));
211+
CHECK_EQ(meter_value_req.connectorId, 1);
212+
CHECK_FALSE(meter_value_req.transactionId.isSet());
213+
CHECK_EQ(meter_value_req.meterValue.size(), 1u);
214+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue.size(), 4);
215+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].measurand, Measurand::CurrentImport);
216+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].phase, Phase::L1);
217+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].location, Location::Outlet);
218+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].format, ValueFormat::Raw);
219+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].unit, UnitOfMeasure::A);
220+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].context, context);
221+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].value, "40");
222+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].measurand, Measurand::CurrentImport);
223+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].phase, Phase::L2);
224+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].location, Location::Outlet);
225+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].format, ValueFormat::Raw);
226+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].unit, UnitOfMeasure::A);
227+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].context, context);
228+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].value, "50");
229+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].measurand, Measurand::CurrentImport);
230+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].phase, Phase::L3);
231+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].location, Location::Outlet);
232+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].format, ValueFormat::Raw);
233+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].unit, UnitOfMeasure::A);
234+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].context, context);
235+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].value, "60");
236+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].measurand, Measurand::EnergyActiveImportRegister);
237+
CHECK_FALSE(meter_value_req.meterValue[0].sampledValue[3].phase.isSet());
238+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].location, Location::Outlet);
239+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].format, ValueFormat::Raw);
240+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].unit, UnitOfMeasure::kWh);
241+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].context, context);
242+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].value, "100");
243+
244+
CHECK(deserializeMeterValue((*messages[2].second), meter_value_req));
245+
CHECK_EQ(meter_value_req.connectorId, 2);
246+
CHECK_FALSE(meter_value_req.transactionId.isSet());
247+
CHECK_EQ(meter_value_req.meterValue.size(), 1u);
248+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue.size(), 4);
249+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].measurand, Measurand::CurrentImport);
250+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].phase, Phase::L1);
251+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].location, Location::Outlet);
252+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].format, ValueFormat::Raw);
253+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].unit, UnitOfMeasure::A);
254+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].context, context);
255+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[0].value, "70");
256+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].measurand, Measurand::CurrentImport);
257+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].phase, Phase::L2);
258+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].location, Location::Outlet);
259+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].format, ValueFormat::Raw);
260+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].unit, UnitOfMeasure::A);
261+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].context, context);
262+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[1].value, "80");
263+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].measurand, Measurand::CurrentImport);
264+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].phase, Phase::L3);
265+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].location, Location::Outlet);
266+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].format, ValueFormat::Raw);
267+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].unit, UnitOfMeasure::A);
268+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].context, context);
269+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[2].value, "90");
270+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].measurand, Measurand::EnergyActiveImportRegister);
271+
CHECK_FALSE(meter_value_req.meterValue[0].sampledValue[3].phase.isSet());
272+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].location, Location::Outlet);
273+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].format, ValueFormat::Raw);
274+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].unit, UnitOfMeasure::kWh);
275+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].context, context);
276+
CHECK_EQ(meter_value_req.meterValue[0].sampledValue[3].value, "23");
277+
}
278+
165279
/** @brief Check the sampled meter values */
166280
static void checkSampled(const std::vector<std::pair<std::string, std::unique_ptr<rapidjson::Document>>>& messages)
167281
{
@@ -825,18 +939,26 @@ TEST_SUITE("Metervalues component")
825939
rpc.clearCalls();
826940

827941
// Trigger meter values without connector id
828-
CHECK_FALSE(meter_mgr.onTriggerMessage(MessageTrigger::MeterValues, Optional<unsigned int>()));
829-
CHECK_FALSE(event_handler.methodCalled("getMeterValue", params));
942+
CHECK(meter_mgr.onTriggerMessage(MessageTrigger::MeterValues, Optional<unsigned int>()));
943+
CHECK(event_handler.methodCalled("getMeterValue", params));
830944

831945
// Check messages
832-
CHECK(rpc.getCalls().empty());
946+
checkAllSampled(rpc.getCalls(), ReadingContext::Trigger);
947+
948+
// Clear stubs
949+
event_handler.clearCalls();
950+
rpc.clearCalls();
833951

834952
// Extended trigger meter values without connector id
835-
CHECK_FALSE(meter_mgr.onTriggerMessage(MessageTriggerEnumType::MeterValues, Optional<unsigned int>()));
836-
CHECK_FALSE(event_handler.methodCalled("getMeterValue", params));
953+
CHECK(meter_mgr.onTriggerMessage(MessageTriggerEnumType::MeterValues, Optional<unsigned int>()));
954+
CHECK(event_handler.methodCalled("getMeterValue", params));
837955

838956
// Check messages
839-
CHECK(rpc.getCalls().empty());
957+
checkAllSampled(rpc.getCalls(), ReadingContext::Trigger);
958+
959+
// Clear stubs
960+
event_handler.clearCalls();
961+
rpc.clearCalls();
840962
}
841963

842964
TEST_CASE("Custom meter values")

0 commit comments

Comments
 (0)