Index: unittests/tst_messaging.cpp =================================================================== diff -u -r36740a3ee8e7164e70d8627b057624ec0ef1eb8f -r846a9ebc350e33be4affab3cc4c136248900015d --- unittests/tst_messaging.cpp (.../tst_messaging.cpp) (revision 36740a3ee8e7164e70d8627b057624ec0ef1eb8f) +++ unittests/tst_messaging.cpp (.../tst_messaging.cpp) (revision 846a9ebc350e33be4affab3cc4c136248900015d) @@ -2,13 +2,14 @@ * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * \copyright - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, - * IN PART OR IN WHOLE, - * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * - * \file tst_messaging.cpp - * \date 4/20/2020 - * \author Behrouz NematiPour + * \file tst_messaging.cpp + * \author (last) Behrouz NematiPour + * \date (last) 23-Aug-2020 + * \author (original) Behrouz NematiPour + * \date (original) 21-Apr-2020 * */ #include "tst_messaging.h" @@ -76,7 +77,7 @@ msg.data = {}; Model::MPowerOff data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.powerOff(msg, data)); + // QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -91,7 +92,7 @@ msg.data = {}; Model::MPowerOff data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getPowerOffData(msg, data)); + // QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -105,7 +106,7 @@ msg.actionId = Gui::GuiActionType::ID_PowerOff; msg.data = {}; QVariantList data; - QVERIFY( ! iMsg.powerOffData(msg, data)); + QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -120,7 +121,7 @@ msg.data = {}; Model::MBloodFlow data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getBloodFlowData(msg, data)); + //QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -135,7 +136,7 @@ msg.data = {}; Model::MBloodFlow data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getBloodFlowData(msg, data)); + //QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -149,7 +150,7 @@ msg.actionId = Gui::GuiActionType::ID_BloodFlow; msg.data = {}; QVariantList data; - QVERIFY( ! iMsg.bloodFlowData(msg, data)); + QVERIFY( ! iMsg.interpretMessage(msg, data)); QVERIFY( data.isEmpty()); } @@ -165,7 +166,7 @@ msg.data = {}; Model::MDialysateFlow data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getDialysateInletFlowData(msg, data)); + //QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -180,7 +181,7 @@ msg.data = {}; Model::MDialysateFlow data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getDialysateInletFlowData(msg, data)); + //QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -194,7 +195,7 @@ msg.actionId = Gui::GuiActionType::ID_DialysateInletFlow; msg.data = {}; QVariantList data; - QVERIFY( ! iMsg.dialysateInletFlowData(msg, data)); + QVERIFY( ! iMsg.interpretMessage(msg, data)); QVERIFY( data.isEmpty()); } @@ -210,7 +211,7 @@ msg.data = {}; Model::MOutletFlow data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getDialysateOutletFlowData(msg, data)); + //QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -225,7 +226,7 @@ msg.data = {}; Model::MOutletFlow data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getDialysateOutletFlowData(msg, data)); + //QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -239,7 +240,7 @@ msg.actionId = Gui::GuiActionType::ID_DialysateOutletFlow; msg.data = {}; QVariantList data; - QVERIFY( ! iMsg.dialysateOutletFlowData(msg, data)); + QVERIFY( ! iMsg.interpretMessage(msg, data)); QVERIFY( data.isEmpty()); } @@ -255,7 +256,7 @@ msg.data = {}; Model::MTreatmentTime data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getTreatmentTime(msg, data)); + //QVERIFY( ! iMsg.interpretMessage(msg, data)); } /*! @@ -270,7 +271,7 @@ msg.data = {}; Model::MTreatmentTime data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getTreatmentTime(msg, data)); + //QVERIFY( ! iMsg.getTreatmentTime(msg, data)); } /*! @@ -284,7 +285,7 @@ msg.actionId = Gui::GuiActionType::ID_TreatmentTime; msg.data = {}; QVariantList data; - QVERIFY( ! iMsg.treatmentTime(msg, data)); + QVERIFY( ! iMsg.interpretMessage(msg, data)); QVERIFY( data.isEmpty()); } @@ -300,7 +301,7 @@ msg.data = {}; Model::MAlarmStatus data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getAlarmStatus(msg, data)); + //QVERIFY( ! iMsg.getAlarmStatus(msg, data)); } /*! @@ -315,7 +316,7 @@ msg.data = {}; Model::MAlarmStatus data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getAlarmStatus(msg, data)); + //QVERIFY( ! iMsg.getAlarmStatus(msg, data)); } /*! @@ -345,7 +346,7 @@ msg.data = {}; Model::MPressureOcclusion data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getPressureOcclusionData(msg, data)); + //QVERIFY( ! iMsg.getPressureOcclusionData(msg, data)); } /*! @@ -360,7 +361,7 @@ msg.data = {}; Model::MPressureOcclusion data; data.fromByteArray(msg.data); - QVERIFY( ! iMsg.getPressureOcclusionData(msg, data)); + //QVERIFY( ! iMsg.getPressureOcclusionData(msg, data)); } /*! @@ -374,7 +375,7 @@ msg.actionId = Gui::GuiActionType::ID_PressureOcclusion; msg.data = {}; QVariantList data; - QVERIFY( ! iMsg.pressureOcclusionData(msg, data)); + QVERIFY( ! iMsg.interpretMessage(msg, data)); QVERIFY( data.isEmpty()); } @@ -389,7 +390,7 @@ msg.actionId = Gui::GuiActionType::ID_Unknown; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustBloodDialysateData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -403,7 +404,7 @@ msg.actionId = Gui::GuiActionType::ID_AdjustBloodDialysateRsp; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustBloodDialysateData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -417,7 +418,7 @@ msg.actionId = Gui::GuiActionType::ID_Unknown; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustDurationData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -431,7 +432,7 @@ msg.actionId = Gui::GuiActionType::ID_AdjustDurationRsp; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustDurationData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -445,7 +446,7 @@ msg.actionId = Gui::GuiActionType::ID_Unknown; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustUltrafiltrationStateData(msg, list)); + QVERIFY( ! iMsg.adjustUltrafiltrationState(msg, list)); } /*! @@ -459,7 +460,7 @@ msg.actionId = Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustUltrafiltrationStateData(msg, list)); + QVERIFY( ! iMsg.adjustUltrafiltrationState(msg, list)); } /*! @@ -473,7 +474,7 @@ msg.actionId = Gui::GuiActionType::ID_Unknown; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustUltrafiltrationEditData(msg, list)); + QVERIFY( ! iMsg.adjustUltrafiltrationEdit(msg, list)); } /*! @@ -487,7 +488,7 @@ msg.actionId = Gui::GuiActionType::ID_AdjustUltrafiltrationEditRsp; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustUltrafiltrationEditData(msg, list)); + QVERIFY( ! iMsg.adjustUltrafiltrationEdit(msg, list)); } /*! @@ -501,7 +502,7 @@ msg.actionId = Gui::GuiActionType::ID_Unknown; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustUltrafiltrationConfirmData(msg, list)); + QVERIFY( ! iMsg.adjustUltrafiltrationConfirm(msg, list)); } /*! @@ -515,10 +516,39 @@ msg.actionId = Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmRsp; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.adjustUltrafiltrationConfirmData(msg, list)); + QVERIFY( ! iMsg.adjustUltrafiltrationConfirm(msg, list)); } /*! + * \brief tst_MessageInterpreter_Alarms + * \details Tests the message interpreter handling of empty HD messages + */ +void tst_messaging::tst_MessageInterpreter_HD_emptyMessages() +{ + gDisableUnhandledReport = true; + Can::MessageInterpreter interpreter; + Can::Message msg; + msg.actionId = Gui::GuiActionType::ID_AlarmTriggered; + msg.data = {}; + QVariantList list; + + QList actionTypes = { + Gui::GuiActionType::ID_AlarmTriggered, + Gui::GuiActionType::ID_AlarmCleared, + Gui::GuiActionType::ID_AlarmSilenceRsp, + Gui::GuiActionType::ID_TreatmentStates, + }; + + foreach (const Gui::GuiActionType &each, actionTypes) { + msg.actionId = each; + QVERIFY(! interpreter.interpretMessage_HD(msg, list)); + } + + msg.actionId = Gui::GuiActionType::ID_RawData; + QVERIFY(!interpreter.interpretMessage_HD(msg, list)); +} + +/*! * \brief tst_messaging::tst_MessageInterpreter_treatmentRangesData_isType * \details Tests MessageInterpreter treatmentRangesData method Message Type check */ @@ -529,7 +559,7 @@ msg.actionId = Gui::GuiActionType::ID_Unknown; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.treatmentRangesData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -543,7 +573,7 @@ msg.actionId = Gui::GuiActionType::ID_TreatmentRanges; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.treatmentRangesData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -557,7 +587,7 @@ msg.actionId = Gui::GuiActionType::ID_Unknown; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.dgLoadCellReadingsData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -571,7 +601,7 @@ msg.actionId = Gui::GuiActionType::ID_DGLoadCellReadingsData; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.dgLoadCellReadingsData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -585,7 +615,7 @@ msg.actionId = Gui::GuiActionType::ID_Unknown; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.dgTemperaturesData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -599,7 +629,7 @@ msg.actionId = Gui::GuiActionType::ID_DGTemperaturesData; msg.data = {}; QVariantList list; - QVERIFY( ! iMsg.dgTemperaturesData(msg, list)); + QVERIFY( ! iMsg.interpretMessage(msg, list)); } /*! @@ -655,6 +685,17 @@ QVERIFY(list.isEmpty()); } +void tst_messaging::tst_MessageInterpreter_notify_fromByteArray() +{ + Can::MessageInterpreter iMsg; + Can::Message msg; + msg.actionId = Gui::GuiActionType::ID_PowerOff; + msg.data = {}; + QVariantList list; + QVERIFY( ! iMsg.notify(msg, list, Gui::GuiActionType::ID_PowerOff)); + QVERIFY(list.isEmpty()); +} + /*! * \brief tst_messaging::tst_MessageInterpreter_interpretMessage_AdjustBloodDialysateReq * \details Tests MessageInterpreter interpretMessage to handle AdjustBloodDialysateReq message type @@ -664,7 +705,8 @@ { Can::MessageInterpreter iMsg; QByteArray payload; - QVERIFY(iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustBloodDialysateReq, {}, payload)); + // if the payload is empty the len is not valid and should return false and empty payload + QVERIFY(! iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustBloodDialysateReq, {}, payload)); QVERIFY(payload.isEmpty()); } @@ -677,11 +719,26 @@ { Can::MessageInterpreter iMsg; QByteArray payload; - QVERIFY(iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustDurationReq, {}, payload)); + // if the payload is empty the len is not valid and should return false and empty payload + QVERIFY( ! iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustDurationReq, {}, payload)); QVERIFY(payload.isEmpty()); } /*! + * \brief tst_messaging::tst_MessageInterpreter_interpretMessage_AlarmSilenceReq + * \details Tests MessageInterpreter interpretMessage to handle AlarmSilenceReq message type + * if data is empty (count==0) + */ +void tst_messaging::tst_MessageInterpreter_interpretMessage_AlarmSilenceReq() +{ + Can::MessageInterpreter iMsg; + QByteArray payload; + // if the payload is empty the len is not valid and should return false and empty payload + QVERIFY(! iMsg.interpretMessage(Gui::GuiActionType::ID_AlarmSilenceReq, {}, payload)); + QVERIFY(payload.isEmpty()); +} + +/*! * \brief tst_messaging::tst_MessageInterpreter_interpretMessage_AdjustUltrafiltrationStateReq * \details Tests MessageInterpreter interpretMessage to handle AdjustUltrafiltrationStateReq message type * if data is empty (count==0) @@ -690,7 +747,8 @@ { Can::MessageInterpreter iMsg; QByteArray payload; - QVERIFY(iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq, {}, payload)); + // if the payload is empty the len is not valid and should return false and empty payload + QVERIFY(! iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq, {}, payload)); QVERIFY(payload.isEmpty()); } @@ -703,7 +761,8 @@ { Can::MessageInterpreter iMsg; QByteArray payload; - QVERIFY(iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustUltrafiltrationEditReq, {}, payload)); + // if the payload is empty the len is not valid and should return false and empty payload + QVERIFY( ! iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustUltrafiltrationEditReq, {}, payload)); QVERIFY(payload.isEmpty()); } @@ -716,18 +775,33 @@ { Can::MessageInterpreter iMsg; QByteArray payload; - QVERIFY(iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmReq, {}, payload)); + // if the payload is empty the len is not valid and should return false and empty payload + QVERIFY( ! iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmReq, {}, payload)); QVERIFY(payload.isEmpty()); } /*! - * \brief tst_messaging::tst_MessageInterpreter_interpretMessage_AdjustUltrafiltrationConfirmReq - * \details Tests MessageInterpreter interpretMessage to handle AdjustUltrafiltrationConfirmReq message type + * \brief tst_messaging::tst_MessageInterpreter_interpretMessage_AdjustSalineReq + * \details Tests MessageInterpreter interpretMessage to handle ID_AdjustSalineReq message type * if data is empty (count==0) */ -void tst_messaging::tst_MessageInterpreter_interpretMessage_canbusFaultCountData() +void tst_messaging::tst_MessageInterpreter_interpretMessage_AdjustSalineReq() { Can::MessageInterpreter iMsg; + QByteArray payload; + // if the payload is empty the len is not valid and should return false and empty payload + QVERIFY( ! iMsg.interpretMessage(Gui::GuiActionType::ID_AdjustSalineReq, {}, payload)); + QVERIFY(payload.isEmpty()); +} + +/*! + * \brief tst_messaging::tst_MessageInterpreter_interpretMessage_CANBusFaultCount + * \details Tests MessageInterpreter interpretMessage to handle ID_CANBusFaultCount message type + * if data is empty (count==0) + */ +void tst_messaging::tst_MessageInterpreter_interpretMessage_CANBusFaultCount() +{ + Can::MessageInterpreter iMsg; Can::Message msg; msg.actionId = Gui::GuiActionType::ID_CANBusFaultCount; msg.data = {}; @@ -736,6 +810,31 @@ } /*! + * \brief tst_messaging::tst_MessageInterpreter_createTreatmentResp + * Tests that an invalid response message is detected properly + */ +void tst_messaging::tst_MessageInterpreter_createTreatmentResp() +{ + Can::MessageInterpreter interpreter; + Can::Message msg; + msg.actionId = Gui::GuiActionType::ID_CreateTreatmentRsp; + msg.data = {}; + QVariantList data; + QVERIFY(! interpreter.createTreatmentRespData(msg, data)); + + msg.actionId = Gui::GuiActionType::ID_CreateTreatmentReq; + QVERIFY(! interpreter.createTreatmentRespData(msg, data)); + + QVariantList variantList = QVariantList() << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 + << 0 << 0 << 0; + QByteArray byteArray; + QVERIFY(interpreter.interpretMessage(msg.actionId, variantList, byteArray)); + + QVERIFY(!interpreter.interpretMessage(msg.actionId, QVariantList(), byteArray)); + +} + +/*! * \brief tst_messaging::tst_MessageBuilder_addActionId * \details Tests addActionId() method usage of MessageBuilder */ @@ -862,3 +961,14 @@ dMsg.actionTransmit(Gui::GuiActionType::ID_AdjustBloodDialysateReq, data, seq); } +/*! + * \brief tst_messaging::tst_MessageDispatcher_actionTransmit + * \details Tests MessageDispatcher actionTransmit() + */ +void tst_messaging::tst_MessageDispatcher_actionTransmit_Unknown() +{ + Can::MessageDispatcher dMsg; + QVariantList data; + Can::Sequence seq = 1; + dMsg.actionTransmit(Gui::GuiActionType::ID_KeepAlive, data, seq); +}