1# -*- coding: utf-8 -*- 2import os 3import sys 4import time 5import test_utils 6import test_constants 7 8project_name = "test_font" 9display_name = "main_display" 10folder_name = 'default_folder' 11test_font_output_files = [ 12"test_font_custom_output_file.c", 13"test_font_resources.c", 14"test_font_resources.h", 15"test_font_specifications.c", 16"test_font_specifications.h"] 17 18def run_font_add(): 19 # open font folder 20 test_utils.click_resource_group('FONT_GROUP') 21 22 # test cancel button 23 test_utils.add_font() 24 test_utils.cancel_font_edit() 25 26 # add font 1bit raw 27 test_utils.add_font() 28 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 29 test_utils.set_font_name('FONT_1BIT_RAW') 30 test_utils.set_font_format('GX_FONT_FORMAT_1BPP') 31 test_utils.set_font_height(200) 32 test_utils.check_font_custom_output(1) 33 test_utils.set_font_custom_output_file('test_font_custom_output_file.c') 34 test_utils.save_font_edit() 35 36 # add font 1bit compressed 37 test_utils.add_font() 38 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 39 test_utils.set_font_name('FONT_1BIT_COMPRESSED') 40 test_utils.set_font_compression(1) 41 test_utils.set_font_format('GX_FONT_FORMAT_1BPP') 42 test_utils.set_font_height_post(256, True) 43 test_utils.set_font_height(200) 44 test_utils.check_font_custom_output(1) 45 test_utils.set_font_custom_output_file('test_font_custom_output_file.c') 46 test_utils.save_font_edit() 47 48 test_utils.edit_font('FONT_1BIT_COMPRESSED') 49 test_utils.check_font_custom_output(0) 50 test_utils.save_font_edit() 51 52 test_utils.edit_font('FONT_1BIT_COMPRESSED') 53 test_utils.check_font_custom_output(1) 54 test_utils.set_font_custom_output_file('test_font_custom_output_file.c') 55 test_utils.cancel_font_edit() 56 57 # save and close project to test custom output file information write to project file 58 test_utils.toolbar_save() 59 test_utils.close_project(0) 60 61 # reopen project to test custom output file information read from project file 62 test_utils.open_project(test_utils.DEFAULT_OUTPUT_FILE_PATH + '\\' + project_name + '.gxp', 0) 63 64 # add font 4bit raw 65 test_utils.add_font() 66 test_utils.set_font_path('..\\..\\fonts\\VeraBd.ttf') 67 test_utils.set_font_name('FONT_4BIT_RAW') 68 test_utils.set_font_format('GX_FONT_FORMAT_4BPP') 69 test_utils.set_font_height(100) 70 test_utils.save_font_edit() 71 72 # add font 4bit compressed 73 test_utils.add_font() 74 test_utils.set_font_path('..\\..\\fonts\\VeraBd.ttf') 75 test_utils.set_font_name('FONT_4BIT_COMPRESSED') 76 test_utils.set_font_compression(1) 77 test_utils.set_font_format('GX_FONT_FORMAT_4BPP') 78 test_utils.set_font_height(100) 79 test_utils.save_font_edit() 80 81 # add font 8bit raw 82 test_utils.add_font() 83 test_utils.set_font_path('..\\..\\fonts\\VeraBI.ttf') 84 test_utils.set_font_name('FONT_8BIT_RAW') 85 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 86 test_utils.save_font_edit() 87 88 # add font 8bit compressed 89 test_utils.add_font() 90 test_utils.set_font_path('..\\..\\fonts\\VeraBI.ttf') 91 test_utils.set_font_name('FONT_8BIT_COMPRESSED') 92 test_utils.set_font_compression(1) 93 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 94 test_utils.save_font_edit() 95 96 # add font that contain extended characters 97 test_utils.add_font() 98 test_utils.set_font_path('..\\..\\fonts\\Italica Vetus 1-201.otf') 99 test_utils.set_font_name('FONT_OLD_ITALIC') 100 test_utils.check_extended_unicode(1) 101 test_utils.set_font_height(20) 102 test_utils.set_page_range(46, 1, '10300', '10323') 103 test_utils.set_page_range(47, 1, '10fffd', '10fffd') 104 test_utils.save_font_edit() 105 106 # cloce font folder 107 test_utils.click_resource_group('FONT_GROUP') 108 109def run_new_project_create(project_name): 110 111 # create a new project 112 test_utils.toolbar_create() 113 test_utils.set_new_project_path(test_utils.DEFAULT_OUTPUT_FILE_PATH) 114 test_utils.set_new_project_name(project_name) 115 test_utils.save_new_project_create() 116 117 # configure project 118 test_utils.configure_project() 119 test_utils.configure_x_res(640) 120 test_utils.configure_y_res(480) 121 test_utils.configure_display_name(display_name) 122 test_utils.configure_display_color_format('GX_COLOR_FORMAT_24XRGB') 123 test_utils.configure_cpu_type('synergy') 124 test_utils.save_project_configure() 125 126 # close message dialog when create new 127 test_utils.close_message_dialog() 128 129def run_widgets_add(): 130 test_utils.select_project_tree_node("window") 131 screen_name = "main_window" 132 133 test_utils.edit_widget_props("ID_WIDGET_NAME", screen_name) 134 test_utils.edit_widget_props("ID_XPOS", 0) 135 test_utils.edit_widget_props("ID_YPOS", 0) 136 test_utils.edit_widget_props("ID_WIDTH", 640) 137 test_utils.edit_widget_props("ID_HEIGHT", 480) 138 139 #Add a prompt and set it's font to FONT_1BIT_RAW 140 test_utils.select_project_tree_node(screen_name) 141 test_utils.add_widget('GX_TYPE_PROMPT') 142 test_utils.edit_widget_props("ID_XPOS", 0) 143 test_utils.edit_widget_props("ID_YPOS", 0) 144 test_utils.edit_widget_props("ID_WIDTH", 640) 145 test_utils.edit_widget_props("ID_HEIGHT", 165) 146 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 147 test_utils.edit_widget_props("ID_STRING_VAL", "1 bit raw") 148 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_1BIT_RAW") 149 150 #Add a prompt and set it's font to FONT_1BIT_COMPRESSED 151 test_utils.select_project_tree_node(screen_name) 152 test_utils.add_widget('GX_TYPE_PROMPT') 153 test_utils.edit_widget_props("ID_XPOS", 0) 154 test_utils.edit_widget_props("ID_YPOS", 145) 155 test_utils.edit_widget_props("ID_WIDTH", 640) 156 test_utils.edit_widget_props("ID_HEIGHT", 136) 157 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 158 test_utils.edit_widget_props("ID_STRING_VAL", "200height") 159 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_1BIT_COMPRESSED") 160 161 #Add a prompt and set it's font to FONT_4BIT_RAW 162 test_utils.select_project_tree_node(screen_name) 163 test_utils.add_widget('GX_TYPE_PROMPT') 164 test_utils.edit_widget_props("ID_XPOS", 0) 165 test_utils.edit_widget_props("ID_YPOS", 269) 166 test_utils.edit_widget_props("ID_WIDTH", 640) 167 test_utils.edit_widget_props("ID_HEIGHT", 81) 168 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 169 test_utils.edit_widget_props("ID_STRING_VAL", "4 bit raw") 170 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_4BIT_RAW") 171 172 #Add a prompt and set it's font to FONT_4BIT_COMPRESSED 173 test_utils.select_project_tree_node(screen_name) 174 test_utils.add_widget('GX_TYPE_PROMPT') 175 test_utils.edit_widget_props("ID_XPOS", 0) 176 test_utils.edit_widget_props("ID_YPOS", 331) 177 test_utils.edit_widget_props("ID_WIDTH", 640) 178 test_utils.edit_widget_props("ID_HEIGHT", 90) 179 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 180 test_utils.edit_widget_props("ID_STRING_VAL", "4 bit compressed") 181 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_4BIT_COMPRESSED") 182 183 #Add a prompt and set it's font to FONT_8BIT_RAW 184 test_utils.select_project_tree_node(screen_name) 185 test_utils.add_widget('GX_TYPE_PROMPT') 186 test_utils.edit_widget_props("ID_XPOS", 3) 187 test_utils.edit_widget_props("ID_YPOS", 421) 188 test_utils.edit_widget_props("ID_WIDTH", 189) 189 test_utils.edit_widget_props("ID_HEIGHT", 56) 190 test_utils.edit_widget_props("ID_STRING_VAL", "font 8 bit raw") 191 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_8BIT_RAW") 192 193 #Add a prompt and set it's font to FONT_8BIT_COMPRESSED 194 test_utils.select_project_tree_node(screen_name) 195 test_utils.add_widget('GX_TYPE_PROMPT') 196 test_utils.edit_widget_props("ID_XPOS", 197) 197 test_utils.edit_widget_props("ID_YPOS", 421) 198 test_utils.edit_widget_props("ID_WIDTH", 267) 199 test_utils.edit_widget_props("ID_HEIGHT", 56) 200 test_utils.edit_widget_props("ID_STRING_VAL", "font 8 bit compressed") 201 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_8BIT_COMPRESSED") 202 203 #Add a prompt to test extended unicode support feature 204 test_utils.select_project_tree_node(screen_name) 205 test_utils.add_widget('GX_TYPE_PROMPT') 206 test_utils.edit_widget_props("ID_XPOS", 467) 207 test_utils.edit_widget_props("ID_YPOS", 421) 208 test_utils.edit_widget_props("ID_WIDTH", 170) 209 test_utils.edit_widget_props("ID_HEIGHT", 56) 210 test_utils.edit_widget_props("ID_STRING_VAL", "") 211 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_OLD_ITALIC") 212 213def add_text_color(): 214 # open color group folder 215 test_utils.click_resource_group('COLOR_GROUP') 216 217 # test cancel button 218 test_utils.add_color() 219 test_utils.set_color_name('TEXT_COLOR') 220 test_utils.set_color_red(0) 221 test_utils.set_color_green(0) 222 test_utils.set_color_blue(0) 223 test_utils.save_color_edit() 224 225 test_utils.edit_color('TEXT') 226 test_utils.set_color_red(0) 227 test_utils.set_color_green(0) 228 test_utils.set_color_blue(0) 229 test_utils.save_color_edit() 230 231 # close color group folder 232 test_utils.click_resource_group('COLOR_GROUP') 233 234def run_kerning_font_test(): 235 # open font folder 236 test_utils.click_resource_group('FONT_GROUP') 237 238 #Add new font which doesn't contain a kerning table but the checkbox 'include kerning info' is selected on. 239 test_utils.add_font() 240 test_utils.set_font_path('..\\..\\fonts\\Italica Vetus 1-201.otf') 241 test_utils.set_font_name('FONT_WITHOUT_KERNING_INFO') 242 test_utils.set_font_compression(0) 243 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 244 test_utils.set_font_generate_kerning(1) 245 test_utils.save_font_edit() 246 test_utils.close_message_dialog() 247 test_utils.delete_font('FONT_WITHOUT_KERNING_INFO') 248 249 #edit font and set kerning true to make font generate kerning table 250 test_utils.add_font() 251 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 252 test_utils.set_font_name('FONT_1BIT') 253 test_utils.set_font_format('GX_FONT_FORMAT_1BPP') 254 test_utils.set_font_generate_kerning(0) 255 test_utils.save_font_edit() 256 257 test_utils.add_font() 258 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 259 test_utils.set_font_name('FONT_1BIT_KERNING') 260 test_utils.set_font_format('GX_FONT_FORMAT_1BPP') 261 test_utils.set_font_generate_kerning(1) 262 test_utils.save_font_edit() 263 264 test_utils.add_font() 265 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 266 test_utils.set_font_name('FONT_4BIT') 267 test_utils.set_font_format('GX_FONT_FORMAT_4BPP') 268 test_utils.set_font_height(50) 269 test_utils.set_font_generate_kerning(0) 270 test_utils.save_font_edit() 271 272 test_utils.add_font() 273 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 274 test_utils.set_font_name('FONT_4BIT_KERNING') 275 test_utils.set_font_format('GX_FONT_FORMAT_4BPP') 276 test_utils.set_font_height(50) 277 test_utils.set_font_generate_kerning(1) 278 test_utils.save_font_edit() 279 280 test_utils.add_font() 281 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 282 test_utils.set_font_name('FONT_8BIT') 283 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 284 test_utils.set_font_height(150) 285 test_utils.set_font_generate_kerning(0) 286 test_utils.save_font_edit() 287 288 test_utils.add_font() 289 test_utils.set_font_path('..\\..\\fonts\\Vera.ttf') 290 test_utils.set_font_name('FONT_8BIT_KERNING') 291 test_utils.set_font_format('GX_FONT_FORMAT_8BPP') 292 test_utils.set_font_height(150) 293 test_utils.set_font_generate_kerning(1) 294 test_utils.save_font_edit() 295 296 #Add widget to test the kerning glyph draw 297 test_utils.select_project_tree_node(folder_name) 298 test_utils.add_widget('GX_TYPE_WINDOW') 299 screen_name = "Font_kerning_test_window" 300 301 test_utils.edit_widget_props("ID_WIDGET_NAME", screen_name) 302 test_utils.edit_widget_props("ID_XPOS", 0) 303 test_utils.edit_widget_props("ID_YPOS", 0) 304 test_utils.edit_widget_props("ID_WIDTH", 640) 305 test_utils.edit_widget_props("ID_HEIGHT", 480) 306 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_NONE) 307 308 #Add a prompt and set it's font to FONT_8BIT 309 test_utils.select_project_tree_node(screen_name) 310 test_utils.add_widget('GX_TYPE_PROMPT') 311 test_utils.edit_widget_props("ID_XPOS", 0) 312 test_utils.edit_widget_props("ID_YPOS", 0) 313 test_utils.edit_widget_props("ID_WIDTH", 640) 314 test_utils.edit_widget_props("ID_HEIGHT", 160) 315 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 316 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_NONE) 317 test_utils.edit_widget_props("ID_STRING_VAL", "FAWAVAYLTLV_8BIT") 318 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_8BIT") 319 320 #Add a prompt and set it's font to FONT_8BIT_KERNING 321 test_utils.select_project_tree_node(screen_name) 322 test_utils.add_widget('GX_TYPE_PROMPT') 323 test_utils.edit_widget_props("ID_XPOS", 0) 324 test_utils.edit_widget_props("ID_YPOS", 160) 325 test_utils.edit_widget_props("ID_WIDTH", 640) 326 test_utils.edit_widget_props("ID_HEIGHT", 160) 327 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 328 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_NONE) 329 test_utils.edit_widget_props("ID_STRING_VAL", "FAWAVAYLTLV_8BIT_KERNING") 330 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_8BIT_KERNING") 331 332 #Add a prompt and set it's font to FONT_4BIT 333 test_utils.select_project_tree_node(screen_name) 334 test_utils.add_widget('GX_TYPE_PROMPT') 335 test_utils.edit_widget_props("ID_XPOS", 0) 336 test_utils.edit_widget_props("ID_YPOS", 320) 337 test_utils.edit_widget_props("ID_WIDTH", 640) 338 test_utils.edit_widget_props("ID_HEIGHT", 60) 339 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 340 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_NONE) 341 test_utils.edit_widget_props("ID_STRING_VAL", "FAWAVAYLTLV_4BIT") 342 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_4BIT") 343 344 #Add a prompt and set it's font to FONT_4BIT_KERNING 345 test_utils.select_project_tree_node(screen_name) 346 test_utils.add_widget('GX_TYPE_PROMPT') 347 test_utils.edit_widget_props("ID_XPOS", 0) 348 test_utils.edit_widget_props("ID_YPOS", 380) 349 test_utils.edit_widget_props("ID_WIDTH", 640) 350 test_utils.edit_widget_props("ID_HEIGHT", 60) 351 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 352 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_NONE) 353 test_utils.edit_widget_props("ID_STRING_VAL", "FAWAVAYLTLV_4BIT_KERNING") 354 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_4BIT_KERNING") 355 356 #Add a prompt and set it's font to FONT_1BIT 357 test_utils.select_project_tree_node(screen_name) 358 test_utils.add_widget('GX_TYPE_PROMPT') 359 test_utils.edit_widget_props("ID_XPOS", 0) 360 test_utils.edit_widget_props("ID_YPOS", 440) 361 test_utils.edit_widget_props("ID_WIDTH", 640) 362 test_utils.edit_widget_props("ID_HEIGHT", 20) 363 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 364 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_NONE) 365 test_utils.edit_widget_props("ID_STRING_VAL", "FAWAVAYLTLV_1BIT") 366 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_1BIT") 367 368 #Add a prompt and set it's font to FONT_1BIT_KERNING 369 test_utils.select_project_tree_node(screen_name) 370 test_utils.add_widget('GX_TYPE_PROMPT') 371 test_utils.edit_widget_props("ID_XPOS", 0) 372 test_utils.edit_widget_props("ID_YPOS", 460) 373 test_utils.edit_widget_props("ID_WIDTH", 640) 374 test_utils.edit_widget_props("ID_HEIGHT", 20) 375 test_utils.edit_widget_props("ID_TEXT_ALIGN", 'Left') 376 test_utils.edit_widget_props("ID_BORDER_COMBO", test_constants.BORDER_TYPE_NONE) 377 test_utils.edit_widget_props("ID_STRING_VAL", "FAWAVAYLTLV_1BIT_KERNING") 378 test_utils.edit_widget_props("ID_FONT_SELECT_0", "FONT_1BIT_KERNING") 379 test_utils.compare_result() 380 381 #test the output will not be changed 382 print('save project') 383 test_utils.toolbar_save() 384 test_utils.generate_all() 385 test_utils.click_generate_button(1) 386 test_utils.cmp_output_files(test_font_output_files) 387 388def test_custom_system_font(): 389 test_utils.open_project("test_system_font.gxp") 390 test_utils.compare_result() 391 392def test_font_height(): 393 test_utils.open_project("test_font_height.gxp") 394 test_utils.compare_result() 395 396def get_test_header(): 397 notes = "* Studio Add/Edit Font Test *\n" 398 notes += "* *\n" 399 notes += "* Test compressed font *\n" 400 notes += "* Test extended unicode support *\n" 401 notes += "* Test font height *\n" 402 return notes 403 404def run_font_tests(generate, screenshot): 405 406 test_utils.output_test_header(get_test_header()) 407 test_utils.setup(generate, screenshot, 'test_font_golden_file') 408 409 print('create new project') 410 run_new_project_create(project_name) 411 412 print('add fonts') 413 run_font_add() 414 415 print('add widgets') 416 run_widgets_add() 417 test_utils.compare_result() 418 419 screen_name = "main_window" 420 421 # change color format to 8 422 test_utils.configure_project() 423 test_utils.configure_display_color_format('GX_COLOR_FORMAT_8BIT_PALETTE') 424 test_utils.set_aa_text_colors(16) 425 test_utils.save_project_configure() 426 add_text_color() 427 test_utils.select_project_tree_node('prompt_2') 428 test_utils.edit_widget_props("ID_NORMAL_TEXT_COLOR", 'TEXT_COLOR') 429 test_utils.select_project_tree_node(screen_name) 430 test_utils.compare_result() 431 432 # disable dave2d drawing 433 test_utils.configure_project() 434 test_utils.open_advanced_settings() 435 test_utils.check_2d_drawing_engine(0) 436 test_utils.save_synergy_settings_dialog() 437 test_utils.save_project_configure() 438 test_utils.select_project_tree_node(screen_name) 439 test_utils.compare_result() 440 441 # change cpu type to generic 442 test_utils.configure_project() 443 test_utils.configure_cpu_type('generic') 444 test_utils.save_project_configure() 445 test_utils.select_project_tree_node(screen_name) 446 test_utils.compare_result() 447 448 print('run kerning font test') 449 test_utils.configure_project() 450 #Change display color format to 16bpp first. 451 test_utils.configure_display_color_format('GX_COLOR_FORMAT_565RGB') 452 test_utils.save_project_configure() 453 test_utils.select_project_tree_node(screen_name) 454 run_kerning_font_test() 455 456 print('run custom system font test') 457 test_custom_system_font() 458 459 print('run font height test') 460 test_font_height() 461 462 test_utils.write_end('Font Tests') 463