1# -*- coding: utf-8 -*- 2import os 3import sys 4import time 5import test_utils 6import test_constants 7import filecmp 8 9first_display_name = "main_display" 10second_display_name = "secondary_display" 11 12widget_name_output_files = [ 13"test_widget_name_main_display_resources.c", 14"test_widget_name_main_display_resources.h", 15"test_widget_name_secondary_display_resources.c", 16"test_widget_name_secondary_display_resources.h", 17"test_widget_name_specifications.c", 18"test_widget_name_specifications.h"] 19 20def get_test_header(): 21 notes = "* Widget Name Test *\n" 22 notes += "* *\n" 23 notes += "* Edit duplicate top level and child widget name *\n" 24 notes += "* (allowed) *\n" 25 notes += "* Edit duplicate child widget name under different *\n" 26 notes += "* top level widget(allowed) *\n" 27 notes += "* Edit duplicate top level widget name(not allowed) *\n" 28 notes += "* Edit duplicate child widget name under same top *\n" 29 notes += "* level widget(not allowed) *\n" 30 notes += "* Undo delete widget *\n" 31 notes += "* Import existing screens *\n" 32 notes += "* Test if we can find base widget correctly when *\n" 33 notes += "* base name is duplicated with child widget name *\n" 34 notes += "* under other top level widgets *\n" 35 return notes 36 37def run_new_project_create(project_name): 38 39 # create a new project 40 test_utils.toolbar_create() 41 test_utils.set_new_project_path(test_utils.DEFAULT_OUTPUT_FILE_PATH) 42 test_utils.set_new_project_name(project_name) 43 test_utils.save_new_project_create() 44 test_utils.close_message_dialog() 45 46 # configure project 47 test_utils.configure_project() 48 test_utils.configure_display_num(2) 49 test_utils.wait_for_key() 50 51 test_utils.select_display_index(1); 52 test_utils.configure_x_res(640) 53 test_utils.configure_y_res(480) 54 test_utils.configure_display_name(first_display_name) 55 test_utils.wait_for_key() 56 57 test_utils.select_display_index(2); 58 test_utils.configure_x_res(320) 59 test_utils.configure_y_res(240) 60 test_utils.configure_display_name(second_display_name) 61 test_utils.wait_for_key() 62 63 test_utils.save_project_configure() 64 65def run_widget_name_tests(generate, screenshot): 66 67 test_utils.output_test_header(get_test_header()) 68 test_utils.setup(generate, screenshot, 'test_widget_name_golden_file') 69 70 print('create test widget name project') 71 run_new_project_create("test_widget_name") 72 73 test_utils.select_project_tree_node('window') 74 test_utils.add_widget('GX_TYPE_WINDOW') 75 test_utils.edit_widget_props("ID_WIDGET_NAME", 'window')#make the name the same as its parent 76 77 test_utils.select_project_tree_node('window') 78 test_utils.add_widget('GX_TYPE_WINDOW') 79 test_utils.edit_widget_props_post('ID_WIDGET_NAME', 'window')#duplicate child widget name under the same top level widget, not allowed 80 test_utils.close_error_dialog() 81 82 test_utils.select_project_tree_node('window_1') 83 test_utils.add_widget('GX_TYPE_WINDOW') 84 test_utils.edit_widget_props_post('ID_WIDGET_NAME', 'window_1')#duplicate child widget name under the same top level widget, not allowed 85 test_utils.close_error_dialog() 86 87 test_utils.select_project_tree_node('window_1') 88 test_utils.delete_widget() 89 test_utils.undo() 90 91 test_utils.select_project_tree_node('default_folder') 92 test_utils.add_widget('GX_TYPE_WINDOW') 93 test_utils.edit_widget_props_post("ID_WIDGET_NAME", 'window')#duplicate top level widget name, not allowed 94 test_utils.close_error_dialog()#close message dialog, widge already existing 95 96 test_utils.select_project_tree_node('window_3') 97 test_utils.add_widget('GX_TYPE_WINDOW') 98 test_utils.edit_widget_props('ID_WIDGET_NAME', 'window_2')#duplicate child widget name under different top level widget, allowed 99 100 test_utils.toolbar_save() 101 test_utils.select_project_tree_node('default_folder') 102 103 #import existing screens 104 import_project_name = os.path.abspath(test_utils.DEFAULT_OUTPUT_FILE_PATH) + '\\test_widget_name.gxp' 105 test_utils.import_project(import_project_name) 106 test_utils.save_project_import_dialog() 107 108 test_utils.select_project_tree_node(first_display_name) 109 test_utils.insert_folder()#default_folder_1 110 test_utils.add_widget('GX_TYPE_WINDOW') 111 test_utils.add_widget('GX_TYPE_PROMPT') 112 test_utils.edit_widget_props('ID_WIDGET_NAME', 'base') 113 114 test_utils.select_project_tree_node('default_folder_1') 115 test_utils.add_widget('GX_TYPE_WINDOW') 116 test_utils.edit_widget_props('ID_WIDGET_NAME', 'base') 117 test_utils.edit_widget_props('ID_TEMPLATE', 1) 118 119 test_utils.select_project_tree_node('default_folder_1') 120 test_utils.add_widget('GX_TYPE_WINDOW') 121 test_utils.add_widget('GX_TYPE_PROMPT') 122 test_utils.edit_widget_props('ID_WIDGET_NAME', 'base') 123 124 test_utils.select_project_tree_node('default_folder_1') 125 test_utils.add_template('base') 126 test_utils.edit_widget_props_post('ID_WIDGET_NAME', 'window')#duplicate top level widget name 127 test_utils.close_error_dialog() 128 test_utils.compare_result() 129 130 # test rename widget on second display 131 test_utils.select_project_tree_node(second_display_name) 132 test_utils.wait_for_key('selected secondary display') 133 test_utils.insert_folder() #default_folder 134 test_utils.wait_for_key('inserted default folder') 135 test_utils.add_widget('GX_TYPE_WINDOW') 136 test_utils.add_widget('GX_TYPE_PROMPT') 137 test_utils.wait_for_key('Added window and prompt') 138 test_utils.edit_widget_props('ID_WIDGET_NAME', "secondary_prompt") 139 test_utils.wait_for_key('renamed the prompt') 140 141 test_utils.generate_all() 142 test_utils.click_generate_button() 143 test_utils.cmp_output_files(widget_name_output_files) 144 145 test_utils.write_end('Widget Name Tests')