1import os 2import sys 3import time 4import test_utils 5import test_constants 6import logging 7 8test_template_output_files = [ 9"template_resources.c", 10"template_resources.h", 11"template_specifications.c", 12"template_specifications.h"] 13 14def get_test_header(): 15 notes = "* Studio Template Tests *\n" 16 notes += "* *\n" 17 notes += "* Test add template *\n" 18 notes += "* Test delete template *\n" 19 notes += "* Test edit template *\n" 20 return notes 21 22def run_template_delete(): 23 #delete template that is referenced that other widgets 24 test_utils.select_project_tree_node('base') 25 test_utils.post_delete_widget() 26 test_utils.close_message_dialog()# This template cannot be deleted until all references are first removed. 27 28 #delete template that is not reference 29 test_utils.select_project_tree_node('base_0') 30 test_utils.delete_widget(0) 31 32 test_utils.select_project_tree_node('child_temlate_screen') 33 test_utils.compare_result() 34 35 test_utils.select_project_tree_node('template_screen') 36 test_utils.compare_result() 37 38def run_template_add(): 39 40 #add widget "test_base" and set it as template 41 test_utils.select_project_tree_node("default_folder") 42 test_utils.add_widget('GX_TYPE_WINDOW') 43 test_utils.edit_widget_props("ID_XPOS", 0) 44 test_utils.edit_widget_props("ID_YPOS", 0) 45 test_utils.edit_widget_props("ID_WIDTH", 640) 46 test_utils.edit_widget_props("ID_HEIGHT", 480) 47 test_utils.edit_widget_props("ID_WIDGET_NAME","test_base") 48 test_utils.edit_widget_props("ID_TEMPLATE", 1) 49 50 #add widget "test_base_derived_0" based on "test_base" 51 test_utils.select_project_tree_node("default_folder") 52 test_utils.add_template("test_base") 53 test_utils.edit_widget_props("ID_WIDGET_NAME","test_base_derived_0") 54 test_utils.compare_result() 55 56 #add a child to "test_base" 57 test_utils.select_project_tree_node("test_base") 58 test_utils.add_widget('GX_TYPE_WINDOW') 59 test_utils.edit_widget_props("ID_WIDGET_NAME","test_base_child") 60 test_utils.compare_result() 61 62 #set "test_base_derived_0" as template 63 #add a child to it 64 test_utils.select_project_tree_node("test_base_derived_0") 65 test_utils.edit_widget_props("ID_TEMPLATE", 1) 66 test_utils.add_widget('GX_TYPE_WINDOW') 67 test_utils.edit_widget_props("ID_WIDGET_NAME","test_base_derived_0_child") 68 test_utils.compare_result() 69 70 #add widget "test_base_derived_1" based on "test_base_derived_0" 71 #set it as template 72 #add a child 73 test_utils.select_project_tree_node("default_folder") 74 test_utils.add_template("test_base_derived_0") 75 test_utils.edit_widget_props("ID_WIDGET_NAME","test_base_derived_1") 76 test_utils.edit_widget_props("ID_TEMPLATE", 1) 77 test_utils.add_widget('GX_TYPE_WINDOW') 78 test_utils.edit_widget_props("ID_WIDGET_NAME","test_base_derived_1_child") 79 test_utils.compare_result() 80 81 #delete "test_base_derived_1" 82 test_utils.select_project_tree_node("test_base_derived_1") 83 test_utils.delete_widget() 84 85 #delete "test_base_derived_0" 86 test_utils.select_project_tree_node("test_base_derived_0") 87 test_utils.delete_widget() 88 89 test_utils.select_project_tree_node("test_base") 90 test_utils.compare_result() 91 92 #undo delete "test_base_derived_0" 93 test_utils.undo() 94 95 #add widget "test_base_derived_3" based on "test_base" 96 test_utils.select_project_tree_node("default_folder") 97 test_utils.add_template("test_base") 98 test_utils.edit_widget_props("ID_WIDGET_NAME","test_base_derived_3") 99 100 #add a child widget to template "test_base" 101 test_utils.select_project_tree_node("test_base") 102 test_utils.select_project_tree_node("test_base_child") 103 test_utils.move_selected(20) 104 test_utils.select_project_tree_node("test_base_derived_3") 105 test_utils.compare_result() 106 107 #add "radial_progress_bar" template 108 test_utils.select_project_tree_node("default_folder") 109 test_utils.add_widget('GX_TYPE_RADIAL_PROGRESS_BAR') 110 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_radial_progress_bar') 111 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_XCENTER", 50) 112 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_YCENTER", 50) 113 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_RADIUS", 50) 114 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_ANCHORVAL", 60) 115 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_CURRENTVAL", -200) 116 test_utils.edit_widget_props("ID_NORMAL_TEXT_COLOR", "red") 117 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_NORMAL_BRUSH_COLOR", "green") 118 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_SELECTED_BRUSH_COLOR", "red") 119 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_NORMAL_BRUSH_WIDTH", 18) 120 test_utils.edit_widget_props("ID_RADIAL_PROGRESS_SELECTED_BRUSH_WIDTH", 16) 121 test_utils.edit_widget_props("ID_TEMPLATE", 1) 122 123 # add "icon" template 124 test_utils.select_project_tree_node("default_folder") 125 test_utils.add_widget('GX_TYPE_ICON') 126 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_icon') 127 test_utils.edit_widget_props("ID_PIXELMAP_0", "CHECKBOX_OFF") 128 test_utils.edit_widget_props("ID_TEMPLATE", 1) 129 130 # add "pixelmap_button" template 131 test_utils.select_project_tree_node("default_folder") 132 test_utils.add_widget('GX_TYPE_PIXELMAP_BUTTON') 133 test_utils.edit_widget_props("ID_PIXELMAP_0", "ORANGE_BUTTON") 134 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_pixelmap_button') 135 test_utils.edit_widget_props("ID_TEMPLATE", 1) 136 test_utils.toolbar_size_to_fit() 137 138 # add "prompt" template 139 test_utils.select_project_tree_node("default_folder") 140 test_utils.add_widget('GX_TYPE_PROMPT') 141 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_prompt') 142 test_utils.edit_widget_props("ID_TEMPLATE", 1) 143 144 # add "numeric_pixelmap_prompt" template 145 test_utils.select_project_tree_node("default_folder") 146 test_utils.add_widget('GX_TYPE_NUMERIC_PIXELMAP_PROMPT') 147 test_utils.edit_widget_props("ID_PIXELMAP_0", "ORANGE_BUTTON") 148 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_numeric_pixelmap_prompt') 149 test_utils.edit_widget_props("ID_TEMPLATE", 1) 150 test_utils.toolbar_size_to_fit() 151 152 # add "ml_text_view" template 153 test_utils.select_project_tree_node("default_folder") 154 test_utils.add_widget('GX_TYPE_MULTI_LINE_TEXT_VIEW') 155 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_ml_text_view') 156 test_utils.edit_widget_props("ID_TEMPLATE", 1) 157 158 # add "rich_text_view" template 159 test_utils.select_project_tree_node("default_folder") 160 test_utils.add_widget('GX_TYPE_RICH_TEXT_VIEW') 161 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_rich_text_view') 162 test_utils.edit_widget_props("ID_TEMPLATE", 1) 163 164 # add "pixelmap_slider" template 165 test_utils.select_project_tree_node("default_folder") 166 test_utils.add_widget('GX_TYPE_PIXELMAP_SLIDER') 167 test_utils.edit_widget_props("ID_WIDTH", 195) 168 test_utils.edit_widget_props("ID_HEIGHT", 46) 169 test_utils.edit_widget_props("ID_PIXELMAP_0", "I_ORANGEFILL_MIDDLE_HORIZONTAL") 170 test_utils.edit_widget_props("ID_PIXELMAP_1", "I_EMPTYFILL_MIDDLE_HORIZONTAL") 171 test_utils.edit_widget_props("ID_PIXELMAP_2", "I_INDICATOR_HORIZONTAL") 172 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_pixelmap_slider') 173 test_utils.edit_widget_props("ID_SLIDER_TILE_BKGND", 1) 174 test_utils.edit_widget_props("ID_TEMPLATE", 1) 175 176 # add "radial_slider" template 177 test_utils.select_project_tree_node("default_folder") 178 test_utils.add_widget('GX_TYPE_RADIAL_SLIDER') 179 test_utils.edit_widget_props("ID_PIXELMAP_0", "BG_WASHER_ON") 180 test_utils.edit_widget_props("ID_PIXELMAP_1", "I_INDICATOR_HORIZONTAL") 181 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_radial_slider') 182 test_utils.edit_widget_props("ID_TEMPLATE", 1) 183 test_utils.toolbar_size_to_fit() 184 185 # add "sprite" template 186 test_utils.select_project_tree_node("default_folder") 187 test_utils.add_widget('GX_TYPE_SPRITE') 188 test_utils.edit_widget_props("ID_PIXELMAP_0", "SPRITE") 189 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_sprite') 190 test_utils.edit_widget_props("ID_TEMPLATE", 1) 191 test_utils.toolbar_size_to_fit() 192 193 # add "accordion" template 194 test_utils.select_project_tree_node("default_folder") 195 test_utils.add_widget('GX_TYPE_ACCORDION_MENU') 196 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_accordion') 197 test_utils.edit_widget_props("ID_TEMPLATE", 1) 198 test_utils.add_widget('GX_TYPE_MENU') 199 test_utils.select_project_tree_node('base_accordion') 200 test_utils.add_widget('GX_TYPE_MENU') 201 test_utils.select_project_tree_node('base_accordion') 202 test_utils.add_widget('GX_TYPE_MENU') 203 204 # add "tree_view" template 205 test_utils.select_project_tree_node("default_folder") 206 test_utils.add_widget('GX_TYPE_TREE_VIEW') 207 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_tree_view') 208 test_utils.edit_widget_props("ID_TEMPLATE", 1) 209 test_utils.add_widget('GX_TYPE_MENU') 210 test_utils.edit_widget_props("ID_WIDGET_NAME", 'base_tree_view_menu_1') 211 test_utils.select_project_tree_node('base_tree_view') 212 test_utils.add_widget('GX_TYPE_MENU') 213 test_utils.select_project_tree_node('base_tree_view') 214 test_utils.add_widget('GX_TYPE_MENU') 215 test_utils.select_project_tree_node('base_tree_view_menu_1') 216 test_utils.add_widget('GX_TYPE_MENU') 217 218 test_utils.select_project_tree_node("default_folder") 219 test_utils.add_widget("GX_TYPE_WINDOW") 220 test_utils.edit_widget_props("ID_WIDGET_NAME", 'widget_template_container') 221 222 # derive widget based on "icon" template 223 test_utils.add_template('base_icon') 224 test_utils.edit_widget_props("ID_XPOS", 28) 225 test_utils.edit_widget_props("ID_YPOS", 15) 226 227 # derive widget based on "pixelmap_button" template 228 test_utils.select_project_tree_node('widget_template_container') 229 test_utils.add_template('base_pixelmap_button') 230 test_utils.edit_widget_props("ID_XPOS", 80) 231 test_utils.edit_widget_props("ID_YPOS", 8) 232 233 # derive widget based on "pixelmap_slider" template 234 test_utils.select_project_tree_node('widget_template_container') 235 test_utils.add_template('base_pixelmap_slider') 236 test_utils.edit_widget_props("ID_XPOS", 260) 237 test_utils.edit_widget_props("ID_YPOS", 14) 238 239 # derive widget based on "prompt" template 240 test_utils.select_project_tree_node('widget_template_container') 241 test_utils.add_template('base_prompt') 242 test_utils.edit_widget_props("ID_XPOS", 502) 243 test_utils.edit_widget_props("ID_YPOS", 31) 244 245 # derive widget based on "numeric_pixelmap_prompt" template 246 test_utils.select_project_tree_node('widget_template_container') 247 test_utils.add_template('base_numeric_pixelmap_prompt') 248 test_utils.edit_widget_props("ID_XPOS", 7) 249 test_utils.edit_widget_props("ID_YPOS", 38) 250 251 # derive widget based on "radial_slider" template 252 test_utils.select_project_tree_node('widget_template_container') 253 test_utils.add_template('base_radial_slider') 254 test_utils.edit_widget_props("ID_XPOS", 18) 255 test_utils.edit_widget_props("ID_YPOS", 98) 256 257 # derive widget based on "rich_text_view" template 258 test_utils.select_project_tree_node('widget_template_container') 259 test_utils.add_template('base_rich_text_view') 260 test_utils.edit_widget_props("ID_XPOS", 316) 261 test_utils.edit_widget_props("ID_YPOS", 65) 262 263 # derive widget based on "sprite" template 264 test_utils.select_project_tree_node('widget_template_container') 265 test_utils.add_template('base_sprite') 266 test_utils.edit_widget_props("ID_XPOS", 18) 267 test_utils.edit_widget_props("ID_YPOS", 382) 268 269 270 # derive widget based on "text_view" template 271 test_utils.select_project_tree_node('widget_template_container') 272 test_utils.add_template('base_ml_text_view') 273 test_utils.edit_widget_props("ID_XPOS", 419) 274 test_utils.edit_widget_props("ID_YPOS", 149) 275 276 # derive widget based on "tree_view" template 277 test_utils.select_project_tree_node('widget_template_container') 278 test_utils.add_template('base_tree_view') 279 test_utils.edit_widget_props("ID_XPOS", 142) 280 test_utils.edit_widget_props("ID_YPOS", 397) 281 282 # derive widget based on "accordion" template 283 test_utils.select_project_tree_node('widget_template_container') 284 test_utils.add_template('base_accordion') 285 test_utils.edit_widget_props("ID_XPOS", 455) 286 test_utils.edit_widget_props("ID_YPOS", 263) 287 288 # derive widget based on "radial_progress_bar" template 289 test_utils.select_project_tree_node('widget_template_container') 290 test_utils.add_template('base_radial_progress_bar') 291 test_utils.edit_widget_props("ID_XPOS", 209) 292 test_utils.edit_widget_props("ID_YPOS", 129) 293 294 test_utils.compare_result() 295 296def run_template_edit(): 297 #Test template when color depth changed 298 test_utils.select_project_tree_node("base") 299 test_utils.add_widget('GX_TYPE_PROMPT') 300 test_utils.edit_widget_props("ID_WIDGET_NAME","child_prompt") 301 test_utils.edit_widget_props("ID_XPOS", 327) 302 test_utils.edit_widget_props("ID_YPOS", 207) 303 test_utils.edit_widget_props("ID_WIDTH", 308) 304 test_utils.edit_widget_props("ID_HEIGHT", 34) 305 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_THIN) 306 test_utils.edit_widget_props("ID_TRANSPARENT", 1) 307 test_utils.edit_widget_props("ID_STRING_VAL", "transparent prompt with thin border") 308 test_utils.configure_project() 309 test_utils.configure_display_color_format('GX_COLOR_FORMAT_8BIT_PALETTE') 310 test_utils.save_project_configure() 311 test_utils.move_window(10) 312 test_utils.move_window(-10) 313 314 #test resize template 315 #test transparent template 316 test_utils.select_project_tree_node("base") 317 test_utils.edit_widget_props("ID_TRANSPARENT", 1) 318 test_utils.edit_widget_props("ID_WIDTH", 446) 319 test_utils.compare_result() 320 321 test_utils.select_project_tree_node("child_template_screen") 322 test_utils.compare_result() 323 324def run_derived_widget_update(): 325 test_utils.open_project('template.gxp') 326 327 test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'black_pause.png') 328 test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'save_icon.png') 329 330 # open font folder 331 test_utils.click_resource_group('FONT_GROUP') 332 333 # add font Vera.ttf 334 test_utils.add_font() 335 test_utils.set_font_path('..\\fonts\\Vera.ttf') 336 test_utils.set_font_name('TEST_FONT_1') 337 test_utils.save_font_edit() 338 339 # add font VeraBd.ttf 340 test_utils.add_font() 341 test_utils.set_font_path('..\\fonts\\VeraBd.ttf') 342 test_utils.set_font_name('TEST_FONT_2') 343 test_utils.save_font_edit() 344 345 test_utils.click_resource_group('FONT_GROUP') 346 347 test_utils.edit_string() 348 test_utils.sort_string(test_constants.STRING_SORT_TYPE_ID) 349 test_utils.add_string() 350 test_utils.edit_string_id('STRING_1') 351 test_utils.edit_top_string('string 1') 352 353 test_utils.add_string() 354 test_utils.edit_string_id('STRING_2') 355 test_utils.edit_top_string('string 2') 356 357 test_utils.save_string_edit() 358 359 # open color group folder 360 test_utils.click_resource_group('COLOR_GROUP') 361 362 # add a new color 363 test_utils.add_color() 364 test_utils.set_color_name('COLOR_1') 365 test_utils.set_color_red(255) 366 test_utils.save_color_edit() 367 368 # add a new color 369 test_utils.add_color() 370 test_utils.set_color_name('COLOR_2') 371 test_utils.set_color_green(255) 372 test_utils.save_color_edit() 373 374 test_utils.click_resource_group('COLOR_GROUP') 375 376 test_utils.select_project_tree_node("base") 377 test_utils.edit_widget_props("ID_PIXELMAP_0", "BLACK_PAUSE") 378 test_utils.edit_widget_props("ID_NORMAL_COLOR", "COLOR_1") 379 380 test_utils.add_widget('GX_TYPE_PROMPT') 381 test_utils.edit_widget_props("ID_FONT_SELECT_0", "TEST_FONT_1") 382 383 test_utils.select_project_tree_node('base') 384 test_utils.add_widget("GX_TYPE_PROMPT") 385 test_utils.edit_widget_props("ID_XPOS", 116) 386 test_utils.edit_widget_props("ID_STRING_ID", 'STRING_1') 387 388 test_utils.select_project_tree_node("child_template_screen"); 389 test_utils.compare_result() 390 391 test_utils.delete_pixelmap("BLACK_PAUSE") 392 test_utils.compare_result() 393 394 test_utils.click_resource_group('FONT_GROUP') 395 test_utils.delete_font("TEST_FONT_1") 396 test_utils.click_resource_group('FONT_GROUP') 397 test_utils.compare_result() 398 399 test_utils.click_resource_group('COLOR_GROUP') 400 test_utils.delete_color('COLOR_1') 401 test_utils.click_resource_group('COLOR_GROUP') 402 test_utils.compare_result() 403 404 test_utils.edit_string() 405 test_utils.select_string(1) 406 test_utils.delete_string() 407 test_utils.save_string_edit() 408 test_utils.compare_result() 409 410 test_utils.edit_string() 411 test_utils.select_string(0) 412 test_utils.delete_string() 413 test_utils.save_string_edit() 414 test_utils.compare_result() 415 416def run_template_name_test(): 417 test_utils.select_project_tree_node("folder_1_window") 418 test_utils.compare_result() 419 420def run_template_tests(generate, screenshot): 421 422 test_utils.output_test_header(get_test_header()) 423 test_utils.setup(generate, screenshot, 'test_template_golden_file') 424 425 # open test project 426 test_utils.open_project('template.gxp') 427 428 print("run template delete") 429 run_template_delete() 430 431 print("run_template_add") 432 run_template_add() 433 434 print("run template edit") 435 run_template_edit() 436 437 print("run template name test") 438 run_template_name_test() 439 440 test_utils.generate_all() 441 test_utils.click_generate_button(1) 442 test_utils.cmp_output_files(test_template_output_files) 443 444 print("run derived widget update") 445 run_derived_widget_update() 446 447 test_utils.write_end("Test Tempalte") 448 449 450