1# -*- coding: utf-8 -*- 2import os 3import sys 4import time 5import test_utils 6import test_constants 7import filecmp 8 9display_name = "main_display" 10folder_name = "default_folder" 11screen_name = "main_screen" 12 13def get_test_header(): 14 notes = "* Menu Widget Test *\n" 15 notes += "* *\n" 16 notes += "* Add and Edit Accordion Menu *\n" 17 notes += "* Add and Edit Tree View *\n" 18 return notes 19 20def run_new_project_create(project_name): 21 22 # create a new project 23 test_utils.toolbar_create() 24 test_utils.set_new_project_path(test_utils.DEFAULT_OUTPUT_FILE_PATH) 25 test_utils.set_new_project_name(project_name) 26 test_utils.save_new_project_create() 27 28 # configure project 29 test_utils.configure_project() 30 test_utils.configure_x_res(640) 31 test_utils.configure_y_res(480) 32 test_utils.configure_display_name(display_name) 33 test_utils.save_project_configure() 34 35 # add normal font 36 # open font folder 37 test_utils.click_resource_group('FONT_GROUP') 38 39 test_utils.add_font() 40 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 41 test_utils.set_font_name('NORMAL_FONT') 42 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 43 test_utils.set_font_height(28) 44 test_utils.save_font_edit() 45 46 # add selected font 47 test_utils.add_font() 48 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 49 test_utils.set_font_name('SELECTED_FONT') 50 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 51 test_utils.set_font_height(30) 52 test_utils.save_font_edit() 53 54 # cloce font folder 55 test_utils.click_resource_group('FONT_GROUP') 56 57 test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'tfield_fill_small.png') 58 test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'collapse.png') 59 test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'expand.png') 60 61 # close message dialog when create new project 62 test_utils.close_message_dialog() 63 64 65def add_main_screen(): 66 #---------------------------------------# 67 #add main screen to display # 68 #---------------------------------------# 69 70 test_utils.select_project_tree_node("window") 71 72 test_utils.edit_widget_props("ID_XPOS", 0) 73 test_utils.edit_widget_props("ID_YPOS", 0) 74 test_utils.edit_widget_props("ID_WIDTH", 640) 75 test_utils.edit_widget_props("ID_HEIGHT", 480) 76 test_utils.edit_widget_props("ID_WIDGET_NAME", screen_name) 77 78 79def add_edit_accordion_menu_widget(): 80 #---------------------------------------# 81 #add and edit numeric scroll wheel # 82 #---------------------------------------# 83 test_utils.select_project_tree_node(screen_name) 84 test_utils.add_widget('GX_TYPE_ACCORDION_MENU') 85 accordion_menu_name = "accordion" 86 accordion_menu_1 = "accordion_menu_1" 87 accordion_menu_2 = "accordion_menu_2" 88 accordion_menu_3 = "accordion_menu_3" 89 accordion_menu_4 = "accordion_menu_4" 90 accordion_menu_5 = "accordion_menu_5" 91 92 test_utils.edit_widget_props("ID_XPOS", 29) 93 test_utils.edit_widget_props("ID_YPOS", 30) 94 test_utils.edit_widget_props("ID_WIDTH", 176) 95 test_utils.edit_widget_props("ID_HEIGHT", 138) 96 test_utils.edit_widget_props("ID_WIDGET_NAME", accordion_menu_name) 97 test_utils.compare_result() 98 99 #add 5 menus 100 test_utils.select_project_tree_node(accordion_menu_name) 101 test_utils.add_widget('GX_TYPE_MENU') 102 test_utils.edit_widget_props("ID_WIDGET_NAME", accordion_menu_1) 103 test_utils.edit_widget_props("ID_STRING_VAL", "menu 1") 104 test_utils.edit_widget_props("ID_MENU_TEXT_X_OFFSET", "15") 105 test_utils.edit_widget_props("ID_MENU_TEXT_Y_OFFSET", "5") 106 test_utils.compare_result() 107 test_utils.undo() 108 test_utils.undo() 109 test_utils.compare_result() 110 test_utils.select_project_tree_node(accordion_menu_name) 111 test_utils.add_widget('GX_TYPE_MENU') 112 test_utils.edit_widget_props("ID_WIDGET_NAME", accordion_menu_2) 113 test_utils.edit_widget_props("ID_STRING_VAL", "menu 2") 114 test_utils.select_project_tree_node(accordion_menu_name) 115 test_utils.add_widget('GX_TYPE_MENU') 116 test_utils.edit_widget_props("ID_WIDGET_NAME", accordion_menu_3) 117 test_utils.edit_widget_props("ID_STRING_VAL", "menu 3") 118 test_utils.select_project_tree_node(accordion_menu_name) 119 test_utils.add_widget('GX_TYPE_TEXT_BUTTON') 120 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_RAISED) 121 test_utils.edit_widget_props("ID_WIDGET_NAME", accordion_menu_4) 122 test_utils.edit_widget_props("ID_STRING_VAL", "menu 4") 123 test_utils.select_project_tree_node(accordion_menu_name) 124 test_utils.add_widget('GX_TYPE_MENU') 125 test_utils.edit_widget_props("ID_WIDGET_NAME", accordion_menu_5) 126 test_utils.edit_widget_props("ID_STRING_VAL", "menu 5") 127 test_utils.compare_result() 128 129 #remove menu 3 130 test_utils.select_project_tree_node(accordion_menu_3) 131 test_utils.delete_widget() 132 test_utils.compare_result() 133 134 #set fill pixelmap for menu 1 135 test_utils.select_project_tree_node(accordion_menu_1) 136 test_utils.edit_widget_props("ID_PIXELMAP_1", test_constants.PIXELMAP_FILL) 137 test_utils.toolbar_size_to_fit() 138 test_utils.compare_result() 139 140 #set new size for menu 2 141 test_utils.select_project_tree_node(accordion_menu_2) 142 test_utils.edit_widget_props_post("ID_XPOS", 20)#not allowed 143 test_utils.close_message_dialog() 144 test_utils.edit_widget_props_post("ID_YPOS", 20)#not allowed 145 test_utils.close_message_dialog() 146 test_utils.edit_widget_props_post("ID_WIDTH", 40)#not allowed 147 test_utils.close_message_dialog() 148 test_utils.edit_widget_props("ID_HEIGHT", 40) 149 test_utils.compare_result() 150 151 #insert menu item for menu 1 152 test_utils.select_project_tree_node(accordion_menu_1) 153 test_utils.add_widget("GX_TYPE_PROMPT") 154 test_utils.edit_widget_props("ID_WIDGET_NAME", "accordion_menu_1_item_1") 155 test_utils.edit_widget_props_post("ID_XPOS", 20)#not allowed 156 test_utils.close_message_dialog() 157 test_utils.edit_widget_props_post("ID_YPOS", 20)#not allowed 158 test_utils.close_message_dialog() 159 test_utils.edit_widget_props("ID_WIDTH", 174) 160 test_utils.edit_widget_props("ID_HEIGHT", 46) 161 test_utils.compare_result() 162 163 test_utils.select_project_tree_node(accordion_menu_1) 164 test_utils.add_widget("GX_TYPE_MENU") 165 test_utils.edit_widget_props("ID_WIDTH", 174) 166 test_utils.edit_widget_props("ID_HEIGHT", 34) 167 test_utils.edit_widget_props("ID_WIDGET_NAME", "accordion_menu_1_item_2") 168 test_utils.compare_result() 169 170 test_utils.select_project_tree_node(accordion_menu_1) 171 test_utils.edit_widget_props("ID_MENU_EXPANDED", 0)#remove menu expanded style 172 test_utils.edit_widget_props("ID_MENU_INSERT_MODE", 0) 173 test_utils.add_widget("GX_TYPE_PROMPT") 174 test_utils.compare_result() 175 176 #undo widget add 177 test_utils.undo() 178 #test_utils.undo() 179 180 #undo insert mode change 181 test_utils.undo() 182 183 #undo expand style change 184 test_utils.undo() 185 186 test_utils.compare_result() 187 188 test_utils.select_project_tree_node(accordion_menu_1) 189 #remove menu expanded style 190 test_utils.edit_widget_props("ID_MENU_EXPANDED", 0) 191 test_utils.compare_result() 192 193 #remove menu 1 item 2 194 test_utils.select_project_tree_node("accordion_menu_1_item_2") 195 test_utils.delete_widget() 196 test_utils.compare_result() 197 198 #undo delete 199 test_utils.undo() 200 201 #insert an accordion menu to menu 4 202 test_utils.select_project_tree_node(accordion_menu_2) 203 test_utils.add_widget('GX_TYPE_ACCORDION_MENU') 204 test_utils.edit_widget_props("ID_WIDTH", 174) 205 test_utils.edit_widget_props("ID_HEIGHT", 34) 206 test_utils.edit_widget_props("ID_WIDGET_NAME", "accordion_2") 207 208 #insert a menu to accordion 2 209 test_utils.add_widget("GX_TYPE_MENU") 210 211 #insert a text view to the menu 212 test_utils.add_widget("GX_TYPE_MULTI_LINE_TEXT_VIEW") 213 test_utils.edit_widget_props("ID_WIDTH", 174) 214 test_utils.edit_widget_props("ID_HEIGHT", 69) 215 test_utils.compare_result() 216 217 #select accordion 2 218 test_utils.select_project_tree_node("accordion_2") 219 220 #insert a menu to accordion 2 221 test_utils.add_widget("GX_TYPE_MENU") 222 223 #insert a text view to the menu 224 test_utils.add_widget("GX_TYPE_MULTI_LINE_TEXT_VIEW") 225 test_utils.edit_widget_props("ID_WIDTH", 174) 226 test_utils.edit_widget_props("ID_HEIGHT", 69) 227 test_utils.compare_result() 228 229 #test accordion menu copy paste 230 test_utils.select_project_tree_node(accordion_menu_name) 231 test_utils.toolbar_copy() 232 test_utils.select_project_tree_node(screen_name) 233 test_utils.toolbar_paste() 234 test_utils.compare_result() 235 236 test_utils.undo() 237 238 test_utils.select_project_tree_node("accordion_menu_1_item_1") 239 test_utils.compare_result() 240 241 242def add_edit_tree_view_widget(): 243 #---------------------------------------# 244 #add and edti tree view # 245 #---------------------------------------# 246 test_utils.select_project_tree_node(screen_name) 247 test_utils.add_widget('GX_TYPE_TREE_VIEW') 248 tree_view_name = "tree_view" 249 250 #edit tree view properties 251 test_utils.edit_widget_props("ID_XPOS", 260) 252 test_utils.edit_widget_props("ID_YPOS", 33) 253 test_utils.edit_widget_props("ID_WIDTH", 276) 254 test_utils.edit_widget_props("ID_HEIGHT", 335) 255 test_utils.edit_widget_props("ID_WIDGET_NAME", tree_view_name) 256 test_utils.edit_widget_props("ID_PIXELMAP_1", "EXPAND") 257 test_utils.edit_widget_props("ID_PIXELMAP_2", "COLLAPSE") 258 259 # insert 5 menus 260 test_utils.select_project_tree_node(tree_view_name) 261 test_utils.add_widget("GX_TYPE_MENU") 262 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_1") 263 test_utils.edit_widget_props("ID_STRING_VAL", "menu 1") 264 test_utils.select_project_tree_node(tree_view_name) 265 test_utils.add_widget("GX_TYPE_MENU") 266 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_2") 267 test_utils.edit_widget_props("ID_STRING_VAL", "menu 2") 268 test_utils.select_project_tree_node(tree_view_name) 269 test_utils.add_widget("GX_TYPE_MENU") 270 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_3") 271 test_utils.edit_widget_props("ID_STRING_VAL", "menu 3") 272 test_utils.select_project_tree_node(tree_view_name) 273 test_utils.add_widget("GX_TYPE_TEXT_BUTTON") 274 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_RAISED) 275 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_4") 276 test_utils.edit_widget_props("ID_STRING_VAL", "menu 4") 277 test_utils.select_project_tree_node(tree_view_name) 278 test_utils.add_widget("GX_TYPE_MENU") 279 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_5") 280 test_utils.edit_widget_props("ID_STRING_VAL", "menu 5") 281 test_utils.compare_result() 282 283 test_utils.select_project_tree_node(tree_view_name) 284 test_utils.edit_widget_props("ID_TREE_VIEW_INDENTATION", "10") 285 test_utils.compare_result() 286 test_utils.undo() 287 288 test_utils.select_project_tree_node(tree_view_name) 289 test_utils.edit_widget_props("ID_TREE_VIEW_SHOW_ROOT_LINES", 0) 290 test_utils.compare_result() 291 test_utils.undo() 292 test_utils.select_project_tree_node(tree_view_name) 293 test_utils.edit_widget_props("ID_TREE_VIEW_ROOT_LINE_COLOR", 'BTN_BORDER') 294 test_utils.compare_result() 295 test_utils.undo() 296 297 # insert menu item to menu 1 298 test_utils.select_project_tree_node("tree_menu_1") 299 test_utils.add_widget("GX_TYPE_MENU") 300 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_1_item_1") 301 test_utils.edit_widget_props("ID_STRING_VAL", "tree_menu_1_item_1") 302 test_utils.select_project_tree_node("tree_menu_1") 303 test_utils.add_widget("GX_TYPE_MENU") 304 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_1_item_2") 305 test_utils.edit_widget_props("ID_STRING_VAL", "tree_menu_1_item_2") 306 test_utils.add_widget("GX_TYPE_MENU") 307 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_1_item_2_1") 308 test_utils.edit_widget_props("ID_STRING_VAL", "tree_menu_1_item_2_1") 309 test_utils.add_widget("GX_TYPE_MENU") 310 test_utils.edit_widget_props("ID_WIDGET_NAME", "tree_menu_1_item_2_1_1") 311 test_utils.edit_widget_props("ID_STRING_VAL", "tree_menu_1_item_2_1_1") 312 test_utils.compare_result() 313 314 #insert menu item to menu 2 315 test_utils.select_project_tree_node("tree_menu_2") 316 test_utils.add_widget("GX_TYPE_PROMPT") 317 test_utils.select_project_tree_node("tree_menu_2") 318 test_utils.add_widget("GX_TYPE_BUTTON") 319 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_RAISED) 320 test_utils.edit_widget_props_post("ID_XPOS", 250)#not allowed 321 test_utils.close_message_dialog() 322 test_utils.edit_widget_props_post("ID_YPOS", 150)#not allowed 323 test_utils.close_message_dialog() 324 test_utils.edit_widget_props("ID_WIDTH", 206) 325 test_utils.edit_widget_props("ID_HEIGHT", 35) 326 test_utils.compare_result() 327 328 #insert menu item to menu 3 329 test_utils.select_project_tree_node("tree_menu_3") 330 test_utils.add_widget("GX_TYPE_MENU") 331 test_utils.add_widget("GX_TYPE_PROMPT") 332 test_utils.compare_result() 333 334 #delete menu 3 335 test_utils.select_project_tree_node("tree_menu_3") 336 test_utils.delete_widget() 337 test_utils.compare_result() 338 339 #undo delete 340 test_utils.undo() 341 342 #undo add 343 test_utils.undo() 344 test_utils.compare_result() 345 346 #resize tree view 347 test_utils.select_project_tree_node(tree_view_name) 348 test_utils.edit_widget_props("ID_WIDTH", 171) 349 test_utils.edit_widget_props("ID_HEIGHT", 240) 350 351 #add scroll bar 352 test_utils.select_project_tree_node(tree_view_name) 353 test_utils.add_widget("GX_TYPE_HORIZONTAL_SCROLL") 354 test_utils.select_project_tree_node(tree_view_name) 355 test_utils.add_widget("GX_TYPE_VERTICAL_SCROLL") 356 test_utils.compare_result() 357 358 #test copy paste 359 test_utils.select_project_tree_node(tree_view_name) 360 test_utils.toolbar_copy() 361 test_utils.select_project_tree_node(screen_name) 362 test_utils.toolbar_paste() 363 test_utils.compare_result() 364 test_utils.undo() 365 366 #collapse menu 1 367 test_utils.select_project_tree_node("tree_menu_1") 368 test_utils.edit_widget_props("ID_MENU_EXPANDED", 0) 369 test_utils.compare_result() 370 371 #collapse menu 2 372 test_utils.select_project_tree_node("tree_menu_2") 373 test_utils.edit_widget_props("ID_MENU_EXPANDED", 0) 374 test_utils.compare_result() 375 376 377def select_menu_item_that_is_not_expanded(): 378 # open test project 379 test_utils.open_project('all_widgets_execute.gxp') 380 381 test_utils.select_project_tree_node('tree_menu_2') 382 test_utils.edit_widget_props("ID_MENU_EXPANDED", 0) 383 test_utils.compare_result() 384 test_utils.select_project_tree_node('tree_menu_2_1') 385 test_utils.compare_result() 386 387 test_utils.select_project_tree_node('tree_menu_2') 388 test_utils.edit_widget_props("ID_MENU_EXPANDED", 0) 389 test_utils.compare_result() 390 test_utils.select_project_tree_node('tree_menu_2_1_1') 391 test_utils.compare_result() 392 393def run_menu_position(): 394 # open test project 395 test_utils.open_project('all_widgets_execute.gxp') 396 397 #delete accordion_menu 1.1 398 test_utils.select_project_tree_node('prompt_25_1') 399 test_utils.delete_widget() 400 401 test_utils.undo() 402 403 #delete accordion_menu 1.2 404 test_utils.select_project_tree_node('prompt_26_1') 405 test_utils.delete_widget() 406 407 #delete tree view menu 2.1.1 408 test_utils.select_project_tree_node('tree_menu_2_1_1') 409 test_utils.delete_widget() 410 411 #delete tree view menu 2.1.2 412 test_utils.select_project_tree_node('tree_menu_2_1_2') 413 test_utils.delete_widget() 414 415 #delete tree view menu 1.1 416 test_utils.select_project_tree_node('tree_menu_1_1') 417 test_utils.delete_widget() 418 419 #undo delete 420 test_utils.undo() 421 422def run_menu_widget_tests(generate, screenshot): 423 424 test_utils.output_test_header(get_test_header()) 425 test_utils.setup(generate, screenshot, 'test_menu_widget_golden_file') 426 427 print('create new project') 428 run_new_project_create("test_menu_widget") 429 430 print('add main screen') 431 add_main_screen() 432 433 print('add and edit accordion menu widget') 434 add_edit_accordion_menu_widget() 435 436 print('add and edit tree view widget') 437 add_edit_tree_view_widget() 438 439 test_utils.toolbar_save() 440 441 test_utils.toolbar_save() 442 443 #close project with widget been selected 444 test_utils.select_project_tree_node("accordion") 445 test_utils.close_project() 446 test_utils.open_project(test_utils.DEFAULT_OUTPUT_FILE_PATH + "\\test_menu_widget.gxp") 447 test_utils.select_project_tree_node("tree_view") 448 test_utils.close_project() 449 450 print('test menu item select when the item is not expanded') 451 select_menu_item_that_is_not_expanded() 452 453 print('run menu position') 454 run_menu_position() 455 456 test_utils.write_end('Menu Widget Tests')