# -*- 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 colors alarm_id_noalarm = 0 alarm_id_outofrange = 1000000 alarm_id_undefined_string = "ALARM_ID_UNDEFINED [{}]" def isNotificationBar(): if object.exists(names.o_alarm_bar): alarmBar = findObject(names.o_alarm_bar) return [alarmBar.visible, alarmBar] return [False, None] 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_ID = (priority, alarmID, escalates in, silent_espires_in, flags) def test_colors(vPriority, vTopID, vEscalatesIn, vMuteTimeout, vFlags): barVisible, barObj = isNotificationBar() dlgVisible, dlgObj = isNotificationDialog() 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 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))) 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))) else: test.compare(str(dlgObj.text), names.AlarmTextMap[vTopID] , "dlg I{} P{} :{}".format(vTopID, vPriority, str(dlgObj.text))) return # ALARM_ID = (priority, alarmID, escalates in, silent_espires_in, flags) def test_messages(vTopID): if vTopID == alarm_id_noalarm: utils.waitForGUI() # this wait is necessary. Due to dialog animation it will be hide until the animation is done. test.compare(object.exists(names.o_alarm_dialog_content), False ) test.compare(object.exists(names.o_alarm_bar ), False ) else: if vTopID == alarm_id_outofrange: test.compare(str(waitForObjectExists(names.o_alarm_text_description).text), alarm_id_undefined_string.format(vTopID)) else: test.compare(str(waitForObjectExists(names.o_alarm_text_description).text), names.AlarmTextMap[vTopID]) # mouseClick(waitForObjectExists(names.o_alarm_button_minimize)) # test.compare(str(waitForObjectExists(names.o_alarm_bar_text).text), names.AlarmTextMap[vTopID]) pass 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_minimize_maximize(): mouseClick(waitForObjectExists(names.o_alarm_button_minimize)) pass 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) if muted: test.compare(str(waitForObjectExists(names.o_alarm_button_mute_img).source.path), "/images/iBellOff") muteTimeout_min,muteTimeout_sec = divmod(vMuteTimeout, 60) 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)) else: test.compare(str(waitForObjectExists(names.o_alarm_button_mute_img).source.path), "/images/iBellOn" ) def main(): utils.tstStart(__file__) #testSettings.throwOnFailure = True startApplication(names.AUT_NAME + " -q") utils.waitForGUI(1) # ----- test silence # 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) # 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) # ----- 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) # ----- test alarm messages (dialog and bar) 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 ) # # ----- test alarm priority colors # for alarm_priority in names.AlarmPriority: # denaliMessages.setAlarmStatus(alarm_priority, 1, 0, 0, 0) # test_colors (alarm_priority ) # # ----- test minimize/maximize utils.tstDone()