# -*- 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_post # @author (last) Joseph varghese # @date (last) 02-Feb-2022 # This test contradicts verification of ui alarms dialog # section import names import logging from dialin.ui import utils from configuration import config from dialin.ui.hd_simulator import HDSimulator from dialin.protocols.CAN import DenaliCanMessenger from dialin.ui.hd_simulator_alarms import HDAlarmsSimulator ALARM_EXPIRES_TIME = (0, 10, 20, 30, 30, 100) alarm_id_combination = (2, 3, 5, 7, 10, 15, 20, 25, 30, 50) logging.basicConfig(filename='log_file.log',level=logging.INFO, datefmt='%d-%b-%y %H:%M:%S') hd_simulator = HDSimulator() logger = logging.getLogger("INFO") messenger = DenaliCanMessenger('can0') alarm = HDAlarmsSimulator(can_interface=messenger, logger=logger) def minimize(): """ Method to minimize alarm dialog box @param N/A @output N/A """ 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(): """ Method to maximize alarm dialog box @param N/A @output N/A """ 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_button(flag, vButtons): """ Method to verify single button on alarm dialog box @param flag - (bool) alarm flag to be set @param vButtons - (bool) button binary @output N/A """ alarm.cmd_activate_alarm_id(state = 1, alarm = 1, flags = flag) test.compare(waitForObjectExists(names.o_alarm_button_ok ).visible, vButtons == config.ALARM_BUTTONS_OK, "Button visible [OK]") test.compare(waitForObjectExists(names.o_alarm_button_resume ).visible, vButtons == config.ALARM_BUTTONS_RESUME or vButtons == config.ALARM_BUTTONS_RESUME_RINSEBACK or vButtons == config.ALARM_BUTTONS_RESUME_END or vButtons == config.ALARM_BUTTONS_RESUME_RINSEBACK_END , "Button visible [Resume]") test.compare(waitForObjectExists(names.o_alarm_button_rinseback ).visible, vButtons == config.ALARM_BUTTONS_RINSEBACK or vButtons == config.ALARM_BUTTONS_RINSEBACK_RESUME or vButtons == config.ALARM_BUTTONS_RINSEBACK_END or vButtons == config.ALARM_BUTTONS_RINSEBACK_RESUME_END , "Button visible [RINSEBACK]") test.compare(waitForObjectExists(names.o_alarm_button_end ).visible, vButtons == config.ALARM_BUTTONS_END or vButtons == config.ALARM_BUTTONS_END_RESUME or vButtons == config.ALARM_BUTTONS_END_RINSEBACK or vButtons == config.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) utils.waitForGUI(1) alarm.cmd_alarm_condition_cleared(alarm_id = 1) def test_all_buttons(): """ Method to verify multiple buttons on alarm dialog box @param N/A @output N/A """ obj = waitForObjectExists(names.o_alarm_button_resume) if obj.visible : mouseClick(obj) test.compare(waitForObjectExists(names.o_alarm_button_resume ).visible, True ,"Button visible [Resume]") obj = waitForObjectExists(names.o_alarm_button_rinseback) if obj.visible : mouseClick(obj) test.compare(waitForObjectExists(names.o_alarm_button_rinseback ).visible, True ,"Button visible [RINSEBACK]") obj = waitForObjectExists(names.o_alarm_button_end) if obj.visible : mouseClick(obj) test.compare(waitForObjectExists(names.o_alarm_button_end ).visible, True ,"Button visible [End]") obj = waitForObjectExists(names.o_alarm_button_ok) if obj.visible == True : mouseClick(obj) test.compare(waitForObjectExists(names.o_alarm_button_ok ).visible, True ,"Button visible [OK]") else: test.compare(waitForObjectExists(names.o_alarm_button_ok ).visible, False ,"Button not visible [OK]") def verification_of_alarm_flag(): """ Method to verify alarm flag @param N/A @output N/A """ test.startSection("verification of alarm flag.") flag_status = alarm.cmd_make_alarm_flags(no_resume=1, no_rinseback=1, no_end_treatment=1, user_must_ack=1) test_button(flag = flag_status, vButtons = config.ALARM_BUTTONS_OK) flag_status = alarm.cmd_make_alarm_flags(no_resume=1, no_rinseback=1, no_end_treatment=0, user_must_ack=0) test_button(flag = flag_status, vButtons = config.ALARM_BUTTONS_END) flag_status = alarm.cmd_make_alarm_flags(no_resume=1, no_rinseback=0, no_end_treatment=1, user_must_ack=0) test_button(flag = flag_status, vButtons = config.ALARM_BUTTONS_RINSEBACK) flag_status = alarm.cmd_make_alarm_flags(no_resume=0, no_rinseback=1, no_end_treatment=1, user_must_ack=0) test_button(flag = flag_status, vButtons = config.ALARM_BUTTONS_RESUME) flag_status = alarm.cmd_make_alarm_flags(no_resume=0, no_rinseback=0, no_end_treatment=0, user_must_ack=1) alarm.cmd_activate_alarm_id(state = 1, alarm = 1, flags = flag_status) test_all_buttons() flag_status = alarm.cmd_make_alarm_flags(no_resume=0, no_rinseback=0, no_end_treatment=0, alarms_silenced=1) alarm.cmd_activate_alarm_id(state = 1, alarm = 1, flags = flag_status) test_all_buttons() flag_status = alarm.cmd_make_alarm_flags(no_resume=0, no_rinseback=0, no_end_treatment=0, no_minimize=1) alarm.cmd_activate_alarm_id(state = 1, alarm = 1, flags = flag_status) test_all_buttons() #enables and verifies user must acknowledge flag flag_status = alarm.cmd_make_alarm_flags(no_resume=0, no_rinseback=0, no_end_treatment=0, user_must_ack=1, alarms_silenced=0, no_minimize=0) alarm.cmd_activate_alarm_id(state = 1, alarm = 1, flags = flag_status) test.compare(waitForObjectExists(names.o_alarm_button_ok ).visible, True ,"Button visible [OK]") test.compare(waitForObjectExists(names.o_alarm_button_resume ).visible, True ,"Button visible [Resume]") test.compare(waitForObjectExists(names.o_alarm_button_rinseback ).visible, True ,"Button visible [RINSEBACK]") test.compare(waitForObjectExists(names.o_alarm_button_end ).visible, True ,"Button visible [End]") #enables and verifies no alarm silence flag flag_status = alarm.cmd_make_alarm_flags(no_resume=0, no_rinseback=0, no_end_treatment=0, user_must_ack=0, no_minimize=0, alarms_silenced=0) alarm.cmd_activate_alarm_id(state = 1, alarm = 1, flags = flag_status) test.compare(waitForObjectExists(names.o_alarm_not_silence_img ).visible, True ,"Alarm not silence button is visible") test.compare(waitForObjectExists(names.o_alarm_button_ok ).visible, False ,"Button not visible [OK]") test.compare(waitForObjectExists(names.o_alarm_button_resume ).visible, True ,"Button visible [Resume]") test.compare(waitForObjectExists(names.o_alarm_button_rinseback ).visible, True ,"Button visible [RINSEBACK]") test.compare(waitForObjectExists(names.o_alarm_button_end ).visible, True ,"Button visible [End]") #enables and verifies alarm silence flag flag_status = alarm.cmd_make_alarm_flags(no_resume=0, no_rinseback=0, no_end_treatment=0, user_must_ack=0, no_minimize=0, alarms_silenced=1) alarm.cmd_activate_alarm_id(state = 1, alarm = 1, flags = flag_status) test.compare(waitForObjectExists(names.o_alarm_silence_img ).visible, True ,"Alarm silence button is visible") test.compare(waitForObjectExists(names.o_alarm_button_ok ).visible, False ,"Button not visible [OK]") test.compare(waitForObjectExists(names.o_alarm_button_resume ).visible, True ,"Button visible [Resume]") test.compare(waitForObjectExists(names.o_alarm_button_rinseback ).visible, True ,"Button visible [RINSEBACK]") test.compare(waitForObjectExists(names.o_alarm_button_end ).visible, True ,"Button visible [End]") #enables and verifies alarm no minimize flag flag_status = alarm.cmd_make_alarm_flags(no_resume=0, no_rinseback=0, no_end_treatment=0, user_must_ack=0, alarms_silenced=0, no_minimize=1) alarm.cmd_activate_alarm_id(state = 1, alarm = 1, flags = flag_status) test.compare(waitForObjectExists(names.o_alarm_button_ok ).visible, False ,"Button not visible [OK]") test.compare(waitForObjectExists(names.o_alarm_button_resume ).visible, True ,"Button visible [Resume]") test.compare(waitForObjectExists(names.o_alarm_button_rinseback ).visible, True ,"Button visible [RINSEBACK]") test.compare(waitForObjectExists(names.o_alarm_button_end ).visible, True ,"Button visible [End]") test.endSection() def test_color_based_on_alarm_priority(alarm_priority): """ Method to verify alarm dialog box color based on alarm priority @param alarm_priority - (int) alarm priority level @output N/A """ test.startSection("verification of alarm dialog box color based on alarm priority -> " + config.ALARM_PRIORITY_OPTIONS[alarm_priority]) test.compare(str(waitForObjectExists(names.o_modalDialog ).color.name), config.ALARMS_COLORS_BODY[(config.ALARM_PRIORITY_OPTIONS[alarm_priority])]) test.compare(str(waitForObjectExists(names.o_alarm_dialog_titleBar).color.name), config.ALARMS_COLORS_HEADER[(config.ALARM_PRIORITY_OPTIONS[alarm_priority])]) minimize() test.compare(str(waitForObject (names.o_alarm_bar ).color.name), config.ALARMS_COLORS_BODY[(config.ALARM_PRIORITY_OPTIONS[alarm_priority])]) maximize() test.endSection() def test_message_based_on_alarm_id(alarm_id): """ Method to verify alarm message based on alarm id @param alarm id - (int) alarm id to be set. @output N/A """ test.startSection("verification of alarm message based on alarm id -> " + str(alarm_id)) if alarm_id == config.ALARM_ID_OUT_OF_RANGE: test.compare(str(waitForObjectExists(names.o_alarm_text_description).text), config.UNDEFINED_ALARM_ID_MSG.format(alarm_id), "verified alarm message for exceeded alarm id's") minimize() test.compare(str(waitForObjectExists(names.o_alarm_bar_text ).text), config.UNDEFINED_ALARM_ID_MSG.format(alarm_id), "verified alarm message for exceeded alarm id's") else: test.compare(str(waitForObjectExists(names.o_alarm_text_description).text), config.ALARM_ID_AND_MESSAGES[alarm_id], "Alarm message is verified from alarm dialog box") minimize() test.compare(str(waitForObjectExists(names.o_alarm_bar_text ).text), config.ALARM_ID_AND_MESSAGES[alarm_id], "Alarm message is verified from alarm bar") maximize() test.endSection() def test_verify_alarm_mute(alarm_timeout = 0, v_flags = 0, alarm_status = "Mute"): """ Method to verify alarm mute and unmute characteristics. @param alarm_timeout - (int) timeout delay for alarm @param alarm_status - (str) status of alarm @param v_flag - (int) flag for mute and unmute operation. @output N/A """ test.startSection("verification of alarm " + str(alarm_status) + "condition for timeout " + str(alarm_timeout)) test.compare(waitForObjectExists(names.o_alarm_button_mute).timeout, alarm_timeout) muted = v_flags == config.ALARM_MUTE_FLAG test.compare(waitForObjectExists(names.o_alarm_button_mute_min).visible, muted, "Mute min button is visible") test.compare(waitForObjectExists(names.o_alarm_button_mute_sec).visible, muted, "Mute sec button is visible") muteTimeout_min,muteTimeout_sec = divmod(alarm_timeout, 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() test.endSection() def verification_of_alarm_messages(): """ Method to verify parameters on the alarm bar @param N/A @output N/A """ test.startSection("verification of alarm bar parameters") for alarm_id in range(0, len(config.ALARM_ID_AND_MESSAGES)+1): if alarm_id == config.ALARM_ID_NO_ALARM: test.log("validate alarm condition for alarm id : 0") alarm.cmd_set_alarm_cleared_condition(alarm_id = 0) 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: alarm.cmd_activate_alarm_id( alarm = alarm_id) #verify alarm message based on id on alarm bar section. test_message_based_on_alarm_id(alarm_id) test.endSection() def verification_of_alarm_parameters(): """ Method to verify parameters of the alarm @param N/A @output N/A """ test.startSection("verification of alarm parameters") flag_mute = alarm.cmd_make_alarm_flags(alarms_silenced=1) flag_unmute = alarm.cmd_make_alarm_flags(alarms_silenced=0) mouseClick(waitForObjectExists(names.o_alarm_button_mute)) for alarm_id in alarm_id_combination: for alarm_index in range(config.NUM_OF_ALARM_PRIORITIES): alarm.cmd_activate_alarm_id(state = alarm_index, alarm = alarm_id, silence_expires = ALARM_EXPIRES_TIME[alarm_index], flags = flag_mute) #verify mute feature in application. test_verify_alarm_mute(alarm_timeout=ALARM_EXPIRES_TIME[alarm_index], v_flags=config.ALARM_MUTE_FLAG, alarm_status = "Mute") mouseClick(waitForObjectExists(names.o_alarm_button_mute)) alarm.cmd_activate_alarm_id(state = alarm_index, alarm = alarm_id, flags = flag_unmute) #verify un-mute feature in application. test_verify_alarm_mute(v_flags=config.ALARM_UNMUTE_FLAG, alarm_status = "UnMute") #verify coloring based on priority. test_color_based_on_alarm_priority(alarm_index) #verify cleared alarm alarm.cmd_set_alarm_cleared(alarm_id) utils.waitForGUI(0.2) #delay for fetching effect on UI test.endSection() def main(): utils.tstStart(__file__) startApplication(config.AUT_NAME) verification_of_alarm_messages() verification_of_alarm_parameters() verification_of_alarm_flag() utils.tstDone()