Index: tst_AlarmStatusData/test.py =================================================================== diff -u -r393fd43e9a1cbf6b25a0f107928a051a622b2be2 -rab2ebd8c7b5c8df145c2b8cc06a397258ecf2f13 --- tst_AlarmStatusData/test.py (.../test.py) (revision 393fd43e9a1cbf6b25a0f107928a051a622b2be2) +++ tst_AlarmStatusData/test.py (.../test.py) (revision ab2ebd8c7b5c8df145c2b8cc06a397258ecf2f13) @@ -17,6 +17,42 @@ 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) @@ -30,7 +66,7 @@ return [False, None] # ALARM_ID = (priority, alarmID, escalates in, silent_espires_in, flags) -def test_values(vPriority, vTopID, vEscalatesIn, vMuteTimeout, vFlags): +def test_colors(vPriority, vTopID, vEscalatesIn, vMuteTimeout, vFlags): barVisible, barObj = isNotificationBar() dlgVisible, dlgObj = isNotificationDialog() @@ -53,35 +89,131 @@ 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__) - startApplication(names.AUT_NAME) + #testSettings.throwOnFailure = True + + startApplication(names.AUT_NAME + " -q") utils.waitForGUI(1) - denaliMessages.setAlarmStatus(0, 0, 0, 0, 0) - test_values (0, 0, 0, 0, 0) + # ----- 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 ) - 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) +# # ----- 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()