1# -*- coding: utf-8 -*-
2import os
3import sys
4import time
5import test_utils
6import test_constants
7
8display_name = "main_display"
9screen_name = "window"
10widget_name = "sprite"
11
12test_scroll_wheel_widget_output_files = [
13"test_sprite_specifications.c",
14"test_sprite_specifications.h",
15"test_sprite_resources.c",
16"test_sprite_resources.h"]
17
18def get_test_header():
19    notes =  "*                   Sprite Test                       *\n"
20    notes += "*                                                     *\n"
21    notes += "* Edit Sprite Frames                                  *\n"
22    notes += "* Import Frames From Pixelmap Folder                  *\n"
23    return notes
24
25def run_new_project_create(project_name):
26
27    # create a new project
28    test_utils.toolbar_create()
29    test_utils.set_new_project_path(test_utils.DEFAULT_OUTPUT_FILE_PATH)
30    test_utils.set_new_project_name(project_name)
31    test_utils.save_new_project_create()
32
33    # close message dialog when create new project
34    test_utils.close_message_dialog()
35
36    test_utils.toolbar_save()
37
38def add_pixelmaps():
39    #---------------------------------------#
40    #add pixelmaps                          #
41    #---------------------------------------#
42    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'frame_000.png')
43    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'frame_001.png')
44    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'fish.png')
45    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\', 'black_pause.png')
46    test_utils.add_pixelmaps('Custom', '..\\pixelmaps\\gif\\', 'sprite.gif')
47
48    test_utils.edit_pixelmap('FISH')
49    test_utils.set_image_id_name('SPRITE')
50    test_utils.save_pixelmap_edit(test_utils.CLOSE_NO_WAIT)
51    test_utils.close_error_dialog()
52
53    test_utils.set_image_id_name('SPRITE_F0')
54    test_utils.save_pixelmap_edit(test_utils.CLOSE_NO_WAIT)
55    test_utils.close_error_dialog()
56
57    test_utils.set_image_id_name('SPRITE_FISH')
58    test_utils.save_pixelmap_edit()
59
60
61def add_edit_sprite():
62    #---------------------------------------#
63    #add and edti sprite                    #
64    #---------------------------------------#
65    test_utils.select_project_tree_node(screen_name)
66    test_utils.add_widget('GX_TYPE_SPRITE')
67
68    test_utils.edit_widget_props("ID_WIDGET_NAME", widget_name)
69    test_utils.compare_result()
70
71    # open sprite edit dialog
72    test_utils.select_project_tree_node(widget_name)
73    test_utils.edit_widget_props_post('ID_SPRITE_EDIT_FRAMES', 1)
74    test_utils.wait_dialog_open(test_utils.SPRITE_FRAME_EDIT_DIALOG)
75
76    test_utils.edit_sprite_total_frames(3)
77    test_utils.edit_sprite_frame(1, 'FRAME_001')
78    test_utils.edit_sprite_frame_alpha(255)
79    test_utils.edit_sprite_frame(2, 'SPRITE_FISH')
80    test_utils.edit_sprite_frame(3, 'FRAME_000')
81
82    test_utils.save_sprite_frame_edit()
83    test_utils.compare_result()
84
85    # add second sprite widget
86    test_utils.select_project_tree_node(screen_name)
87    test_utils.add_widget('GX_TYPE_SPRITE')
88    test_utils.edit_widget_props("ID_WIDGET_NAME", 'sprite_1')
89    test_utils.edit_widget_props("ID_XPOS", 25)
90    test_utils.edit_widget_props("ID_YPOS", 154)
91    test_utils.edit_widget_props("ID_PIXELMAP_0", 'SPRITE')
92    test_utils.toolbar_size_to_fit()
93    test_utils.compare_result()
94
95    test_utils.edit_pixelmap('SPRITE')
96    test_utils.set_image_path('..\\..\\pixelmaps\\gif\\sprite_4_frames.gif')
97    test_utils.save_pixelmap_edit()
98    test_utils.compare_result()
99
100    test_utils.delete_pixelmap('BLACK_PAUSE')
101
102def test_import_frames():
103    test_utils.select_project_tree_node(screen_name)
104    test_utils.add_widget('GX_TYPE_SPRITE')
105    test_utils.edit_widget_props("ID_XPOS", 0)
106    test_utils.edit_widget_props("ID_YPOS", 0)
107
108    test_utils.edit_widget_props_post('ID_SPRITE_EDIT_FRAMES', 1)
109    test_utils.wait_dialog_open(test_utils.SPRITE_FRAME_EDIT_DIALOG)
110
111    test_utils.import_sprite_frames()
112    test_utils.save_sprite_frame_import_edit()
113
114    test_utils.check_apply_to_all_frames(1)
115    test_utils.edit_sprite_frame_alpha(200)
116    test_utils.edit_sprite_frame_xoffset(5)
117    test_utils.edit_sprite_frame_yoffset(8)
118    test_utils.edit_sprite_frame_delay(10)
119
120    test_utils.save_sprite_frame_edit()
121    test_utils.compare_result()
122
123def run_sprite_tests(generate, screenshot):
124
125    test_utils.output_test_header(get_test_header())
126    test_utils.setup(generate, screenshot, 'test_sprite_golden_file')
127
128    print('create new project')
129    run_new_project_create("test_sprite")
130
131    print('add pixelmaps')
132    add_pixelmaps()
133
134    print('add and edit sprite')
135    add_edit_sprite()
136
137    print('test import frames')
138    test_import_frames()
139
140    test_utils.toolbar_save()
141    test_utils.generate_all()
142    test_utils.click_generate_button()
143    test_utils.cmp_output_files(test_scroll_wheel_widget_output_files)
144
145    test_utils.write_end('Sprite Tests')