1# -*- coding: utf-8 -*-
2import os
3import sys
4import time
5import test_utils
6import test_constants
7
8test_pixelmap_edit_output_files = [
9"test_pixelmap_edit_resources.c",
10"test_pixelmap_edit_resources.h"]
11
12test_batch_pixelmap_edit_output_files = [
13"test_batch_pixelmap_edit_folder_2_resource.c",
14"test_batch_pixelmap_edit_folder_3_resource.c",
15"test_batch_pixelmap_edit_folder_4_resource.c",
16"test_batch_pixelmap_edit_resources.c",
17"test_batch_pixelmap_edit_resources.h"]
18
19test_synergy_pixelmap_edit_output_files = [
20"test_synergy_pixelmap_edit_resources.c",
21"test_synergy_pixelmap_edit_resources.h"]
22
23test_pixelmap_folder_enable_disable_output_files = [
24"test_pixelmap_folder_enable_disable_resources.c",
25"test_pixelmap_folder_enable_disable_resources.h"]
26
27test_pixelmap_group_enable_output_files = [
28"test_pixelmap_group_enable_resources.c",
29"test_pixelmap_group_enable_resources.h"]
30
31test_pixelmap_group_disable_output_files = [
32"test_pixelmap_group_disable_resources.c",
33"test_pixelmap_group_disable_resources.h"]
34
35display_name = "main_display"
36screen_name = "window"
37
38def get_test_header():
39    notes =  "*      Studio Add/Edit Pixelmap Test                  *\n"
40    notes += "*                                                     *\n"
41    notes += "* Test duplicate pixelmap add                         *\n"
42    notes += "* Test synergy pixelmap edit                          *\n"
43    notes += "* Test batch pixelmap edit                            *\n"
44    notes += "* Test pixelmap folder enable disable                 *\n"
45    notes += "* Test pixelmap group enable disable                  *\n"
46
47def run_new_project_create(project_name):
48
49    # create a new project
50    test_utils.toolbar_create()
51    test_utils.set_new_project_path(test_utils.DEFAULT_OUTPUT_FILE_PATH)
52    test_utils.set_new_project_name(project_name)
53    test_utils.save_new_project_create()
54
55    # configure project
56    test_utils.configure_project()
57    test_utils.configure_x_res(640)
58    test_utils.configure_y_res(480)
59    test_utils.configure_display_name(display_name)
60    test_utils.configure_display_color_format('GX_COLOR_FORMAT_24XRGB')
61    test_utils.save_project_configure()
62
63    # close message dialog when create new
64    test_utils.close_message_dialog()
65
66def run_duplicate_pixlemap_add():
67    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'save_icon.png,yellow_bg.png')
68    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'save_icon.png,yellow_bg.png', test_utils.CLOSE_NO_WAIT)
69
70    test_utils.click_yes_to_please_confirm_dialog()
71    test_utils.click_no_to_please_confirm_dialog()
72
73def run_synergy_pixelmap_edit():
74    test_utils.open_project('synergy_16bpp.gxp');
75    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'fish_small_411.jpg');
76    test_utils.edit_pixelmap('FISH_SMALL_411');
77    test_utils.check_raw_format(1, test_utils.CLOSE_ERROR_MSG); # Test crash when edit raw format
78    test_utils.cancel_pixelmap_edit();
79    test_utils.edit_pixelmap('_565RGB_COMPRESSED_FISH')
80    test_utils.check_raw_format(1, test_utils.CLOSE_ERROR_MSG); # Test crash when edit raw format
81    test_utils.cancel_pixelmap_edit();
82    test_utils.close_project()
83
84    # create a new project
85    test_utils.toolbar_create()
86    test_utils.set_new_project_path(test_utils.DEFAULT_OUTPUT_FILE_PATH)
87    test_utils.set_new_project_name('test_synergy_pixelmap_edit')
88    test_utils.save_new_project_create()
89
90    # configure project
91    test_utils.configure_project()
92    test_utils.configure_x_res(640)
93    test_utils.configure_y_res(480)
94    test_utils.configure_display_name(display_name)
95    test_utils.configure_cpu_type('synergy')
96    test_utils.configure_display_color_format('GX_COLOR_FORMAT_32ARGB')
97    test_utils.save_project_configure()
98
99    # close message dialog when create new
100    test_utils.close_message_dialog()
101
102    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'i_patientlist_lg.png')
103    test_utils.edit_pixelmap('I_PATIENTLIST_LG')
104    test_utils.check_alpha(0)
105    test_utils.check_alpha(1)
106    test_utils.save_pixelmap_edit()
107
108def run_batch_pixelmap_edit():
109    test_utils.add_pixelmap_folder()
110    test_utils.set_folder_name('folder_1')
111    test_utils.save_folder_name_edit()
112
113    test_utils.add_pixelmap_folder()
114    test_utils.set_folder_name('folder_2')
115    test_utils.save_folder_name_edit()
116
117    test_utils.add_pixelmap_folder()
118    test_utils.set_folder_name('folder_3')
119    test_utils.save_folder_name_edit()
120
121    test_utils.add_pixelmap_folder()
122    test_utils.set_folder_name('folder_4')
123    test_utils.save_folder_name_edit()
124
125    test_utils.add_pixelmaps('folder_1', '..\\pixelmaps\\', 'save_icon.png')
126    test_utils.add_pixelmaps('folder_2', '..\\pixelmaps\\', 'save_icon.png,yellow_bg.png')
127    test_utils.click_yes_to_please_confirm_dialog()
128    test_utils.add_pixelmaps('folder_3', '..\\pixelmaps\\', 'black_pause.png,button_disabled.png')
129    test_utils.add_pixelmaps('folder_4', '..\\pixelmaps\\', 'collapse.png,expand.png')
130
131    test_utils.click_pixelmap_folder('CUSTOM_PIXELMAP_FOLDER', 'folder_1')
132    test_utils.edit_pixelmaps()
133    test_utils.check_alpha(1)
134    test_utils.save_pixelmap_edit()
135
136    test_utils.click_pixelmap_folder('CUSTOM_PIXELMAP_FOLDER', 'folder_2')
137    test_utils.edit_pixelmaps()
138    test_utils.check_custom_output(1)
139    test_utils.set_custom_output_file("test_batch_pixelmap_edit_folder_2_resource.c")
140    test_utils.set_output_format('GX_COLOR_FORMAT_565RGB')
141    test_utils.save_pixelmap_edit()
142
143    test_utils.edit_pixelmap('BLACK_PAUSE')
144    test_utils.set_output_format('GX_COLOR_FORMAT_565RGB')
145    test_utils.save_pixelmap_edit()
146
147    test_utils.click_pixelmap_folder('CUSTOM_PIXELMAP_FOLDER', 'folder_3')
148    test_utils.edit_pixelmaps()
149    test_utils.check_custom_output(1)
150    test_utils.set_custom_output_file("test_batch_pixelmap_edit_folder_3_resource.c")
151    test_utils.check_alpha(0)
152    test_utils.check_compress(0)
153    test_utils.check_dither(1)
154    test_utils.save_pixelmap_edit()
155
156    test_utils.click_pixelmap_folder('DEFAULT_PIXELMAP_FOLDER', 'System')
157    test_utils.edit_pixelmaps()
158    test_utils.set_output_format('GX_COLOR_FORMAT_8BIT_PALETTE')
159    test_utils.set_palette_type('PALETTE_TYPE_PRIVATE')
160    test_utils.save_pixelmap_edit()
161
162    test_utils.click_pixelmap_folder('CUSTOM_PIXELMAP_FOLDER', 'folder_4')
163    test_utils.edit_pixelmaps()
164    test_utils.check_custom_output(1)
165    test_utils.set_custom_output_file("test_batch_pixelmap_edit_folder_4_resource.c")
166    test_utils.check_raw_format(1)
167    test_utils.check_alpha(1)
168    test_utils.check_compress(1)
169    test_utils.check_dither(1)
170    test_utils.save_pixelmap_edit()
171
172def run_pixelmap_folder_enable_disable():
173    # create a new project
174    run_new_project_create('test_pixelmap_folder_enable_disable')
175
176    test_utils.add_pixelmap_folder()
177    test_utils.set_folder_name('folder_1')
178    test_utils.save_folder_name_edit()
179
180    test_utils.add_pixelmap_folder()
181    test_utils.set_folder_name('folder_2')
182    test_utils.save_folder_name_edit()
183
184    test_utils.add_pixelmap_folder()
185    test_utils.set_folder_name('folder_3')
186    test_utils.save_folder_name_edit()
187
188    test_utils.add_pixelmaps('folder_1', '..\\pixelmaps\\', 'save_icon.png,yellow_bg.png')
189    test_utils.add_pixelmaps('folder_2', '..\\pixelmaps\\', 'black_pause.png,button_disabled.png')
190    test_utils.add_pixelmaps('folder_3', '..\\pixelmaps\\', 'bg_title.png')
191
192    # disable default pixelmap folder
193    test_utils.click_pixelmap_folder('DEFAULT_PIXELMAP_FOLDER', 'System')
194    test_utils.disable_pixelmap_folder()
195
196    # disable 'SAVE_ICON' under 'folder_1', enable 'folder_1'
197    test_utils.disable_pixelmap('SAVE_ICON')
198    test_utils.click_pixelmap_folder('CUSTOM_PIXELMAP_FOLDER', 'folder_1')
199    test_utils.enable_pixelmap_folder()
200
201    # disable 'folder_2'
202    test_utils.click_pixelmap_folder('CUSTOM_PIXELMAP_FOLDER', 'folder_2')
203    test_utils.disable_pixelmap_folder()
204
205    #generate output files and compare result with golden files
206    test_utils.toolbar_save()
207    test_utils.generate_all()
208    test_utils.click_generate_button()
209    test_utils.cmp_output_files(test_pixelmap_folder_enable_disable_output_files)
210
211def run_pixelmap_group_enable():
212    # create a new project
213    run_new_project_create('test_pixelmap_group_enable')
214
215    test_utils.click_resource_group('PIXELMAP_GROUP')
216    test_utils.disable_pixelmap('CHECKBOX_OFF')
217    test_utils.enable_pixelmap_folder()
218
219    #generate output files and compare result with golden files
220    test_utils.toolbar_save()
221    test_utils.generate_all()
222    test_utils.click_generate_button()
223    test_utils.cmp_output_files(test_pixelmap_group_enable_output_files)
224
225def run_pixelmap_group_disable():
226    # create a new project
227    run_new_project_create('test_pixelmap_group_disable')
228
229    test_utils.click_resource_group('PIXELMAP_GROUP')
230    test_utils.disable_pixelmap_folder()
231
232    #generate output files and compare result with golden files
233    test_utils.toolbar_save()
234    test_utils.generate_all()
235    test_utils.click_generate_button()
236    test_utils.cmp_output_files(test_pixelmap_group_disable_output_files)
237
238def run_pixelmap_folder_delete():
239    print('create new project')
240    run_new_project_create('test_pixelmap_folder_delete')
241
242    test_utils.add_pixelmap_folder()
243    test_utils.set_folder_name('folder_1')
244    test_utils.save_folder_name_edit()
245
246    test_utils.add_pixelmap_folder()
247    test_utils.set_folder_name('folder_2')
248    test_utils.save_folder_name_edit()
249
250    test_utils.add_pixelmap_folder()
251    test_utils.set_folder_name('sprite')
252    test_utils.save_folder_name_edit()
253
254    test_utils.add_pixelmap_folder()
255    test_utils.set_folder_name('scrollbar')
256    test_utils.save_folder_name_edit()
257
258    test_utils.add_pixelmaps('folder_1', '..\\pixelmaps\\', 'save_icon.png,yellow_bg.png,tfield_fill_small.png,wheel_dot_green.png,top_bar_background.png')
259    test_utils.add_pixelmaps('folder_2', '..\\pixelmaps\\', 'black_pause.png,collapse.png,expand.png,fill.png,i_emptyfill_middle.png')
260    test_utils.add_pixelmaps('sprite', '..\\pixelmaps\\', 'frame_000.png,frame_001.png')
261    test_utils.add_pixelmaps('sprite', '..\\pixelmaps\\gif\\', 'sprite.gif')
262    test_utils.add_pixelmaps('scrollbar', '..\\pixelmaps\\', 'i_emptyfill_top.png,i_indicator.png,i_orangefill_bottom.png,i_orangefill_middle.png')
263
264    #add icon
265    test_utils.select_project_tree_node(screen_name)
266    test_utils.edit_widget_props("ID_WIDTH", 640)
267    test_utils.edit_widget_props("ID_HEIGHT", 480)
268
269    test_utils.add_widget('GX_TYPE_ICON')
270    test_utils.edit_widget_props("ID_XPOS", 32)
271    test_utils.edit_widget_props("ID_YPOS", 18)
272    test_utils.edit_widget_props("ID_PIXELMAP_0", "SAVE_ICON")
273
274    test_utils.select_project_tree_node(screen_name)
275    test_utils.add_widget('GX_TYPE_ICON')
276    test_utils.edit_widget_props("ID_XPOS", 89)
277    test_utils.edit_widget_props("ID_YPOS", 18)
278    test_utils.edit_widget_props("ID_PIXELMAP_0", "TFIELD_FILL_SMALL")
279
280    test_utils.select_project_tree_node(screen_name)
281    test_utils.add_widget('GX_TYPE_ICON')
282    test_utils.edit_widget_props("ID_XPOS", 148)
283    test_utils.edit_widget_props("ID_YPOS", 18)
284    test_utils.edit_widget_props("ID_PIXELMAP_0", "TOP_BAR_BACKGROUND")
285
286    test_utils.select_project_tree_node(screen_name)
287    test_utils.add_widget('GX_TYPE_ICON')
288    test_utils.edit_widget_props("ID_XPOS", 219)
289    test_utils.edit_widget_props("ID_YPOS", 18)
290    test_utils.edit_widget_props("ID_PIXELMAP_0", "WHEEL_DOT_GREEN")
291
292    test_utils.select_project_tree_node(screen_name)
293    test_utils.add_widget('GX_TYPE_ICON')
294    test_utils.edit_widget_props("ID_XPOS", 483)
295    test_utils.edit_widget_props("ID_YPOS", 111)
296    test_utils.edit_widget_props("ID_PIXELMAP_0", "YELLOW_BG")
297
298    test_utils.select_project_tree_node(screen_name)
299    test_utils.add_widget('GX_TYPE_ICON')
300    test_utils.edit_widget_props("ID_XPOS", 32)
301    test_utils.edit_widget_props("ID_YPOS", 111)
302    test_utils.edit_widget_props("ID_PIXELMAP_0", "BLACK_PAUSE")
303
304    test_utils.select_project_tree_node(screen_name)
305    test_utils.add_widget('GX_TYPE_ICON')
306    test_utils.edit_widget_props("ID_XPOS", 89)
307    test_utils.edit_widget_props("ID_YPOS", 111)
308    test_utils.edit_widget_props("ID_PIXELMAP_0", "COLLAPSE")
309
310    test_utils.select_project_tree_node(screen_name)
311    test_utils.add_widget('GX_TYPE_ICON')
312    test_utils.edit_widget_props("ID_XPOS", 148)
313    test_utils.edit_widget_props("ID_YPOS", 111)
314    test_utils.edit_widget_props("ID_PIXELMAP_0", "EXPAND")
315
316    test_utils.select_project_tree_node(screen_name)
317    test_utils.add_widget('GX_TYPE_ICON')
318    test_utils.edit_widget_props("ID_XPOS", 219)
319    test_utils.edit_widget_props("ID_YPOS", 111)
320    test_utils.edit_widget_props("ID_PIXELMAP_0", "FILL")
321
322    test_utils.select_project_tree_node(screen_name)
323    test_utils.add_widget('GX_TYPE_ICON')
324    test_utils.edit_widget_props("ID_XPOS", 300)
325    test_utils.edit_widget_props("ID_YPOS", 111)
326    test_utils.edit_widget_props("ID_PIXELMAP_0", "I_EMPTYFILL_MIDDLE")
327
328    #add and edti sprite
329    test_utils.select_project_tree_node(screen_name)
330    test_utils.add_widget('GX_TYPE_SPRITE')
331    test_utils.edit_widget_props("ID_XPOS", 184)
332    test_utils.edit_widget_props("ID_YPOS", 228)
333    test_utils.edit_widget_props_post('ID_SPRITE_EDIT_FRAMES', 1)
334    test_utils.wait_dialog_open(test_utils.SPRITE_FRAME_EDIT_DIALOG)
335    test_utils.edit_sprite_total_frames(2)
336    test_utils.edit_sprite_frame(1, 'FRAME_000')
337    test_utils.edit_sprite_frame_alpha(255)
338    test_utils.edit_sprite_frame(2, 'FRAME_001')
339    test_utils.save_sprite_frame_edit()
340
341    # add second sprite widget
342    test_utils.select_project_tree_node(screen_name)
343    test_utils.add_widget('GX_TYPE_SPRITE')
344    test_utils.edit_widget_props("ID_XPOS", 47)
345    test_utils.edit_widget_props("ID_YPOS", 228)
346    test_utils.edit_widget_props("ID_PIXELMAP_0", 'SPRITE')
347
348    # add vertical scrollbar
349    test_utils.select_project_tree_node(screen_name)
350    test_utils.add_widget('GX_TYPE_VERTICAL_SCROLL')
351    test_utils.edit_widget_props('ID_PIXELMAP_0', 'I_ORANGEFILL_MIDDLE')
352    test_utils.edit_widget_props('ID_PIXELMAP_1', 'I_INDICATOR')
353    test_utils.edit_widget_props('ID_PIXELMAP_2', 'I_EMPTYFILL_TOP')
354    test_utils.edit_widget_props('ID_PIXELMAP_3', 'I_ORANGEFILL_BOTTOM')
355    test_utils.edit_widget_props('ID_SCROLL_END_BUTTONS', 0)
356    test_utils.edit_widget_props('ID_SCROLL_TILE_BKGND', 1)
357
358    test_utils.compare_result()
359
360    test_utils.toolbar_save()
361
362    test_utils.remove_pixelmap_folder('folder_1')
363
364    test_utils.compare_result()
365
366def run_pixelmap_edit_tests(generate, screenshot):
367
368    test_utils.output_test_header(get_test_header())
369    test_utils.setup(generate, screenshot, 'test_pixlemap_edit_golden_file')
370
371    print('create new project')
372    run_new_project_create('test_pixelmap_edit')
373
374    print('test duplicate pixlemap add')
375    run_duplicate_pixlemap_add()
376
377    #generate output files and compare result with golden files
378    test_utils.toolbar_save()
379    test_utils.generate_all()
380    test_utils.click_generate_button()
381    test_utils.cmp_output_files(test_pixelmap_edit_output_files)
382
383    print('test synergy pixelmap edit')
384    run_synergy_pixelmap_edit()
385
386    #generate output files and compare result with golden files
387    test_utils.toolbar_save()
388    test_utils.generate_all()
389    test_utils.click_generate_button()
390    test_utils.cmp_output_files(test_synergy_pixelmap_edit_output_files)
391
392    print('create new project')
393    run_new_project_create('test_batch_pixelmap_edit')
394
395    print('test batch pixelmap edit')
396    run_batch_pixelmap_edit()
397
398    #generate output files and compare result with golden files
399    test_utils.toolbar_save()
400    test_utils.generate_all()
401    test_utils.click_generate_button()
402    test_utils.cmp_output_files(test_batch_pixelmap_edit_output_files)
403
404    print('test pixelmap folder enable disable')
405    run_pixelmap_folder_enable_disable()
406
407    print('test pixelmap group enable')
408    run_pixelmap_group_enable()
409
410    print('test pixelmap group disable')
411    run_pixelmap_group_disable()
412
413    print('test pixelmap folder delete')
414    run_pixelmap_folder_delete()
415
416    test_utils.write_end('Pixelmap Edit Tests')
417