Index: unittests/tst_views.cpp =================================================================== diff -u -r44a85c96ab55e424866ec4cca0270aa218355f82 -r542278273f3d13ad5fb5ba8916178d747c78fe77 --- unittests/tst_views.cpp (.../tst_views.cpp) (revision 44a85c96ab55e424866ec4cca0270aa218355f82) +++ unittests/tst_views.cpp (.../tst_views.cpp) (revision 542278273f3d13ad5fb5ba8916178d747c78fe77) @@ -15,10 +15,13 @@ #include "tst_views.h" // Qt +#include // Project #include "vtreatmentadjustmentresponsebase.h" #include "vtreatmentadjustmentultrafiltrationstate.h" +#include "mtreatmentparameters.h" +#include "filehandler.h" tst_views::tst_views(QObject *parent) : QObject(parent) { } @@ -65,3 +68,250 @@ v.isPaused(false); } +/*! + * \brief tst_views::VCreateTreatment_validation + * Tests treatment parameter validation + */ +void tst_views::VCreateTreatment_validation() +{ + + for (int i = 0; i < 18; ++i) { + View::VCreateTreatment view; + if (i != 0) view.set_bloodFlowRate(view.bloodFlowRateMax()); + if (i != 1) view.set_dialysateFlowRate(view.dialysateFlowRateMax()); + if (i != 2) view.set_duration(view.durationMax()); + if (i != 3) view.set_heparinDispensingRate(view.heparinDispensingRateMax()); + + if (i != 4) view.set_heparinBolusVolume(view.heparinBolusVolumeMax()); + if (i != 5) view.set_heparinStopTime(view.heparinStopTimeMax()); + if (i != 6) view.set_salineBolusVolume(0); + if (i != 7) view.set_acidConcentrate(0); + if (i != 8) view.set_bicarbonateConcentrate(0); + + if (i != 9) view.set_dialyzerType(0); + if (i != 10) view.set_dialysateTemp(view.dialysateTempMax()); + if (i != 11) view.set_arterialPressureLimitLow(view.arterialPressureLimitLowMin()); + if (i != 12) view.set_arterialPressureLimitHigh(view.arterialPressureLimitHighMax()); + if (i != 13) view.set_venousPressureLimitLow(view.venousPressureLimitLowMin()); + if (i != 14) view.set_venousPressureLimitHigh(view.venousPressureLimitHighMax()); + + if (i != 15) view.set_bloodPressureMeasureInterval(view.bloodPressureMeasureIntervalMax()); + if (i != 16) view.set_rinsebackFlowRate(view.rinsebackFlowRateMax()); + + if (i == 17) { + QCOMPARE(view.isbloodFlowRateSet, true); + QCOMPARE(view.isdialysateFlowRateSet, true); + QCOMPARE(view.isdurationSet, true); + QCOMPARE(view.isheparinDispensingRateSet, true); + QCOMPARE(view.isheparinBolusVolumeSet, true); + QCOMPARE(view.isheparinStopTimeSet, true); + QCOMPARE(view.issalineBolusVolumeSet, true); + QCOMPARE(view.isacidConcentrateSet, true); + QCOMPARE(view.isbicarbonateConcentrateSet, true); + QCOMPARE(view.isdialyzerTypeSet, true); + QCOMPARE(view.isdialysateTempSet, true); + QCOMPARE(view.isarterialPressureLimitLowSet, true); + QCOMPARE(view.isarterialPressureLimitHighSet, true); + QCOMPARE(view.isvenousPressureLimitLowSet, true); + QCOMPARE(view.isvenousPressureLimitHighSet, true); + QCOMPARE(view.isbloodPressureMeasureIntervalSet, true); + QCOMPARE(view.isrinsebackFlowRateSet, true); + QCOMPARE(view.validate(view.treatmentData), true); + } + else { + QCOMPARE(view.validate(view.treatmentData), false); + } + } +} + +/*! + * \brief tst_views::VCreateTreatment_simulate_valid_parameters + * Simulates a user selection of valid parameters + * \param view VCreateTreatment object to be set with valid parameters + */ +void tst_views::VCreateTreatment_simulate_valid_parameters(View::VCreateTreatment &view) +{ + view.set_bloodFlowRate(view.bloodFlowRateMax()); + view.set_dialysateFlowRate(view.dialysateFlowRateMax()); + view.set_duration(view.durationMax()); + view.set_heparinDispensingRate(view.heparinDispensingRateMax()); + + view.set_heparinBolusVolume(view.heparinBolusVolumeMax()); + view.set_heparinStopTime(view.heparinStopTimeMax()); + view.set_salineBolusVolume(0); + view.set_acidConcentrate(0); + view.set_bicarbonateConcentrate(0); + + view.set_dialyzerType(0); + view.set_dialysateTemp(view.dialysateTempMax()); + view.set_arterialPressureLimitLow(view.arterialPressureLimitLowMin()); + view.set_arterialPressureLimitHigh(view.arterialPressureLimitHighMax()); + view.set_venousPressureLimitLow(view.venousPressureLimitLowMin()); + view.set_venousPressureLimitHigh(view.venousPressureLimitHighMax()); + + view.set_bloodPressureMeasureInterval(view.bloodPressureMeasureIntervalMax()); + view.set_rinsebackFlowRate(view.rinsebackFlowRateMax()); + +} + +/*! + * \brief tst_views::VCreateTreatment_validation_ranges + * Tests the treatment parameter validation ranges are checked + */ +void tst_views::VCreateTreatment_validation_ranges() +{ + View::VCreateTreatment view; + view.set_bloodFlowRate(-1); + view.set_dialysateFlowRate(-1); + view.set_duration(-1); + view.set_heparinDispensingRate(-1); + + view.set_heparinBolusVolume(-1); + view.set_heparinStopTime(-1); + view.set_salineBolusVolume(-1); + view.set_acidConcentrate(-1); + view.set_bicarbonateConcentrate(-1); + + view.set_dialyzerType(-1); + view.set_dialysateTemp(-1); + view.set_arterialPressureLimitLow(-1); + view.set_arterialPressureLimitHigh(-1); + view.set_venousPressureLimitLow(-1); + view.set_venousPressureLimitHigh(-1); + + view.set_bloodPressureMeasureInterval(-1); + view.set_rinsebackFlowRate(-1); + + QCOMPARE(view.isbloodFlowRateSet, true); + QCOMPARE(view.isdialysateFlowRateSet, true); + QCOMPARE(view.isdurationSet, true); + QCOMPARE(view.isheparinDispensingRateSet, true); + QCOMPARE(view.isheparinBolusVolumeSet, true); + QCOMPARE(view.isheparinStopTimeSet, true); + QCOMPARE(view.issalineBolusVolumeSet, true); + QCOMPARE(view.isacidConcentrateSet, true); + QCOMPARE(view.isbicarbonateConcentrateSet, true); + QCOMPARE(view.isdialyzerTypeSet, true); + QCOMPARE(view.isdialysateTempSet, true); + QCOMPARE(view.isarterialPressureLimitLowSet, true); + QCOMPARE(view.isarterialPressureLimitHighSet, true); + QCOMPARE(view.isvenousPressureLimitLowSet, true); + QCOMPARE(view.isvenousPressureLimitHighSet, true); + QCOMPARE(view.isbloodPressureMeasureIntervalSet, true); + QCOMPARE(view.isrinsebackFlowRateSet, true); + + QCOMPARE(view.validate(view.treatmentData), false); + + + for (int i = 0; i < 17; ++i) { + VCreateTreatment_simulate_valid_parameters(view); + + if (i == 0) view.set_bloodFlowRate(view.bloodFlowRateMax()+1); + if (i == 1) view.set_dialysateFlowRate(view.dialysateFlowRateMax()+1); + if (i == 2) view.set_duration(view.durationMax()+1); + if (i == 3) view.set_heparinDispensingRate(view.heparinDispensingRateMax()+1); + + if (i == 4) view.set_heparinBolusVolume(view.heparinBolusVolumeMax()+1); + if (i == 5) view.set_heparinStopTime(view.heparinStopTimeMax()+1); + if (i == 6) view.set_salineBolusVolume(view.salineBolusOptions().length()); + if (i == 7) view.set_acidConcentrate(view.acidConcentrateOptions().length()); + if (i == 8) view.set_bicarbonateConcentrate(view.bicarbonateConcentrateOptions().length()); + + if (i == 9) view.set_dialyzerType(view.dialyzerTypeOptions().length()); + if (i == 10) view.set_dialysateTemp(view.dialysateTempMax()+1); + if (i == 11) view.set_arterialPressureLimitLow(view.arterialPressureLimitLowMax()+1); + if (i == 12) view.set_arterialPressureLimitHigh(view.arterialPressureLimitHighMax()+1); + if (i == 13) view.set_venousPressureLimitLow(view.venousPressureLimitLowMax()+1); + if (i == 14) view.set_venousPressureLimitHigh(view.venousPressureLimitHighMax()+1); + + if (i == 15) view.set_bloodPressureMeasureInterval(view.bloodPressureMeasureIntervalMax()+1); + if (i == 16) view.set_rinsebackFlowRate(view.rinsebackFlowRateMax()+1); + + QCOMPARE(view.validate(view.treatmentData), false); + } + +} + +/*! + * \brief tst_views::VCreateTreatment_save + * Tests that VCreateTreatment saves treatment profiles properly. + */ +void tst_views::VCreateTreatment_save() +{ + View::VCreateTreatment view; + + QJsonObject objectWritten { + {"bloodFlowRate", QString::number(view.treatmentData.bloodFlowRate)}, + {"dialysateFlowRate", QString::number(view.treatmentData.dialysateFlowRate)}, + {"duration", QString::number(view.treatmentData.duration)}, + {"heparinDispensingRate", QString::number(view.treatmentData.heparinDispensingRate)}, + {"heparinBolusVolume", QString::number(view.treatmentData.heparinBolusVolume)}, + {"heparinStopTime", QString::number(view.treatmentData.heparinStopTime)}, + {"acidConcentrate", QString::number(view.treatmentData.acidConcentrate)}, + {"bicarbonateConcentrate", QString::number(view.treatmentData.bicarbonateConcentrate)}, + {"dialyzerType", QString::number(view.treatmentData.dialyzerType)}, + {"dialysateTemp", QString::number(view.treatmentData.dialysateTemp)}, + {"arterialPressureLimitLow", QString::number(view.treatmentData.arterialPressureLimitLow)}, + {"arterialPressureLimitHigh", QString::number(view.treatmentData.arterialPressureLimitHigh)}, + {"venousPressureLimitLow", QString::number(view.treatmentData.venousPressureLimitLow)}, + {"venousPressureLimitHigh", QString::number(view.treatmentData.venousPressureLimitHigh)}, + {"bloodPressureMeasureInterval",QString::number(view.treatmentData.bloodPressureMeasureInterval)}, + {"rinsebackFlowRate", QString::number(view.treatmentData.rinsebackFlowRate)} + }; + + QString filename = view.saveNewTreatment(objectWritten); + + + QThread::msleep(500); + + QJsonObject objectRead; + QVERIFY(FileHandler::readJSON(filename, objectRead)); + QCOMPARE(objectWritten, objectRead); +} + +/*! + * \brief tst_views::VCreateTreatment_enums + * Tests that enums are handled properly + */ +void tst_views::VCreateTreatment_enums() +{ + View::VCreateTreatment view; + + GuiRequestReasons reason = GuiRequestReasons::REQUEST_REJECT_REASON_NONE; + QCOMPARE(view.enumToString(reason), "REQUEST_REJECT_REASON_NONE"); + + QCOMPARE(view.enumToString(static_cast(-1)), "[-1] Unknown Rejection Reason"); + QCOMPARE(view.enumToString(static_cast(GuiRequestReasons::NUM_OF_REQUEST_REJECT_REASONS + 1)), + QString("[%0] Unknown Rejection Reason").arg(GuiRequestReasons::NUM_OF_REQUEST_REJECT_REASONS + 1)); +} + +/*! + * \brief tst_views::VCreateTreatment_json + * Tests a helper function's conversion from QJsonArray to QStringList + */ +void tst_views::VCreateTreatment_json() +{ + View::VCreateTreatment view; + + QJsonArray arr; + QStringList list; + + QCOMPARE(view.jsonArrayToStringList(arr), list); + + arr << "1"; + list << "1"; + + QCOMPARE(view.jsonArrayToStringList(arr), list); + + arr << QJsonValue("1") << QJsonValue("2"); + list << "1" << "2"; + + QCOMPARE(view.jsonArrayToStringList(arr), list); + + arr << 3 << 4; + list << "3" << "4"; + + QVERIFY(view.jsonArrayToStringList(arr) != list); + +} +