Index: tst_AlarmStatusData/test.py =================================================================== diff -u -r4a147c3e14cb47f7a4fef89afa2899d66af7e372 -r40314c67874695eefc506c3a6a33896495953edd --- tst_AlarmStatusData/test.py (.../test.py) (revision 4a147c3e14cb47f7a4fef89afa2899d66af7e372) +++ tst_AlarmStatusData/test.py (.../test.py) (revision 40314c67874695eefc506c3a6a33896495953edd) @@ -14,77 +14,256 @@ import names -if names.DIALIN_LINK: - from dialin.squish import utils, denaliMessages -else: - import utils - import denaliMessages +from configuration import config +from configuration import utility -def isNotificationBar(): - if object.exists(names.o_alarm_bar): - alarmBar = findObject(names.o_alarm_bar) - return [alarmBar.visible, alarmBar] - return [False, None] +from dialin.ui import utils + +# buttons position/definition in alarm flags +# 3 - no_resume +# 4 - no_rinseback +# 5 - no_end +# 7 - user_must_ack(OK) +# Important Note : OK button can't come with the three others +# 7 543 +alarm_buttons_Ok = 0B0000000010111000 + +alarm_buttons_Resume = 0B0000000000110000 +alarm_buttons_Resume_RinseBack = 0B0000000000100000 +alarm_buttons_Resume_End = 0B0000000000010000 + +alarm_buttons_RinseBack = 0B0000000000101000 +alarm_buttons_RinseBack_Resume = alarm_buttons_Resume_RinseBack +alarm_buttons_RinseBack_End = 0B0000000000001000 + +alarm_buttons_End = 0B0000000000011000 +alarm_buttons_End_Resume = alarm_buttons_Resume_End +alarm_buttons_End_RinseBack = alarm_buttons_RinseBack_End + +alarm_buttons_Resume_RinseBack_End = 0B0000000000000000 +alarm_buttons_RinseBack_Resume_End = alarm_buttons_Resume_RinseBack_End +alarm_buttons_End_Resume_RinseBack = alarm_buttons_Resume_RinseBack_End + +# alarm status flags +alarm_flag_mute = 0B0000001000000000 +alarm_flag_unmute = 0B0000000000000000 + +# alarm priorities +alarm_priority_none = 0 +alarm_priority_low = 1 +alarm_priority_medium = 2 +alarm_priority_high = 3 +alarm_priority_outofrange = 9 + +alarm_priorities = [ + alarm_priority_none , + alarm_priority_low , + alarm_priority_medium , + alarm_priority_high , + alarm_priority_outofrange +] -def isNotificationDialog(): - if object.exists(names.o_NotificationDialog_Description_Text): - alarmTxt = findObject(names.o_NotificationDialog_Description_Text) - return [alarmTxt.visible, alarmTxt] - return [False, None] +# alarm colors +alarm_colors_header = { + alarm_priority_none : "#438feb", + alarm_priority_low : "#db8f00", + alarm_priority_medium : "#db8f00", + alarm_priority_high : "#831913", + alarm_priority_outofrange : "#438feb", +} +alarm_colors_body = { + alarm_priority_none : "#254670", + alarm_priority_low : "#f5a623", + alarm_priority_medium : "#f5a623", + alarm_priority_high : "#c53b33", + alarm_priority_outofrange : "#254670", +} -# ALARM_ID = (priority, alarmID, escalates in, silent_espires_in, flags) -def test_values(vPriority, vTopID, vEscalatesIn, vMuteTimeout, vFlags): - barVisible, barObj = isNotificationBar() - dlgVisible, dlgObj = isNotificationDialog() +alarm_id_noalarm = 0 +alarm_id_outofrange = 1000000 +alarm_id_undefined_string = "ALARM_ID_UNDEFINED [{}]" + +def minimize(): + mouseClick(waitForObject(names.o_alarm_button_minimize)) + utils.waitForGUI(0.5) # this wait is necessary. Due to dialog animation it will be hide until the animation is done. + + +def maximize(): + mouseClick(waitForObject(names.o_alarm_bar_maximize)) + utils.waitForGUI(0.5) # this wait is necessary. Due to dialog animation it will be hide until the animation is done. + + +def test_colors(vPriority): + test.log(f"TODO : Test the color of {vPriority} ", "May need to remove this test case if we already cover it in newer testcases") + + # test.compare(str(waitForObjectExists(names.o_modalDialog ).color.name), alarm_colors_body [vPriority]) + # test.compare(str(waitForObjectExists(names.o_alarm_dialog_titleBar).color.name), alarm_colors_header[vPriority]) - if vPriority == 0 and vTopID == 0: - test.compare(barVisible, False, "bar clr I{} P{} ".format(vTopID, vPriority)) - test.compare(dlgVisible, False, "dlg clr I{} P{} ".format(vTopID, vPriority)) -# return + # minimize() + # test.compare(str(waitForObject (names.o_alarm_bar ).color.name), alarm_colors_body[vPriority]) + + # maximize() - if barVisible: - if vTopID == len(names.AlarmTextMap) - 1: - test.compare(str(barObj.text), names.AlarmTextMap[vTopID] + " [{}]".format(vTopID), "bar I{} P{} :{}".format(vTopID, vPriority, str(barObj.text))) + +def test_messages(vTopID): + if vTopID == alarm_id_noalarm: + utils.waitForGUI() + dlg = names.o_modalDialog + bar = names.o_alarm_bar + dlg_exists = object.exists(dlg) + bar_exists = object.exists(bar) + if not dlg_exists: + test.compare(dlg_exists, False) else: - test.compare(str(barObj.text), names.AlarmTextMap[vTopID] , "bar I{} P{} :{}".format(vTopID, vPriority, str(barObj.text))) - return - - if dlgVisible: - if vTopID == len(names.AlarmTextMap) - 1: - test.compare(str(dlgObj.text), names.AlarmTextMap[vTopID] + " [{}]".format(vTopID), "bar I{} P{} :{}".format(vTopID, vPriority, str(dlgObj.text))) + test.compare(waitForObjectExists(dlg).visible, False) + + if not bar_exists: + test.compare(True, True) else: - test.compare(str(dlgObj.text), names.AlarmTextMap[vTopID] , "dlg I{} P{} :{}".format(vTopID, vPriority, str(dlgObj.text))) - return + test.compare(waitForObjectExists(bar).visible, False) + + else: + if vTopID == alarm_id_outofrange: + test.compare(str(waitForObjectExists(names.o_alarm_text_description).text), alarm_id_undefined_string.format(vTopID)) + minimize() + test.compare(str(waitForObjectExists(names.o_alarm_bar_text ).text), alarm_id_undefined_string.format(vTopID)) + else: + test.compare(str(waitForObjectExists(names.o_alarm_text_description).text), names.AlarmTextMap[vTopID]) + minimize() + test.compare(str(waitForObjectExists(names.o_alarm_bar_text ).text), names.AlarmTextMap[vTopID]) + maximize() + +def test_buttons(vButtons): + alarm_button_ok = utility.get_object_from_names(names.o_alarm_button_ok, " alarm button ok object is missing") + if alarm_button_ok is not None: + test.compare(alarm_button_ok.visible, + vButtons == alarm_buttons_Ok, + "Button visible [OK]") + + alarm_button_resume = utility.get_object_from_names(names.o_alarm_button_resume, " alarm button resume object is missing") + if alarm_button_resume is not None: + test.compare(alarm_button_resume.visible, + vButtons == alarm_buttons_Resume or + vButtons == alarm_buttons_Resume_RinseBack or + vButtons == alarm_buttons_Resume_End or + vButtons == alarm_buttons_Resume_RinseBack_End , + "Button visible [Resume]") + + alarm_button_rinseback = utility.get_object_from_names(names.o_alarm_button_rinseback, " alarm button rinseback object is missing") + if alarm_button_rinseback is not None: + test.compare(alarm_button_rinseback.visible, + vButtons == alarm_buttons_RinseBack or + vButtons == alarm_buttons_RinseBack_Resume or + vButtons == alarm_buttons_RinseBack_End or + vButtons == alarm_buttons_RinseBack_Resume_End , + "Button visible [RinseBack]") + + alarm_button_end = utility.get_object_from_names(names.o_alarm_button_end, " alarm button end object is missing") + if alarm_button_end is not None: + test.compare(alarm_button_end.visible, + vButtons == alarm_buttons_End or + vButtons == alarm_buttons_End_Resume or + vButtons == alarm_buttons_End_RinseBack or + vButtons == alarm_buttons_End_Resume_RinseBack , + "Button visible [End]") + + if alarm_button_ok is not None and alarm_button_ok.visible : mouseClick(alarm_button_ok) + if alarm_button_resume is not None and alarm_button_resume.visible : mouseClick(alarm_button_resume) + if alarm_button_rinseback is not None and alarm_button_rinseback.visible : mouseClick(alarm_button_rinseback) + if alarm_button_end is not None and alarm_button_end.visible : mouseClick(alarm_button_end) + + +def test_silence(vMuteTimeout, vFlags): + + alarm_button_mute = utility.get_object_from_names(names.o_alarm_button_mute, " alarm button ok object is missing") + if alarm_button_mute is not None: + test.compare(waitForObjectExists(names.o_alarm_button_mute).timeout, vMuteTimeout) + + muted = vFlags == alarm_flag_mute + test.compare( waitForObjectExists(names.o_alarm_button_mute_min).visible, muted) + test.compare( waitForObjectExists(names.o_alarm_button_mute_sec).visible, muted) + muteTimeout_min,muteTimeout_sec = divmod(vMuteTimeout, 60) + if muted: + test.compare(str(waitForObjectExists(names.o_alarm_button_mute_img).source.path), "/images/iBellOff") + test.compare(str(waitForObjectExists(names.o_alarm_button_mute_min).text), "{}" .format(muteTimeout_min)) + test.compare(str(waitForObjectExists(names.o_alarm_button_mute_sec).text), "{0:02}".format(muteTimeout_sec)) + minimize() + test.compare(str(waitForObjectExists(names.o_alarm_bar_mute_img ).source.path), "/images/iBellOff" ) + test.compare(str(waitForObjectExists(names.o_alarm_bar_mute_min ).text), "{}" .format(muteTimeout_min)) + test.compare(str(waitForObjectExists(names.o_alarm_bar_mute_sec ).text), "{0:02}".format(muteTimeout_sec)) + + else: + test.compare(str(waitForObjectExists(names.o_alarm_button_mute_img).source.path), "/images/iBellOn" ) + minimize() + test.compare(str(waitForObjectExists(names.o_alarm_bar_mute_img ).source.path), "/images/iBellOn" ) + + maximize() + def main(): utils.tstStart(__file__) - startApplication(names.AUT_NAME) + #testSettings.throwOnFailure = True + + startApplication(config.AUT_NAME + " -q") utils.waitForGUI(1) + test.log("TODO: Need to update testcase to reflect GUI changes") - denaliMessages.setAlarmStatus(0, 0, 0, 0, 0) - test_values (0, 0, 0, 0, 0) + + # --------------------- Alarm Dialog: test the buttons + for buttons in (alarm_buttons_Ok , + alarm_buttons_Resume , + alarm_buttons_RinseBack , + alarm_buttons_End , + alarm_buttons_Resume_RinseBack , + alarm_buttons_Resume_End , + alarm_buttons_RinseBack_End , + alarm_buttons_Resume_RinseBack_End ): + # denaliMessages.setAlarmStatus(1, 1, 0, 0, buttons) + test_buttons ( buttons) + + + ## -------------------- Alarm Dialog/Bar: test silence + # --------------------- Alarm Dialog/Bar: not muted + for mute_timeout in (0, 40, 40, 60, 75, 75): + test.log("TODO test alarm set status") + break + denaliMessages.setAlarmStatus(1, 1 ,0, mute_timeout, alarm_flag_unmute) + test_silence ( mute_timeout, alarm_flag_unmute) + + + # --------------------- Alarm Dialog/Bar: muted + alarm_button_mute = utility.get_object_from_names(names.o_alarm_button_mute, " alarm mute button object is missing") + if alarm_button_mute is not None: + mouseClick(alarm_button_mute) + for mute_timeout in (0, 10, 20, 30, 30, 100): + test.log("TODO test alarm set 2 status") + break + denaliMessages.setAlarmStatus(1, 2 ,0, mute_timeout, alarm_flag_mute) + test_silence ( mute_timeout, alarm_flag_mute) + + + ## -------------------- Alarm Dialog/Bar: test alarm messages + alarm_button_mute = utility.get_object_from_names(names.o_alarm_button_mute, " alarm mute button object is missing") + if alarm_button_mute is not None: + mouseClick(alarm_button_mute) + for alarm_id in (5, 5 , 6, 7, 8, 9, 10, 10, alarm_id_outofrange, alarm_id_outofrange, alarm_id_noalarm, alarm_id_noalarm): + # not all of alarms are required to be tested. + test.log("TODO test alarm set 3 status") + break + denaliMessages.setAlarmStatus(1, alarm_id, 0, 0, 0) + test_messages ( alarm_id ) - for i in range(len(names.AlarmTextMap)): - # setting priority is to see notification dialog is also showing correct text - for j in names.AlarmPriority: - denaliMessages.setAlarmStatus(j, i, 0, 0, 0) - test_values (j, i, 0, 0, 0) - - denaliMessages.setAlarmStatus(1, 2, 3, 4, 5) - test_values (1, 2, 3, 4, 5) - # Coverage - denaliMessages.setAlarmStatus(1, 2, 3, 4, 5) - test_values (1, 2, 3, 4, 5) - - denaliMessages.setAlarmStatus(0, 1, 3, 4, 5) - test_values (0, 1, 3, 4, 5) - - denaliMessages.setAlarmStatus(0, 0, 0, 0, 0) - #test_values (0, 0, 0, 0, 0) + ## -------------------- Alarm Dialog/Bar: test alarm priority colors + for alarm_priority in alarm_priorities: + test.log("TODO test alarm priority status") + break + denaliMessages.setAlarmStatus(alarm_priority, 1, 0, 0, 0) + test_colors (alarm_priority ) + utils.tstDone()