OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 '''Unit tests for grit.format.resource_map''' | |
7 | |
8 import os | |
9 import sys | |
10 if __name__ == '__main__': | |
11 sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) | |
12 | |
13 import StringIO | |
14 import unittest | |
15 | |
16 from grit import grd_reader | |
17 from grit import util | |
18 from grit.format import resource_map | |
19 | |
20 | |
21 class FormatResourceMapUnittest(unittest.TestCase): | |
22 def testFormatResourceMap(self): | |
23 grd = grd_reader.Parse(StringIO.StringIO( | |
24 '''<?xml version="1.0" encoding="UTF-8"?> | |
25 <grit latest_public_release="2" source_lang_id="en" current_release="3" | |
26 base_dir="."> | |
27 <outputs> | |
28 <output type="rc_header" filename="the_rc_header.h" /> | |
29 <output type="resource_map_header" | |
30 filename="the_resource_map_header.h" /> | |
31 </outputs> | |
32 <release seq="3"> | |
33 <structures first_id="300"> | |
34 <structure type="menu" name="IDC_KLONKMENU" | |
35 file="grit\\testdata\\klonk.rc" encoding="utf-16" /> | |
36 </structures> | |
37 <includes first_id="10000"> | |
38 <include type="foo" file="abc" name="IDS_FIRSTPRESENT" /> | |
39 <if expr="False"> | |
40 <include type="foo" file="def" name="IDS_MISSING" /> | |
41 </if> | |
42 <if expr="lang != 'es'"> | |
43 <include type="foo" file="ghi" name="IDS_LANGUAGESPECIFIC" /> | |
44 </if> | |
45 <if expr="lang == 'es'"> | |
46 <include type="foo" file="jkl" name="IDS_LANGUAGESPECIFIC" /> | |
47 </if> | |
48 <include type="foo" file="mno" name="IDS_THIRDPRESENT" /> | |
49 </includes> | |
50 </release> | |
51 </grit>'''), util.PathFromRoot('.')) | |
52 grd.SetOutputLanguage('en') | |
53 grd.RunGatherers() | |
54 output = util.StripBlankLinesAndComments(''.join( | |
55 resource_map.GetFormatter('resource_map_header')(grd, 'en', '.'))) | |
56 self.assertEqual('''\ | |
57 #include <stddef.h> | |
58 #ifndef GRIT_RESOURCE_MAP_STRUCT_ | |
59 #define GRIT_RESOURCE_MAP_STRUCT_ | |
60 struct GritResourceMap { | |
61 const char* const name; | |
62 int value; | |
63 }; | |
64 #endif // GRIT_RESOURCE_MAP_STRUCT_ | |
65 extern const GritResourceMap kTheRcHeader[]; | |
66 extern const size_t kTheRcHeaderSize;''', output) | |
67 output = util.StripBlankLinesAndComments(''.join( | |
68 resource_map.GetFormatter('resource_map_source')(grd, 'en', '.'))) | |
69 self.assertEqual('''\ | |
70 #include "the_resource_map_header.h" | |
71 #include "base/basictypes.h" | |
72 #include "the_rc_header.h" | |
73 const GritResourceMap kTheRcHeader[] = { | |
74 {"IDC_KLONKMENU", IDC_KLONKMENU}, | |
75 {"IDS_FIRSTPRESENT", IDS_FIRSTPRESENT}, | |
76 {"IDS_MISSING", IDS_MISSING}, | |
77 {"IDS_LANGUAGESPECIFIC", IDS_LANGUAGESPECIFIC}, | |
78 {"IDS_THIRDPRESENT", IDS_THIRDPRESENT}, | |
79 }; | |
80 const size_t kTheRcHeaderSize = arraysize(kTheRcHeader);''', output) | |
81 output = util.StripBlankLinesAndComments(''.join( | |
82 resource_map.GetFormatter('resource_file_map_source')(grd, 'en', '.'))) | |
83 self.assertEqual('''\ | |
84 #include "the_resource_map_header.h" | |
85 #include "base/basictypes.h" | |
86 #include "the_rc_header.h" | |
87 const GritResourceMap kTheRcHeader[] = { | |
88 {"grit/testdata/klonk.rc", IDC_KLONKMENU}, | |
89 {"abc", IDS_FIRSTPRESENT}, | |
90 {"def", IDS_MISSING}, | |
91 {"ghi", IDS_LANGUAGESPECIFIC}, | |
92 {"jkl", IDS_LANGUAGESPECIFIC}, | |
93 {"mno", IDS_THIRDPRESENT}, | |
94 }; | |
95 const size_t kTheRcHeaderSize = arraysize(kTheRcHeader);''', output) | |
96 | |
97 def testFormatResourceMapWithOutputAllEqualsFalseForStructures(self): | |
98 grd = grd_reader.Parse(StringIO.StringIO( | |
99 '''<?xml version="1.0" encoding="UTF-8"?> | |
100 <grit latest_public_release="2" source_lang_id="en" current_release="3" | |
101 base_dir="." output_all_resource_defines="false"> | |
102 <outputs> | |
103 <output type="rc_header" filename="the_rc_header.h" /> | |
104 <output type="resource_map_header" | |
105 filename="the_resource_map_header.h" /> | |
106 <output type="resource_map_source" | |
107 filename="the_resource_map_header.cc" /> | |
108 </outputs> | |
109 <release seq="3"> | |
110 <structures first_id="300"> | |
111 <structure type="chrome_scaled_image" name="IDR_KLONKMENU" | |
112 file="foo.png" /> | |
113 <if expr="False"> | |
114 <structure type="chrome_scaled_image" name="IDR_MISSING" | |
115 file="bar.png" /> | |
116 </if> | |
117 </structures> | |
118 </release> | |
119 </grit>'''), util.PathFromRoot('.')) | |
120 grd.SetOutputLanguage('en') | |
121 grd.RunGatherers() | |
122 output = util.StripBlankLinesAndComments(''.join( | |
123 resource_map.GetFormatter('resource_map_header')(grd, 'en', '.'))) | |
124 self.assertEqual('''\ | |
125 #include <stddef.h> | |
126 #ifndef GRIT_RESOURCE_MAP_STRUCT_ | |
127 #define GRIT_RESOURCE_MAP_STRUCT_ | |
128 struct GritResourceMap { | |
129 const char* const name; | |
130 int value; | |
131 }; | |
132 #endif // GRIT_RESOURCE_MAP_STRUCT_ | |
133 extern const GritResourceMap kTheRcHeader[]; | |
134 extern const size_t kTheRcHeaderSize;''', output) | |
135 output = util.StripBlankLinesAndComments(''.join( | |
136 resource_map.GetFormatter('resource_map_source')(grd, 'en', '.'))) | |
137 self.assertEqual('''\ | |
138 #include "the_resource_map_header.h" | |
139 #include "base/basictypes.h" | |
140 #include "the_rc_header.h" | |
141 const GritResourceMap kTheRcHeader[] = { | |
142 {"IDR_KLONKMENU", IDR_KLONKMENU}, | |
143 }; | |
144 const size_t kTheRcHeaderSize = arraysize(kTheRcHeader);''', output) | |
145 output = util.StripBlankLinesAndComments(''.join( | |
146 resource_map.GetFormatter('resource_map_source')(grd, 'en', '.'))) | |
147 self.assertEqual('''\ | |
148 #include "the_resource_map_header.h" | |
149 #include "base/basictypes.h" | |
150 #include "the_rc_header.h" | |
151 const GritResourceMap kTheRcHeader[] = { | |
152 {"IDR_KLONKMENU", IDR_KLONKMENU}, | |
153 }; | |
154 const size_t kTheRcHeaderSize = arraysize(kTheRcHeader);''', output) | |
155 | |
156 def testFormatResourceMapWithOutputAllEqualsFalseForIncludes(self): | |
157 grd = grd_reader.Parse(StringIO.StringIO( | |
158 '''<?xml version="1.0" encoding="UTF-8"?> | |
159 <grit latest_public_release="2" source_lang_id="en" current_release="3" | |
160 base_dir="." output_all_resource_defines="false"> | |
161 <outputs> | |
162 <output type="rc_header" filename="the_rc_header.h" /> | |
163 <output type="resource_map_header" | |
164 filename="the_resource_map_header.h" /> | |
165 </outputs> | |
166 <release seq="3"> | |
167 <structures first_id="300"> | |
168 <structure type="menu" name="IDC_KLONKMENU" | |
169 file="grit\\testdata\\klonk.rc" encoding="utf-16" /> | |
170 </structures> | |
171 <includes first_id="10000"> | |
172 <include type="foo" file="abc" name="IDS_FIRSTPRESENT" /> | |
173 <if expr="False"> | |
174 <include type="foo" file="def" name="IDS_MISSING" /> | |
175 </if> | |
176 <include type="foo" file="mno" name="IDS_THIRDPRESENT" /> | |
177 </includes> | |
178 </release> | |
179 </grit>'''), util.PathFromRoot('.')) | |
180 grd.SetOutputLanguage('en') | |
181 grd.RunGatherers() | |
182 output = util.StripBlankLinesAndComments(''.join( | |
183 resource_map.GetFormatter('resource_map_header')(grd, 'en', '.'))) | |
184 self.assertEqual('''\ | |
185 #include <stddef.h> | |
186 #ifndef GRIT_RESOURCE_MAP_STRUCT_ | |
187 #define GRIT_RESOURCE_MAP_STRUCT_ | |
188 struct GritResourceMap { | |
189 const char* const name; | |
190 int value; | |
191 }; | |
192 #endif // GRIT_RESOURCE_MAP_STRUCT_ | |
193 extern const GritResourceMap kTheRcHeader[]; | |
194 extern const size_t kTheRcHeaderSize;''', output) | |
195 output = util.StripBlankLinesAndComments(''.join( | |
196 resource_map.GetFormatter('resource_map_source')(grd, 'en', '.'))) | |
197 self.assertEqual('''\ | |
198 #include "the_resource_map_header.h" | |
199 #include "base/basictypes.h" | |
200 #include "the_rc_header.h" | |
201 const GritResourceMap kTheRcHeader[] = { | |
202 {"IDC_KLONKMENU", IDC_KLONKMENU}, | |
203 {"IDS_FIRSTPRESENT", IDS_FIRSTPRESENT}, | |
204 {"IDS_THIRDPRESENT", IDS_THIRDPRESENT}, | |
205 }; | |
206 const size_t kTheRcHeaderSize = arraysize(kTheRcHeader);''', output) | |
207 output = util.StripBlankLinesAndComments(''.join( | |
208 resource_map.GetFormatter('resource_file_map_source')(grd, 'en', '.'))) | |
209 self.assertEqual('''\ | |
210 #include "the_resource_map_header.h" | |
211 #include "base/basictypes.h" | |
212 #include "the_rc_header.h" | |
213 const GritResourceMap kTheRcHeader[] = { | |
214 {"grit/testdata/klonk.rc", IDC_KLONKMENU}, | |
215 {"abc", IDS_FIRSTPRESENT}, | |
216 {"mno", IDS_THIRDPRESENT}, | |
217 }; | |
218 const size_t kTheRcHeaderSize = arraysize(kTheRcHeader);''', output) | |
219 | |
220 def testFormatStringResourceMap(self): | |
221 grd = grd_reader.Parse(StringIO.StringIO( | |
222 '''<?xml version="1.0" encoding="UTF-8"?> | |
223 <grit latest_public_release="2" source_lang_id="en" current_release="3" | |
224 base_dir="."> | |
225 <outputs> | |
226 <output type="rc_header" filename="the_rc_header.h" /> | |
227 <output type="resource_map_header" filename="the_rc_map_header.h" /> | |
228 <output type="resource_map_source" filename="the_rc_map_source.cc" /> | |
229 </outputs> | |
230 <release seq="1" allow_pseudo="false"> | |
231 <messages fallback_to_english="true"> | |
232 <message name="IDS_PRODUCT_NAME" desc="The application name"> | |
233 Application | |
234 </message> | |
235 <if expr="True"> | |
236 <message name="IDS_DEFAULT_TAB_TITLE_TITLE_CASE" | |
237 desc="In Title Case: The default title in a tab."> | |
238 New Tab | |
239 </message> | |
240 </if> | |
241 <if expr="False"> | |
242 <message name="IDS_DEFAULT_TAB_TITLE" | |
243 desc="The default title in a tab."> | |
244 New tab | |
245 </message> | |
246 </if> | |
247 </messages> | |
248 </release> | |
249 </grit>'''), util.PathFromRoot('.')) | |
250 grd.SetOutputLanguage('en') | |
251 grd.RunGatherers() | |
252 output = util.StripBlankLinesAndComments(''.join( | |
253 resource_map.GetFormatter('resource_map_header')(grd, 'en', '.'))) | |
254 self.assertEqual('''\ | |
255 #include <stddef.h> | |
256 #ifndef GRIT_RESOURCE_MAP_STRUCT_ | |
257 #define GRIT_RESOURCE_MAP_STRUCT_ | |
258 struct GritResourceMap { | |
259 const char* const name; | |
260 int value; | |
261 }; | |
262 #endif // GRIT_RESOURCE_MAP_STRUCT_ | |
263 extern const GritResourceMap kTheRcHeader[]; | |
264 extern const size_t kTheRcHeaderSize;''', output) | |
265 output = util.StripBlankLinesAndComments(''.join( | |
266 resource_map.GetFormatter('resource_map_source')(grd, 'en', '.'))) | |
267 self.assertEqual('''\ | |
268 #include "the_rc_map_header.h" | |
269 #include "base/basictypes.h" | |
270 #include "the_rc_header.h" | |
271 const GritResourceMap kTheRcHeader[] = { | |
272 {"IDS_PRODUCT_NAME", IDS_PRODUCT_NAME}, | |
273 {"IDS_DEFAULT_TAB_TITLE_TITLE_CASE", IDS_DEFAULT_TAB_TITLE_TITLE_CASE}, | |
274 }; | |
275 const size_t kTheRcHeaderSize = arraysize(kTheRcHeader);''', output) | |
276 | |
277 | |
278 if __name__ == '__main__': | |
279 unittest.main() | |
OLD | NEW |