Index: shared/scripts/configuration/assertion_helper.py =================================================================== diff -u --- shared/scripts/configuration/assertion_helper.py (revision 0) +++ shared/scripts/configuration/assertion_helper.py (revision dc6c3c4de69df27ed25c64b98f7ac05fad64bb97) @@ -0,0 +1,58 @@ + +########################################################################### +# +# Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +# +# 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 assertion_helper.py +# +# @author (last) LTTS - dev +# @date (last) 25-Jan-2022 +# +############################################################################ + +import test + + +class AssertionHelper: + + def is_true(self, condition, message, requirement=""): + + if bool(condition): + test.passes(message, requirement) + else: + test.fail(message, requirement) + + + def is_false(self, condition, message, requirement=""): + + if not bool(condition): + test.passes(message, requirement) + else: + test.fail(message, requirement) + + + def are_equal(self, expected_value, actual_value, message, requirement=""): + + if expected_value == actual_value: + test.log("Expected value: " + str(expected_value) + + " is equal to Actual value: " + str(actual_value)) + test.passes(message, requirement) + else: + test.log("Expected value: " + str(expected_value) + + " is not equal to Actual value: " + str(actual_value)) + test.fail(message, requirement) + + + def are_not_equal(self, expected_value, actual_value, message, requirement=""): + + if expected_value != actual_value: + test.log("Expected value: " + str(expected_value) + + " is not equal to Actual value: " + str(actual_value)) + test.passes(message, requirement) + else: + test.log("Expected value: " + str(expected_value) + + " is equal to Actual value: " + str(actual_value)) + test.fail(message, requirement) \ No newline at end of file Index: shared/scripts/configuration/utility.py =================================================================== diff -u -r9b2b6f2f03d8988f9999d65945a60773cbaa22e9 -rdc6c3c4de69df27ed25c64b98f7ac05fad64bb97 --- shared/scripts/configuration/utility.py (.../utility.py) (revision 9b2b6f2f03d8988f9999d65945a60773cbaa22e9) +++ shared/scripts/configuration/utility.py (.../utility.py) (revision dc6c3c4de69df27ed25c64b98f7ac05fad64bb97) @@ -16,6 +16,7 @@ import sys import test import squish +import names from configuration import config from builtins import int as pyInt @@ -99,13 +100,12 @@ return False - def scroll_to_zone(zone=None, screen_object=None): """ scroll to the numeric if object is hidden Arguments: zone - UI object - screen_object - UI object (UI Home screen = waveforms + numerics) + screen_object - UI object (UI Home screen) Return: bool """ @@ -122,9 +122,41 @@ except RuntimeError: ScreenObj = squish.waitForObject(screen_object) screenHeight = pyInt(ScreenObj.height) - screenWidth = pyInt(ScreenObj.width) - squish.mouseWheel(ScreenObj, screenWidth-1000, - screenHeight-10, 0, -50, squish.Qt.NoModifier) - + #screenWidth = pyInt(ScreenObj.width) + #squish.mouseWheel(ScreenObj, screenWidth-1000, + # screenHeight-10, 0, -50, squish.Qt.NoModifier) + squish.mouseWheel(squish.waitForObject(names.treatment_create_flickable), + 1184, 107, 0, -100, squish.Qt.NoModifier) + raise LookupError("zone object is not in view to the user after " + \ - "trying 100 times") + "trying 100 times") + + +def set_slider_value(slider_value, slider_object): + """ + Method to drag slider to desired value + Argument: + slider_value : value in which slider should be placed + slider_object : object of the slider + Return: + True - if user able to select slider. else, false + """ + actual_value = slider_value + counter = 0 + while True: + squish.mouseDrag(slider_object, 0, 0, slider_value, 0, squish.Qt.NoModifier, + squish.Qt.LeftButton) + if counter == 25: + test.fail("User unable to fix slider slider_value") + return False + if actual_value == int(slider_object.value): + return True + if slider_value >= slider_object.value: + slider_value = slider_value + 30 + if slider_value <= slider_object.value: + slider_value = slider_value - 30 + counter = counter + 1 + + + + Index: shared/scripts/names.py =================================================================== diff -u -rcea2e793ece38bca22959780b1bb9947a5b47b9c -rdc6c3c4de69df27ed25c64b98f7ac05fad64bb97 --- shared/scripts/names.py (.../names.py) (revision cea2e793ece38bca22959780b1bb9947a5b47b9c) +++ shared/scripts/names.py (.../names.py) (revision dc6c3c4de69df27ed25c64b98f7ac05fad64bb97) @@ -69,6 +69,7 @@ o_PreTreatmentBase_confirmButton_TouchRect_2 = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "gradient": 0, "objectName": "_confirmButton", "type": "TouchRect", "visible": True} o_PreTreatmentCreate_heparinDispensingRate_SliderCreateTreatment = {"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "gradient": 0, "objectName": "_heparinDispensingRate", "type": "SliderCreateTreatment", "visible": True} o_PreTreatmentBase_backgroundRect_Rectangle_2 = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "gradient": 0, "id": "_backgroundRect", "type": "Rectangle", "unnamed": 1, "visible": True} +create_treatment_screen = {"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "objectName": "TreatmentCreateFlickable", "type": "Flickable", "visible": True} Index: suite.conf =================================================================== diff -u -r9b2b6f2f03d8988f9999d65945a60773cbaa22e9 -rdc6c3c4de69df27ed25c64b98f7ac05fad64bb97 --- suite.conf (.../suite.conf) (revision 9b2b6f2f03d8988f9999d65945a60773cbaa22e9) +++ suite.conf (.../suite.conf) (revision dc6c3c4de69df27ed25c64b98f7ac05fad64bb97) @@ -5,6 +5,6 @@ IMPLICITAUTSTART=0 LANGUAGE=Python OBJECTMAPSTYLE=script -TEST_CASES=tst_post tst_patientID_UI tst_standbymode tst_pre_treatment tst_case2 tst_case1 +TEST_CASES=tst_post tst_patientID_UI tst_standbymode tst_pre_treatment tst_case1 VERSION=3 WRAPPERS=Qt Index: tst_In_treatment/test.py =================================================================== diff -u -r48849c79a27af51cb7c8c580b26694b3a880c603 -rdc6c3c4de69df27ed25c64b98f7ac05fad64bb97 --- tst_In_treatment/test.py (.../test.py) (revision 48849c79a27af51cb7c8c580b26694b3a880c603) +++ tst_In_treatment/test.py (.../test.py) (revision dc6c3c4de69df27ed25c64b98f7ac05fad64bb97) @@ -9,7 +9,7 @@ # # file tst_In_treatment # date 2020/01/11 -# author Joseph Varghese +# author Joseph Varghese. # # NOTE: # This test contradicts verification of saline bolus data and ultrafilteration(uf) of In-treatment Index: tst_case1/test.py =================================================================== diff -u -r9b2b6f2f03d8988f9999d65945a60773cbaa22e9 -rdc6c3c4de69df27ed25c64b98f7ac05fad64bb97 --- tst_case1/test.py (.../test.py) (revision 9b2b6f2f03d8988f9999d65945a60773cbaa22e9) +++ tst_case1/test.py (.../test.py) (revision dc6c3c4de69df27ed25c64b98f7ac05fad64bb97) @@ -1,8 +1,13 @@ # -*- coding: utf-8 -*- import names +import math import squish +from time import sleep +from dialin.ui import utils +from dialin.ui import unittests +from dialin.ui.hd_simulator import HDSimulator def TriggerDragAndDrop(Obj=None, topLeftXOffset=150, topLeftYOffset=None): """ @@ -106,19 +111,31 @@ Return: return slider current position """ - #weight_combo_box = waitForObject(loc.weightInput) - #utility.TapElement(weight_combo_box) - #slider_object = waitForObject(self.SliderCurser) - squish.mouseDrag(slider_object, 0, 0, value, 0, squish.Qt.NoModifier, + actual_value = value + counter = 0 + while True: + squish.mouseDrag(slider_object, 0, 0, value, 0, squish.Qt.NoModifier, squish.Qt.LeftButton) - #slider_position = squish.waitForObject(self.__SliderPosition) - #cursor_value = object.children(slider_position)[0] - #test.log(f"User dragged weight slider into {cursor_value.text}") - #return (cursor_value.text) + if counter == 10: + test.fail("User unable to fix slider value") + return False + if actual_value == int(slider_object.value): + return True + if value >= slider_object.value: + value = value + 30 + if value <= slider_object.value: + value = value - 30 + counter = counter + 1 def main(): startApplication("denaliSquish") + + hd = HDSimulator() + + hd.cmd_send_power_on_self_test_version_request() + hd._handler_ui_first_check_in(message = None) + mouseClick(waitForObject(names.patient_id), 264, 15, Qt.LeftButton) type(waitForObject(names.patient_id), "id") mouseClick(waitForObject(names.confirm_button)) @@ -140,14 +157,14 @@ "bloodPressureMeasurementInterval": [5, 15, 20, 30, 45, 55], "rinsebackFlowRate": [75, 100, 125], """ - slider_object = waitForObject(names.demo) + slider_object = waitForObject(names.create_treatment_screen) child = object.children(slider_object)[0] child = object.children(child)[0] - child = object.children(child)[1] + child = object.children(child)[3] child = object.children(child)[2] child1 = object.children(child)[5] move = object.children(child)[2] - set_random_slider_weight(value = 400, slider_object = child) + set_random_slider_weight(value = 450, slider_object = child) #dragAndDropObject(child1,move) snooze(5) \ No newline at end of file Index: tst_create_custom_treatment/test.py =================================================================== diff -u -r9b2b6f2f03d8988f9999d65945a60773cbaa22e9 -rdc6c3c4de69df27ed25c64b98f7ac05fad64bb97 --- tst_create_custom_treatment/test.py (.../test.py) (revision 9b2b6f2f03d8988f9999d65945a60773cbaa22e9) +++ tst_create_custom_treatment/test.py (.../test.py) (revision dc6c3c4de69df27ed25c64b98f7ac05fad64bb97) @@ -16,13 +16,13 @@ # This test is intended to be used to verify custom treatment in application . import names -import time import test from dialin.ui import utils from dialin.ui import unittests from builtins import str as pyStr from configuration import utility +from configuration.assertion_helper import AssertionHelper from dialin.common.msg_defs import RequestRejectReasons from dialin.ui.hd_simulator import HDSimulator @@ -55,7 +55,7 @@ 1184, 107, x_axis, y_axis, Qt.NoModifier) -def set_heparin_type(text): +def set_parameter_type(text): if isinstance(text, pyStr): names.operating_parameters["text"] = text return names.operating_parameters @@ -64,33 +64,6 @@ names.keyboard_input["text"] = "UFH 1,000 IU/mL" -def set_acid_concentrate(text): - if isinstance(text, pyStr): - names.operating_parameters["text"] = text - return names.operating_parameters - else: - test.log(f"Invalid \"text\": {text} for object.") - names.keyboard_input["text"] = "Fres.Naturalyte" - - -def set_bicarbonate_concentrate(text): - if isinstance(text, pyStr): - names.operating_parameters["text"] = text - return names.operating_parameters - else: - test.log(f"Invalid \"text\": {text} for object.") - names.keyboard_input["text"] = "Fres.Centrisol" - - -def set_dialyzer_type(text): - if isinstance(text, pyStr): - names.operating_parameters["text"] = text - return names.operating_parameters - else: - test.log(f"Invalid \"text\": {text} for object.") - names.keyboard_input["text"] = "BB Diacap Pro 13H" - - slider_object = waitForObject(names.demo) child = object.children(slider_object)[0] child = object.children(child)[0] @@ -138,41 +111,86 @@ test.compare(True, treatment_status) test.log("custom treatment should be rejected") + +def set_slider_value_for_parameter(index_value, item_text, slider_value, slider_obj): + + + parameter = object.children(slider_obj)[index_value] + slider_object = object.children(parameter)[2] + status = utility.set_slider_value(slider_value, slider_object) + if status is True: + test.passes(f"{item_text} should set to value -> {slider_value}") + else: + test.fail(f"{item_text} could not set to value -> {slider_value}") -def test_sliders(): + +def create_custom_treatment_record( blood_flow_rate, dialysate_flow_rate, + duration, heparin_dispensing_rate, + heparin_bolus_volume, heparin_stop_time, + saline_bolus, dialysate_temperature, + blood_pressure_measurement_interval, + rinseback_flowrate, + ): + + slider_object = waitForObject(names.create_treatment_screen) + child = object.children(slider_object)[0] + parameter_child = object.children(child)[0] + + slider_status = set_slider_value_for_parameter(index_value = 1, item_text = "blood flow rate", + slider_value = blood_flow_rate, slider_obj = parameter_child) + test.compare(Trueslider_status, ) + + set_slider_value_for_parameter(index_value = 2, item_text = "dialysate flow rate", + slider_value = dialysate_flow_rate, slider_obj = parameter_child) + + set_slider_value_for_parameter(index_value = 3, item_text = "duration", + slider_value = duration, slider_obj = parameter_child) + + parameter_object = set_parameter_type(text = "Heparin Stop Time") + utility.scroll_to_zone(parameter_object, names.create_treatment_screen) + + set_slider_value_for_parameter(index_value = 4, item_text = "heparin dispensing rate", + slider_value = heparin_dispensing_rate, slider_obj = parameter_child) + + set_slider_value_for_parameter(index_value = 5, item_text = "heparin bolus volume", + slider_value = heparin_bolus_volume, slider_obj = parameter_child) + + parameter_object = set_parameter_type(text = "Saline Bolus") + utility.scroll_to_zone(parameter_object, names.create_treatment_screen) + + + set_slider_value_for_parameter(index_value = 6, item_text = "heparin stop time", + slider_value = heparin_stop_time, slider_obj = parameter_child) + + set_slider_value_for_parameter(index_value = 7, item_text = "saline bolus", + slider_value = saline_bolus, slider_obj = parameter_child) """ - Tests that all sliders have the correct min / max values and that the selected value is displayed correctly. + set_slider_value_for_parameter(index_value = 8, item_text = "dialysate temperature", + slider_value = dialysate_temperature, slider_obj = parameter_child) - @return: None + set_slider_value_for_parameter(index_value = 9, item_text = "blood pressure measurement interval", + slider_value = blood_pressure_measurement_interval, slider_obj = parameter_child) + + set_slider_value_for_parameter(index_value = 10, item_text = "rinseback_flowrate", + slider_value = rinseback_flowrate, slider_obj = parameter_child) + + """ - - -def create_custom_treatment_record( bloodFlowRate, dialysateFlowRate, duration, - heparinDispensingRate, heparinBolusVolume, - heparinStopTime, salineBolus, dialysateTemperature, - bloodPressureMeasurement, rinsebackFlowRate - ): + - slider_object = waitForObject(names.pretreatment_create) - child = object.children(slider_object)[0] - child = object.children(child)[0] - child = object.children(child)[1] - child = object.children(child)[2] - child1 = object.children(child)[5] - move = object.children(child)[2] - set_random_slider_weight(value = 400, slider_object = child) + """ custom_treatment = waitForObject(names.custom_treatment) test.compare("Create a Custom Treatment", custom_treatment.text) test.log(f"user successfully authenticated.") + """ - - + """ mouseClick(waitForImage("blood",{ "tolerant": True, "threshold": 99.999 })) mouseClick(waitForImage("dialysate",{ "tolerant": True, "threshold": 99.999 })) mouseClick(waitForImage("duration",{ "tolerant": True, "threshold": 99.999 })) @@ -198,41 +216,35 @@ mouseClick(waitForImage("blood_pressure_measurement_interval",{ "tolerant": True, "threshold": 99.999 })) mouseClick(waitForImage("Rinseback_flow_rate",{ "tolerant": True, "threshold": 99.999 })) test.log("User successfully selected values for treatment items") - + """ def main(): utils.tstStart("tst_create_custom_treatment") utility.start_application("Create custom treatment for a patient") hd = HDSimulator() + hd.cmd_send_power_on_self_test_version_request() hd._handler_ui_first_check_in(message = None) tapObject(waitForObject(names.input_patient_id)) type(waitForObject(names.input_patient_id), PATIENT_ID) tapObject(waitForObject(names.confirm_button)) - hd.cmd_send_treatment_parameter_manual_validation_response([ - 1, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0 - ]) - """ + create_custom_treatment_record( - bloodFlowRate = CREATE_TREATMENT_SLIDER_VALUES["bloodFlowRate"][0], - dialysateFlowRate = CREATE_TREATMENT_SLIDER_VALUES["dialysateFlowRate"][0], + blood_flow_rate = CREATE_TREATMENT_SLIDER_VALUES["bloodFlowRate"][0], + dialysate_flow_rate = CREATE_TREATMENT_SLIDER_VALUES["dialysateFlowRate"][0], duration = CREATE_TREATMENT_SLIDER_VALUES["duration"][0], - heparinDispensingRate = CREATE_TREATMENT_SLIDER_VALUES["heparinDispensingRate"][0], - heparinBolusVolume = CREATE_TREATMENT_SLIDER_VALUES["heparinBolusVolume"][0], - heparinStopTime = CREATE_TREATMENT_SLIDER_VALUES["heparinStopTime"][0], - salineBolus = CREATE_TREATMENT_SLIDER_VALUES["salineBolus"][0], - dialysateTemperature = CREATE_TREATMENT_SLIDER_VALUES["dialysateTemperature"][0], - bloodPressureMeasurementInterval = CREATE_TREATMENT_SLIDER_VALUES["bloodPressureMeasurementInterval"][0], - rinsebackFlowRate = CREATE_TREATMENT_SLIDER_VALUES["rinsebackFlowRate"][0], + heparin_dispensing_rate = CREATE_TREATMENT_SLIDER_VALUES["heparinDispensingRate"][0], + heparin_bolus_volume = CREATE_TREATMENT_SLIDER_VALUES["heparinBolusVolume"][0], + heparin_stop_time = CREATE_TREATMENT_SLIDER_VALUES["heparinStopTime"][0], + saline_bolus = CREATE_TREATMENT_SLIDER_VALUES["salineBolus"][0], + dialysate_temperature = CREATE_TREATMENT_SLIDER_VALUES["dialysateTemperature"][0], + blood_pressure_measurement_interval = CREATE_TREATMENT_SLIDER_VALUES["bloodPressureMeasurementInterval"][0], + rinseback_flowrate = CREATE_TREATMENT_SLIDER_VALUES["rinsebackFlowRate"][0], ) - verify_custom_treatment_record() + #verify_custom_treatment_record() """ - """ create_custom_treatment_record( bloodFlowRate = CREATE_TREATMENT_SLIDER_VALUES["bloodFlowRate"][1], dialysateFlowRate = CREATE_TREATMENT_SLIDER_VALUES["dialysateFlowRate"][1],