# -*- coding: utf-8 -*- ## # 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. # # file tst_AlarmStatus # date 2020/08/04 # author Behrouz NematiPour # import names from dialin.squish import utils, denaliMessages # 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 ] # 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_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.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]) minimize() test.compare(str(waitForObject (names.o_alarm_bar ).color.name), alarm_colors_body[vPriority]) maximize() 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(waitForObjectExists(dlg).visible, False) if not bar_exists: test.compare(True, True) else: 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): test.compare(waitForObjectExists(names.o_alarm_button_ok ).visible, vButtons == alarm_buttons_Ok, "Button visible [OK]") test.compare(waitForObjectExists(names.o_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]") test.compare(waitForObjectExists(names.o_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]") test.compare(waitForObjectExists(names.o_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]") obj = waitForObjectExists(names.o_alarm_button_ok) if obj.visible : mouseClick(obj) obj = waitForObjectExists(names.o_alarm_button_resume) if obj.visible : mouseClick(obj) obj = waitForObjectExists(names.o_alarm_button_rinseback) if obj.visible : mouseClick(obj) obj = waitForObjectExists(names.o_alarm_button_end) if obj.visible : mouseClick(obj) def test_silence(vMuteTimeout, vFlags): 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__) #testSettings.throwOnFailure = True startApplication(names.AUT_NAME + " -q") utils.waitForGUI(1) # --------------------- 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): denaliMessages.setAlarmStatus(1, 1 ,0, mute_timeout, alarm_flag_unmute) test_silence ( mute_timeout, alarm_flag_unmute) # --------------------- Alarm Dialog/Bar: muted mouseClick(waitForObject(names.o_alarm_button_mute)) for mute_timeout in (0, 10, 20, 30, 30, 100): denaliMessages.setAlarmStatus(1, 2 ,0, mute_timeout, alarm_flag_mute) test_silence ( mute_timeout, alarm_flag_mute) ## -------------------- Alarm Dialog/Bar: test alarm messages 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. denaliMessages.setAlarmStatus(1, alarm_id, 0, 0, 0) test_messages ( alarm_id ) ## -------------------- Alarm Dialog/Bar: test alarm priority colors for alarm_priority in alarm_priorities: denaliMessages.setAlarmStatus(alarm_priority, 1, 0, 0, 0) test_colors (alarm_priority ) utils.tstDone()