OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2011 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.gather.policy_json''' | |
7 | |
8 import os | |
9 import re | |
10 import sys | |
11 if __name__ == '__main__': | |
12 sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) | |
13 | |
14 import unittest | |
15 import StringIO | |
16 | |
17 from grit.gather import policy_json | |
18 | |
19 class PolicyJsonUnittest(unittest.TestCase): | |
20 | |
21 def GetExpectedOutput(self, original): | |
22 expected = eval(original) | |
23 for key, message in expected['messages'].iteritems(): | |
24 del message['desc'] | |
25 return expected | |
26 | |
27 def testEmpty(self): | |
28 original = "{'policy_definitions': [], 'messages': {}}" | |
29 gatherer = policy_json.PolicyJson(StringIO.StringIO(original)) | |
30 gatherer.Parse() | |
31 self.failUnless(len(gatherer.GetCliques()) == 0) | |
32 self.failUnless(eval(original) == eval(gatherer.Translate('en'))) | |
33 | |
34 def testGeneralPolicy(self): | |
35 original = ( | |
36 "{" | |
37 " 'policy_definitions': [" | |
38 " {" | |
39 " 'name': 'HomepageLocation'," | |
40 " 'type': 'string'," | |
41 " 'supported_on': ['chrome.*:8-']," | |
42 " 'features': {'dynamic_refresh': 1}," | |
43 " 'example_value': 'http://chromium.org'," | |
44 " 'caption': 'nothing special 1'," | |
45 " 'desc': 'nothing special 2'," | |
46 " 'label': 'nothing special 3'," | |
47 " }," | |
48 " ]," | |
49 " 'messages': {" | |
50 " 'msg_identifier': {" | |
51 " 'text': 'nothing special 3'," | |
52 " 'desc': 'nothing special descr 3'," | |
53 " }" | |
54 " }" | |
55 "}") | |
56 gatherer = policy_json.PolicyJson(StringIO.StringIO(original)) | |
57 gatherer.Parse() | |
58 self.failUnless(len(gatherer.GetCliques()) == 4) | |
59 expected = self.GetExpectedOutput(original) | |
60 self.failUnless(expected == eval(gatherer.Translate('en'))) | |
61 | |
62 def testEnum(self): | |
63 original = ( | |
64 "{" | |
65 " 'policy_definitions': [" | |
66 " {" | |
67 " 'name': 'Policy1'," | |
68 " 'items': [" | |
69 " {" | |
70 " 'name': 'Item1'," | |
71 " 'caption': 'nothing special'," | |
72 " }" | |
73 " ]" | |
74 " }," | |
75 " ]," | |
76 " 'messages': {}" | |
77 "}") | |
78 gatherer = policy_json.PolicyJson(StringIO.StringIO(original)) | |
79 gatherer.Parse() | |
80 self.failUnless(len(gatherer.GetCliques()) == 1) | |
81 expected = self.GetExpectedOutput(original) | |
82 self.failUnless(expected == eval(gatherer.Translate('en'))) | |
83 | |
84 def testSubPolicy(self): | |
85 original = ( | |
86 "{" | |
87 " 'policy_definitions': [" | |
88 " {" | |
89 " 'policies': [" | |
90 " {" | |
91 " 'name': 'Policy1'," | |
92 " 'caption': 'nothing special'," | |
93 " }" | |
94 " ]" | |
95 " }," | |
96 " ]," | |
97 " 'messages': {}" | |
98 "}") | |
99 gatherer = policy_json.PolicyJson(StringIO.StringIO(original)) | |
100 gatherer.Parse() | |
101 self.failUnless(len(gatherer.GetCliques()) == 1) | |
102 expected = self.GetExpectedOutput(original) | |
103 self.failUnless(expected == eval(gatherer.Translate('en'))) | |
104 | |
105 def testEscapingAndLineBreaks(self): | |
106 original = """{ | |
107 'policy_definitions': [], | |
108 'messages': { | |
109 'msg1': { | |
110 # The following line will contain two backslash characters when it | |
111 # ends up in eval(). | |
112 'text': '''backslashes, Sir? \\\\''', | |
113 'desc': '', | |
114 }, | |
115 'msg2': { | |
116 'text': '''quotes, Madam? "''', | |
117 'desc': '', | |
118 }, | |
119 'msg3': { | |
120 # The following line will contain two backslash characters when it | |
121 # ends up in eval(). | |
122 'text': 'backslashes, Sir? \\\\', | |
123 'desc': '', | |
124 }, | |
125 'msg4': { | |
126 'text': "quotes, Madam? '", | |
127 'desc': '', | |
128 }, | |
129 'msg5': { | |
130 'text': '''what happens | |
131 with a newline?''', | |
132 'desc': '' | |
133 }, | |
134 'msg6': { | |
135 # The following line will contain a backslash+n when it ends up in | |
136 # eval(). | |
137 'text': 'what happens\\nwith a newline? (Episode 1)', | |
138 'desc': '' | |
139 } | |
140 } | |
141 }""" | |
142 gatherer = policy_json.PolicyJson(StringIO.StringIO(original)) | |
143 gatherer.Parse() | |
144 self.failUnless(len(gatherer.GetCliques()) == 6) | |
145 expected = self.GetExpectedOutput(original) | |
146 self.failUnless(expected == eval(gatherer.Translate('en'))) | |
147 | |
148 def testPlaceholders(self): | |
149 original = """{ | |
150 'policy_definitions': [ | |
151 { | |
152 'name': 'Policy1', | |
153 'caption': '''Please install | |
154 <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''', | |
155 }, | |
156 ], | |
157 'messages': {} | |
158 }""" | |
159 gatherer = policy_json.PolicyJson(StringIO.StringIO(original)) | |
160 gatherer.Parse() | |
161 self.failUnless(len(gatherer.GetCliques()) == 1) | |
162 expected = eval(re.sub('<ph.*ph>', '$1', original)) | |
163 self.failUnless(expected == eval(gatherer.Translate('en'))) | |
164 self.failUnless(gatherer.GetCliques()[0].translateable) | |
165 msg = gatherer.GetCliques()[0].GetMessage() | |
166 self.failUnless(len(msg.GetPlaceholders()) == 1) | |
167 ph = msg.GetPlaceholders()[0] | |
168 self.failUnless(ph.GetOriginal() == '$1') | |
169 self.failUnless(ph.GetPresentation() == 'PRODUCT_NAME') | |
170 self.failUnless(ph.GetExample() == 'Google Chrome') | |
171 | |
172 def testGetDescription(self): | |
173 gatherer = policy_json.PolicyJson({}) | |
174 self.assertEquals( | |
175 gatherer._GetDescription({'name': 'Policy1'}, 'policy', None, 'desc'), | |
176 'Description of the policy named Policy1') | |
177 self.assertEquals( | |
178 gatherer._GetDescription({'name': 'Plcy2'}, 'policy', None, 'caption'), | |
179 'Caption of the policy named Plcy2') | |
180 self.assertEquals( | |
181 gatherer._GetDescription({'name': 'Plcy3'}, 'policy', None, 'label'), | |
182 'Label of the policy named Plcy3') | |
183 self.assertEquals( | |
184 gatherer._GetDescription({'name': 'Item'}, 'enum_item', | |
185 {'name': 'Policy'}, 'caption'), | |
186 'Caption of the option named Item in policy Policy') | |
187 | |
188 | |
189 if __name__ == '__main__': | |
190 unittest.main() | |
OLD | NEW |