1# -*- coding: utf-8 -*- 2import os 3import sys 4import time 5import test_utils 6import test_constants 7import filecmp 8 9display_1_name = "main_display" 10display_2_name = "second_display" 11source_folder_1 = "source_folder_1" 12source_folder_2 = "source_folder_2" 13target_folder_1 = "target_folder_1" 14target_folder_2 = "target_folder_2" 15 16project_import_output_files_test1 = [ 17"test_project_import_target_main_display_resources.c", 18"test_project_import_target_main_display_resources.h", 19"test_project_import_target_second_display_resources.c", 20"test_project_import_target_second_display_resources.h", 21"test_project_import_target_specifications.c", 22"test_project_import_target_specifications.h"] 23 24project_import_output_files_test2 = [ 25"test_compile_imported_output_resources.c", 26"test_compile_imported_output_resources.h", 27"test_compile_imported_output_specifications.c", 28"test_compile_imported_output_specifications.h"] 29 30 31 32def get_test_header(): 33 notes = "* Project Import Test *\n" 34 notes += "* *\n" 35 notes += "* Import screens from select project *\n" 36 notes += "* Import screens that based on template *\n" 37 notes += "* Import duplicate strings *\n" 38 notes += "* Import duplicate colors *\n" 39 notes += "* Import screens to project that have multiple themes *\n" 40 return notes 41 42def add_target_colors(): 43 test_utils.click_resource_group('COLOR_GROUP') 44 test_utils.add_color() 45 test_utils.set_color_name('green') 46 test_utils.set_color_red(15) 47 test_utils.set_color_green(235) 48 test_utils.set_color_blue(16) 49 test_utils.save_color_edit() 50 51 test_utils.add_color() 52 test_utils.set_color_name('red') 53 test_utils.set_color_hue(10) 54 test_utils.set_color_sat(60) 55 test_utils.set_color_lum(49) 56 test_utils.save_color_edit() 57 test_utils.click_resource_group('COLOR_GROUP') 58 59def add_source_colors(): 60 test_utils.click_resource_group('COLOR_GROUP') 61 test_utils.add_color() 62 test_utils.set_color_name('green') 63 test_utils.set_color_red(15) 64 test_utils.set_color_green(100) 65 test_utils.set_color_blue(16) 66 test_utils.save_color_edit() 67 68 test_utils.add_color() 69 test_utils.set_color_name('red') 70 test_utils.set_color_hue(12) 71 test_utils.set_color_sat(88) 72 test_utils.set_color_lum(49) 73 test_utils.save_color_edit() 74 test_utils.click_resource_group('COLOR_GROUP') 75 76def add_target_strings(): 77 test_utils.click_resource_group('STRING_GROUP') 78 test_utils.edit_string() 79 80 test_utils.add_string() 81 test_utils.edit_string_id('TEST_STRING_ID_1') 82 test_utils.edit_top_string('target_string_1') 83 84 test_utils.add_string() 85 test_utils.edit_string_id('TEST_STRING_ID_2') 86 test_utils.edit_top_string('target_string_2') 87 88 test_utils.add_string() 89 test_utils.edit_string_id('TEST_STRING_ID_3') 90 test_utils.edit_top_string('target_string_3') 91 92 test_utils.save_string_edit() 93 test_utils.click_resource_group('STRING_GROUP') 94 95def add_source_strings(): 96 test_utils.click_resource_group('STRING_GROUP') 97 test_utils.edit_string() 98 99 test_utils.add_string() 100 test_utils.edit_string_id('TEST_STRING_ID_1') 101 test_utils.edit_top_string('source_string_4') 102 103 test_utils.add_string() 104 test_utils.edit_string_id('TEST_STRING_ID_2') 105 test_utils.edit_top_string('source_string_5') 106 107 test_utils.add_string() 108 test_utils.edit_string_id('TEST_STRING_ID_3') 109 test_utils.edit_top_string('source_string_6') 110 111 test_utils.save_string_edit() 112 test_utils.click_resource_group('STRING_GROUP') 113 114def run_new_project_create(project_name): 115 116 # create a new project 117 test_utils.toolbar_create() 118 test_utils.set_new_project_path(test_utils.DEFAULT_OUTPUT_FILE_PATH) 119 test_utils.set_new_project_name(project_name) 120 test_utils.save_new_project_create() 121 122 # configure project 123 test_utils.configure_project() 124 test_utils.configure_display_num(2) 125 test_utils.select_display_index(1) 126 test_utils.configure_x_res(640) 127 test_utils.configure_y_res(480) 128 test_utils.configure_display_name(display_1_name) 129 test_utils.select_display_index(2) 130 test_utils.configure_x_res(640) 131 test_utils.configure_y_res(480) 132 test_utils.configure_display_name(display_2_name) 133 test_utils.save_project_configure() 134 135 # close message dialog when create new and delete default_folder 136 test_utils.close_message_dialog() 137 test_utils.select_project_tree_node("default_folder") 138 test_utils.delete_folder(0) 139 140 # create folder 141 test_utils.select_project_tree_node(display_1_name) 142 if project_name == 'test_project_import_source': 143 test_utils.insert_folder() 144 test_utils.rename_folder(source_folder_1) 145 else: 146 test_utils.insert_folder() 147 test_utils.rename_folder(target_folder_1) 148 149 test_utils.select_project_tree_node(display_2_name) 150 if project_name == 'test_project_import_source': 151 test_utils.insert_folder() 152 test_utils.rename_folder(source_folder_2) 153 else: 154 test_utils.insert_folder() 155 test_utils.rename_folder(target_folder_2) 156 157 test_utils.select_project_tree_node(display_1_name) 158 159 # configure themes 160 test_utils.configure_themes() 161 test_utils.select_display_name('display_1') 162 test_utils.add_theme() 163 test_utils.add_theme() 164 test_utils.save_theme_configure() 165 166 # add fonts 167 test_utils.click_resource_group('FONT_GROUP') 168 169 test_utils.add_font() 170 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 171 test_utils.set_font_name('NORMAL_FONT') 172 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 173 test_utils.set_font_height(28) 174 test_utils.save_font_edit() 175 176 test_utils.add_font() 177 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 178 test_utils.set_font_name('MIDDLE_FONT') 179 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 180 test_utils.set_font_height(30) 181 test_utils.save_font_edit() 182 183 test_utils.click_resource_group('FONT_GROUP') 184 185 test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'red_apple.png') 186 187def edit_source_display_1(): 188 #---------------------------------------# 189 #edit display 1 # 190 #---------------------------------------# 191 192 test_utils.select_project_tree_node(source_folder_1) 193 test_utils.add_widget('GX_TYPE_WINDOW') 194 test_utils.edit_widget_props("ID_XPOS", 0) 195 test_utils.edit_widget_props("ID_YPOS", 0) 196 test_utils.edit_widget_props("ID_WIDTH", 640) 197 test_utils.edit_widget_props("ID_HEIGHT", 480) 198 test_utils.edit_widget_props("ID_PIXELMAP_0", "RED_APPLE") 199 test_utils.edit_widget_props("ID_WIDGET_NAME","base") 200 test_utils.edit_widget_props("ID_TEMPLATE", 1) 201 202 test_utils.select_project_tree_node(source_folder_1) 203 test_utils.add_template("base") 204 test_utils.edit_widget_props("ID_WIDGET_NAME","base_0") 205 test_utils.edit_widget_props("ID_TEMPLATE", 1) 206 207 test_utils.select_project_tree_node("base_0") 208 test_utils.add_widget('GX_TYPE_TEXT_BUTTON') 209 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_RAISED) 210 test_utils.edit_widget_props("ID_XPOS", 293) 211 test_utils.edit_widget_props("ID_YPOS", 31) 212 test_utils.edit_widget_props("ID_WIDTH", 279) 213 test_utils.edit_widget_props("ID_HEIGHT", 151) 214 test_utils.edit_widget_props("ID_FONT_SELECT_0", "NORMAL_FONT") 215 test_utils.edit_widget_props("ID_NORMAL_COLOR", "green") 216 test_utils.edit_widget_props("ID_SELECTED_COLOR", "red") 217 test_utils.edit_widget_props("ID_STRING_ID", "TEST_STRING_ID_1") 218 219 test_utils.select_project_tree_node(source_folder_1) 220 test_utils.add_template("base_0") 221 test_utils.edit_widget_props("ID_WIDGET_NAME","base_1") 222 test_utils.edit_widget_props("ID_TEMPLATE", 1) 223 224 test_utils.select_project_tree_node("base_1") 225 test_utils.add_widget('GX_TYPE_TEXT_BUTTON') 226 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_RAISED) 227 test_utils.edit_widget_props("ID_XPOS", 288) 228 test_utils.edit_widget_props("ID_YPOS", 235) 229 test_utils.edit_widget_props("ID_WIDTH", 304) 230 test_utils.edit_widget_props("ID_HEIGHT", 178) 231 test_utils.edit_widget_props("ID_FONT_SELECT_0", "MIDDLE_FONT") 232 test_utils.edit_widget_props("ID_STRING_ID", "TEST_STRING_ID_2") 233 234 test_utils.select_project_tree_node(source_folder_1) 235 test_utils.add_template("base_1") 236 test_utils.edit_widget_props("ID_WIDGET_NAME","derived_1") 237 238 test_utils.select_project_tree_node(source_folder_1) 239 test_utils.add_template("base_1") 240 test_utils.edit_widget_props("ID_WIDGET_NAME","derived_2") 241 242def edit_source_display_2(): 243 #---------------------------------------# 244 #edit display 2 # 245 #---------------------------------------# 246 247 test_utils.select_project_tree_node(source_folder_2) 248 test_utils.add_widget('GX_TYPE_WINDOW') 249 test_utils.edit_widget_props("ID_XPOS", 160) 250 test_utils.edit_widget_props("ID_YPOS", 120) 251 test_utils.edit_widget_props("ID_WIDTH", 320) 252 test_utils.edit_widget_props("ID_HEIGHT", 240) 253 test_utils.add_widget('GX_TYPE_BUTTON') 254 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_RAISED) 255 256def edit_target_display_1(): 257 import_project_name = os.path.abspath(test_utils.DEFAULT_OUTPUT_FILE_PATH) + '\\test_project_import_source.gxp' 258 test_utils.select_project_tree_node(display_1_name) 259 test_utils.select_project_tree_node(target_folder_1) 260 test_utils.import_project(import_project_name) 261 test_utils.save_project_import_dialog(test_utils.CLOSE_NO_WAIT) 262 test_utils.select_option(0) 263 test_utils.select_option(1) 264 test_utils.wait_dialog_close('IMPORT_PROJECT_DIALOG') 265 test_utils.select_project_tree_node("base") 266 test_utils.compare_result() 267 test_utils.select_project_tree_node("base_0") 268 test_utils.compare_result() 269 test_utils.select_project_tree_node("base_1") 270 test_utils.compare_result() 271 test_utils.select_project_tree_node("derived_1") 272 test_utils.compare_result() 273 test_utils.select_project_tree_node("derived_2") 274 test_utils.compare_result() 275 276 test_utils.select_project_tree_node(target_folder_1) 277 test_utils.import_project(import_project_name) 278 test_utils.check_import_screen("main_display", "base", 0) 279 test_utils.check_import_screen("main_display", "base_0", 0) 280 test_utils.check_import_screen("main_display", "base_1", 0) 281 test_utils.check_import_screen("main_display", "derived_1", 0) 282 test_utils.save_project_import_dialog(test_utils.CLOSE_NO_WAIT) 283 test_utils.select_option(2) 284 test_utils.wait_dialog_close('IMPORT_PROJECT_DIALOG') 285 286 # select window to make sure the import is success and screenshot will not be changed if studio is changed. 287 test_utils.select_project_tree_node('window_1') 288 test_utils.compare_result() 289 290def edit_target_display_2(): 291 import_project_name = os.path.abspath(test_utils.DEFAULT_OUTPUT_FILE_PATH) + '\\test_project_import_source.gxp' 292 test_utils.select_project_tree_node(target_folder_2) 293 test_utils.import_project(import_project_name) 294 test_utils.check_import_screen("main_display", "base", 0) 295 test_utils.check_import_screen("main_display", "base_0", 0) 296 test_utils.check_import_screen("main_display", "base_1", 0) 297 test_utils.check_import_screen("main_display", "derived_1", 0) 298 test_utils.save_project_import_dialog() 299 300 # select window to make sure the import is success and screenshot will not be changed if studio is changed. 301 test_utils.select_project_tree_node('window_1') 302 test_utils.compare_result() 303 304def test_compile_imported_output(): 305 # create a new project 306 test_utils.toolbar_create() 307 test_utils.set_new_project_path(test_utils.DEFAULT_OUTPUT_FILE_PATH) 308 test_utils.set_new_project_name("test_compile_imported_output") 309 test_utils.save_new_project_create() 310 311 # configure project 312 test_utils.configure_project() 313 test_utils.configure_display_num(1) 314 test_utils.select_display_index(1) 315 test_utils.configure_x_res(640) 316 test_utils.configure_y_res(480) 317 test_utils.configure_display_name(display_1_name) 318 test_utils.save_project_configure() 319 320 # create folder 321 test_utils.close_message_dialog() 322 test_utils.select_project_tree_node("window") 323 test_utils.delete_widget(0) 324 325 test_utils.select_project_tree_node("default_folder") 326 test_utils.add_widget('GX_TYPE_WINDOW') 327 test_utils.edit_widget_props("ID_XPOS", 0) 328 test_utils.edit_widget_props("ID_YPOS", 0) 329 test_utils.edit_widget_props("ID_WIDTH", 320) 330 test_utils.edit_widget_props("ID_HEIGHT", 240) 331 test_utils.select_project_tree_node("default_folder") 332 test_utils.add_widget('GX_TYPE_WINDOW') 333 test_utils.edit_widget_props("ID_XPOS", 160) 334 test_utils.edit_widget_props("ID_YPOS", 120) 335 test_utils.edit_widget_props("ID_WIDTH", 320) 336 test_utils.edit_widget_props("ID_HEIGHT", 240) 337 test_utils.edit_widget_props("ID_WIDGET_NAME","window_2") 338 test_utils.toolbar_save() 339 340 import_project_name = os.path.abspath(test_utils.DEFAULT_OUTPUT_FILE_PATH) + "\\test_compile_imported_output.gxp" 341 test_utils.select_project_tree_node("default_folder") 342 test_utils.import_project(import_project_name) 343 test_utils.save_project_import_dialog() 344 test_utils.toolbar_save() 345 test_utils.generate_all() 346 test_utils.click_generate_button() 347 test_utils.cmp_output_files(project_import_output_files_test2) 348 349 350def run_project_import_tests(generate, screenshot): 351 test_utils.output_test_header(get_test_header()) 352 test_utils.setup(generate, screenshot, 'test_project_import_golden_file') 353 354 print('create source project') 355 run_new_project_create("test_project_import_source") 356 add_source_colors() 357 add_source_strings() 358 359 edit_source_display_1() 360 edit_source_display_2() 361 362 test_utils.toolbar_save() 363 364 print('create target project') 365 run_new_project_create("test_project_import_target") 366 add_target_colors() 367 add_target_strings() 368 369 #just to help with testing 370 test_utils.toolbar_save(); 371 372 edit_target_display_1() 373 edit_target_display_2() 374 375 #test undo project import 376 test_utils.undo() 377 test_utils.undo() 378 379 #test if template info is deleted when delete a folder 380 test_utils.select_project_tree_node("target_folder_1") 381 test_utils.delete_folder(0) 382 test_utils.select_project_tree_node("target_folder_2") 383 test_utils.undo() 384 385 test_utils.toolbar_save() 386 test_utils.generate_all() 387 test_utils.click_generate_button() 388 test_utils.cmp_output_files(project_import_output_files_test1) 389 390 #test of compile the output after import: test bug fixed in revistion 12591 391 test_compile_imported_output() 392 393 test_utils.write_end('Project Import Tests')