1import test_utils 2import test_constants 3 4display_name = "display_1" 5folder_name = "default_folder" 6 7test_copy_paste_output_files = [ 8"test_copy_paste_resources.c", 9"test_copy_paste_resources.h", 10"test_copy_paste_specifications.c", 11"test_copy_paste_specifications.h"] 12 13def get_test_header(): 14 notes = "* Studio Copy/Paste Widgets Test *\n" 15 notes += "* *\n" 16 notes += "* Copy and Paste widgets to an empty project with *\n" 17 notes += "* pixlemap folder been removed *\n" 18 return notes 19 20def run_new_project_create(path, name): 21 # create a new project 22 test_utils.toolbar_create() 23 test_utils.set_new_project_path(path) 24 test_utils.set_new_project_name(name) 25 test_utils.save_new_project_create() 26 27 # configure project 28 test_utils.configure_project() 29 test_utils.configure_x_res(800) 30 test_utils.configure_y_res(480) 31 test_utils.configure_display_name('display_1') 32 test_utils.configure_display_color_format('GX_COLOR_FORMAT_565RGB') 33 test_utils.configure_source_path('output_files') 34 test_utils.configure_header_path('output_files') 35 test_utils.configure_resource_path('output_files') 36 test_utils.save_project_configure() 37 38 # close message dialog when create new and delete default window 39 test_utils.close_message_dialog() 40 test_utils.select_project_tree_node("window") 41 test_utils.delete_widget(0) 42 43 # configure languages 44 test_utils.configure_languages() 45 test_utils.add_language() 46 test_utils.add_language() 47 test_utils.select_language_index(2) 48 test_utils.select_language_id('Latin') 49 test_utils.select_language_index(3) 50 test_utils.select_language_id('French') 51 test_utils.save_language_configure() 52 53 #edit string table 54 test_utils.edit_string() 55 56 test_utils.sort_string(test_constants.STRING_SORT_TYPE_ID) 57 test_utils.save_string_edit() 58 59 test_utils.toolbar_save() 60 61def run_copy_paste_folder(): 62 print("test copy-paste with folder") 63 base_screen = 'base_screen' 64 folder_1 = 'default_folder_1' 65 folder_2 = 'default_folder_2' 66 folder_3 = 'default_folder_3' 67 derived_1 = 'derived_1' 68 derived_2 = 'derived_2' 69 test_utils.select_project_tree_node(folder_name) 70 test_utils.toolbar_copy()#copy default folder 71 test_utils.toolbar_paste_no_wait()#paste to default folder 72 test_utils.close_message_dialog()#notify that paste to folder is not allowed 73 74 test_utils.select_project_tree_node(display_name) 75 test_utils.toolbar_paste_no_wait()#paste to display 76 77 test_utils.select_project_tree_node('window') 78 test_utils.toolbar_copy() 79 test_utils.select_project_tree_node(folder_1) 80 test_utils.toolbar_paste()#paste window to default folder 1 81 82 test_utils.select_project_tree_node('window_2') 83 test_utils.edit_widget_props("ID_WIDGET_NAME", base_screen) 84 test_utils.edit_widget_props("ID_TEMPLATE", 1) 85 test_utils.select_project_tree_node(folder_1) 86 test_utils.add_template(base_screen) 87 test_utils.edit_widget_props("ID_WIDGET_NAME",derived_1) 88 89 test_utils.select_project_tree_node(folder_1) 90 test_utils.toolbar_copy() 91 test_utils.select_project_tree_node(display_name) 92 test_utils.toolbar_paste_no_wait() 93 test_utils.close_message_dialog()#notify to skip paste template "base_screen" 94 95 test_utils.select_project_tree_node(derived_1) 96 test_utils.edit_widget_props("ID_TEMPLATE", 1) 97 test_utils.select_project_tree_node(folder_1) 98 test_utils.add_template(derived_1) 99 test_utils.edit_widget_props("ID_WIDGET_NAME",derived_2) 100 101 test_utils.select_project_tree_node(folder_1) 102 test_utils.toolbar_copy() 103 test_utils.select_project_tree_node(display_name) 104 test_utils.toolbar_paste_no_wait() 105 test_utils.close_message_dialog()#notify to skip paste template "derived_1" 106 test_utils.close_message_dialog()#notify to skip paste template "base_screen" 107 108 test_utils.select_project_tree_node(folder_3) 109 test_utils.delete_folder() 110 test_utils.select_project_tree_node(folder_2) 111 test_utils.delete_folder() 112 test_utils.select_project_tree_node(folder_1) 113 test_utils.delete_folder() 114 115 test_utils.select_project_tree_node(display_name) 116 test_utils.insert_folder() 117 test_utils.rename_folder(folder_name) 118 test_utils.close_message_dialog()#notify that folder name already exist 119 test_utils.select_project_tree_node(folder_1) 120 test_utils.toolbar_copy() 121 test_utils.select_project_tree_node(display_name) 122 test_utils.toolbar_paste_no_wait() 123 124 test_utils.select_project_tree_node(display_name) 125 test_utils.insert_folder() 126 test_utils.rename_folder('a_folder') 127 test_utils.select_project_tree_node(display_name) 128 test_utils.insert_folder() 129 test_utils.rename_folder('b_folder') 130 test_utils.select_project_tree_node('b_folder') 131 test_utils.delete_folder() 132 test_utils.select_project_tree_node('a_folder') 133 test_utils.delete_folder() 134 135def run_copy_paste_template(): 136 test_utils.select_project_tree_node(folder_name) 137 138 base_name = 'base' 139 derived_name = 'derived' 140 141 # add a template 142 test_utils.add_widget('GX_TYPE_WINDOW'); 143 test_utils.edit_widget_props('ID_WIDGET_NAME', base_name) 144 test_utils.edit_widget_props('ID_TEMPLATE', 1) 145 146 # add a child widget to the template 147 test_utils.select_project_tree_node(base_name) 148 test_utils.add_widget('GX_TYPE_BUTTON'); 149 150 # copy/paste template as a top level screen 151 test_utils.select_project_tree_node(base_name) 152 test_utils.toolbar_copy() 153 test_utils.select_project_tree_node(folder_name) 154 test_utils.toolbar_paste_no_wait() 155 test_utils.close_message_dialog()#notify template already exist. 156 157 # copy/paste template to a top level screen 158 test_utils.select_project_tree_node(folder_name) 159 test_utils.add_widget('GX_TYPE_WINDOW') 160 test_utils.edit_widget_props('ID_WIDGET_NAME', 'parent_screen') 161 test_utils.toolbar_paste_no_wait(); 162 test_utils.close_message_dialog()#notify template can only be pasted to folder node 163 164 # delete template 165 test_utils.select_project_tree_node(base_name) 166 test_utils.delete_widget() 167 168 # paste template widget to default folder 169 test_utils.select_project_tree_node(folder_name) 170 test_utils.toolbar_paste(); 171 172 # add a derived widget from template 173 test_utils.select_project_tree_node(folder_name) 174 test_utils.add_template(base_name) 175 test_utils.edit_widget_props("ID_WIDGET_NAME", derived_name) 176 test_utils.add_widget('GX_TYPE_PROMPT') 177 test_utils.edit_widget_props("ID_STRING_VAL", "derived") 178 179 # copy derived widget 180 test_utils.select_project_tree_node(derived_name) 181 test_utils.toolbar_copy() 182 183 # delete derived widget 184 test_utils.select_project_tree_node(derived_name) 185 test_utils.delete_widget() 186 187 # delete base widget 188 test_utils.select_project_tree_node(base_name) 189 test_utils.delete_widget() 190 191 # paste derived widget to default folder 192 test_utils.select_project_tree_node(folder_name) 193 test_utils.toolbar_paste() 194 195 # delete derived widget 196 test_utils.select_project_tree_node(derived_name) 197 test_utils.delete_widget() 198 199 # delete base wiget 200 test_utils.select_project_tree_node(base_name) 201 test_utils.delete_widget() 202 203 # create a widget that duplicate template name 204 test_utils.select_project_tree_node(folder_name) 205 test_utils.add_widget('GX_TYPE_WINDOW') 206 test_utils.edit_widget_props('ID_WIDGET_NAME', base_name) 207 208 # paste derived widget to parent screen 209 test_utils.select_project_tree_node('parent_screen') 210 test_utils.toolbar_paste_no_wait() 211 test_utils.close_message_dialog() # notify template name already exist 212 213 # delete widget that duplicate template name 214 test_utils.select_project_tree_node(base_name) 215 test_utils.delete_widget() 216 217 # paste derived widget to parent screen 218 test_utils.select_project_tree_node('parent_screen') 219 test_utils.toolbar_paste() 220 221 # paste derived widget to parent screen 222 test_utils.select_project_tree_node('parent_screen') 223 test_utils.toolbar_paste() 224 225def run_copy_paste_tests(generate, screenshot): 226 test_utils.output_test_header(get_test_header()) 227 test_utils.setup(generate, screenshot, 'test_copy_paste_golden_file') 228 229 test_project = 'test_copy_paste' 230 print('create a new project: %s' %(test_project)) 231 run_new_project_create('./', test_project) 232 233 #remove custom pixelmap folder 234 test_utils.click_resource_group('PIXELMAP_GROUP') 235 test_utils.remove_pixelmap_folder('Custom') 236 test_utils.click_resource_group('PIXELMAP_GROUP') 237 test_utils.toolbar_save() 238 239 #copy widgets to empty project with pixelmap folder being removed 240 print('copy from generic_16bpp.gxp to %s.gxp' %(test_project)) 241 test_utils.open_project('generic_16bpp.gxp') 242 test_utils.select_project_tree_node('window') 243 test_utils.toolbar_copy() 244 test_utils.open_project(test_project+'.gxp') 245 test_utils.select_project_tree_node(folder_name) 246 test_utils.toolbar_paste() 247 248 #copy "window" 249 test_utils.select_project_tree_node("window") 250 test_utils.toolbar_copy() 251 252 #paste "window" to "display_1" 253 test_utils.select_project_tree_node(folder_name) 254 test_utils.toolbar_paste() 255 256 #copy/paste multiple widgets 257 test_utils.select_multi_widgets("window_1") 258 test_utils.select_multi_widgets("prompt_1") 259 test_utils.select_multi_widgets("text_input_2") 260 test_utils.toolbar_copy() 261 test_utils.select_project_tree_node("window") 262 test_utils.toolbar_paste() 263 264 #test copy/paste folders 265 run_copy_paste_folder() 266 267 #test copy/paste template 268 run_copy_paste_template() 269 270 #generate output files 271 test_utils.generate_all() 272 test_utils.click_generate_button(1) 273 test_utils.cmp_output_files(test_copy_paste_output_files) 274 275 test_utils.toolbar_save() 276 277 test_utils.write_end('Copy/Paste Tests') 278