Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(982)

Side by Side Diff: build/android/gyp/java_cpp_enum_tests.py

Issue 659493003: Final step of the java_cpp_template -> java_cpp_enum migration. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mmenke+yfriedman feedback + more aosp fixes + don't run tests as part of the build Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Tests for enum_preprocess.py. 6 """Tests for enum_preprocess.py.
7 7
8 This test suite containss various tests for the C++ -> Java enum generator. 8 This test suite containss various tests for the C++ -> Java enum generator.
9 """ 9 """
10 10
11 import collections 11 import collections
12 import optparse
13 import os
14 import sys
12 import unittest 15 import unittest
16
13 from java_cpp_enum import EnumDefinition, GenerateOutput, HeaderParser 17 from java_cpp_enum import EnumDefinition, GenerateOutput, HeaderParser
14 18
19 sys.path.append(os.path.join(os.path.dirname(__file__), "gyp"))
20 from util import build_utils
21
15 class TestPreprocess(unittest.TestCase): 22 class TestPreprocess(unittest.TestCase):
16 def testOutput(self): 23 def testOutput(self):
17 definition = EnumDefinition(class_name='ClassName', 24 definition = EnumDefinition(original_enum_name='ClassName',
18 class_package='some.package', 25 class_package='some.package',
19 entries=[('E1', 1), ('E2', '2 << 2')]) 26 entries=[('E1', 1), ('E2', '2 << 2')])
20 output = GenerateOutput('path/to/file', definition) 27 output = GenerateOutput('path/to/file', definition)
21 expected = """ 28 expected = """
22 // Copyright 2014 The Chromium Authors. All rights reserved. 29 // Copyright 2014 The Chromium Authors. All rights reserved.
23 // Use of this source code is governed by a BSD-style license that can be 30 // Use of this source code is governed by a BSD-style license that can be
24 // found in the LICENSE file. 31 // found in the LICENSE file.
25 32
26 // This file is autogenerated by 33 // This file is autogenerated by
27 // build/android/gyp/java_cpp_enum_tests.py 34 // build/android/gyp/java_cpp_enum_tests.py
(...skipping 19 matching lines...) Expand all
47 """.split('\n') 54 """.split('\n')
48 definitions = HeaderParser(test_data).ParseDefinitions() 55 definitions = HeaderParser(test_data).ParseDefinitions()
49 self.assertEqual(1, len(definitions)) 56 self.assertEqual(1, len(definitions))
50 definition = definitions[0] 57 definition = definitions[0]
51 self.assertEqual('EnumName', definition.class_name) 58 self.assertEqual('EnumName', definition.class_name)
52 self.assertEqual('test.namespace', definition.class_package) 59 self.assertEqual('test.namespace', definition.class_package)
53 self.assertEqual(collections.OrderedDict([('VALUE_ZERO', 0), 60 self.assertEqual(collections.OrderedDict([('VALUE_ZERO', 0),
54 ('VALUE_ONE', 1)]), 61 ('VALUE_ONE', 1)]),
55 definition.entries) 62 definition.entries)
56 63
64 def testParseBitShifts(self):
65 test_data = """
66 // GENERATED_JAVA_ENUM_PACKAGE: test.namespace
67 enum EnumName {
68 VALUE_ZERO = 1 << 0,
69 VALUE_ONE = 1 << 1,
70 };
71 """.split('\n')
72 definitions = HeaderParser(test_data).ParseDefinitions()
73 self.assertEqual(1, len(definitions))
74 definition = definitions[0]
75 self.assertEqual('EnumName', definition.class_name)
76 self.assertEqual('test.namespace', definition.class_package)
77 self.assertEqual(collections.OrderedDict([('VALUE_ZERO', '1 << 0'),
78 ('VALUE_ONE', '1 << 1')]),
79 definition.entries)
80
81 def testParseClassNameOverride(self):
82 test_data = """
83 // GENERATED_JAVA_ENUM_PACKAGE: test.namespace
84 // GENERATED_JAVA_CLASS_NAME_OVERRIDE: OverrideName
85 enum EnumName {
86 FOO
87 };
88
89 // GENERATED_JAVA_ENUM_PACKAGE: test.namespace
90 // GENERATED_JAVA_CLASS_NAME_OVERRIDE: OtherOverride
91 enum PrefixTest {
92 PREFIX_TEST_A,
93 PREFIX_TEST_B,
94 };
95 """.split('\n')
96 definitions = HeaderParser(test_data).ParseDefinitions()
97 self.assertEqual(2, len(definitions))
98 definition = definitions[0]
99 self.assertEqual('OverrideName', definition.class_name)
100
101 definition = definitions[1]
102 self.assertEqual('OtherOverride', definition.class_name)
103 self.assertEqual(collections.OrderedDict([('A', 0),
104 ('B', 1)]),
105 definition.entries)
106
57 def testParseTwoEnums(self): 107 def testParseTwoEnums(self):
58 test_data = """ 108 test_data = """
59 // GENERATED_JAVA_ENUM_PACKAGE: test.namespace 109 // GENERATED_JAVA_ENUM_PACKAGE: test.namespace
60 enum EnumOne { 110 enum EnumOne {
61 ENUM_ONE_A = 1, 111 ENUM_ONE_A = 1,
62 // Comment there 112 // Comment there
63 ENUM_ONE_B = A, 113 ENUM_ONE_B = A,
64 }; 114 };
65 115
66 enum EnumIgnore { 116 enum EnumIgnore {
(...skipping 17 matching lines...) Expand all
84 definition.entries) 134 definition.entries)
85 135
86 definition = definitions[1] 136 definition = definitions[1]
87 self.assertEqual('EnumTwo', definition.class_name) 137 self.assertEqual('EnumTwo', definition.class_name)
88 self.assertEqual('other.package', definition.class_package) 138 self.assertEqual('other.package', definition.class_package)
89 self.assertEqual(collections.OrderedDict([('A', 0), 139 self.assertEqual(collections.OrderedDict([('A', 0),
90 ('B', 1)]), 140 ('B', 1)]),
91 definition.entries) 141 definition.entries)
92 142
93 def testEnumValueAssignmentNoneDefined(self): 143 def testEnumValueAssignmentNoneDefined(self):
94 definition = EnumDefinition('c', 'p', []) 144 definition = EnumDefinition(original_enum_name='c', class_package='p')
95 definition.AppendEntry('A', None) 145 definition.AppendEntry('A', None)
96 definition.AppendEntry('B', None) 146 definition.AppendEntry('B', None)
97 definition.AppendEntry('C', None) 147 definition.AppendEntry('C', None)
98 definition.Finalize() 148 definition.Finalize()
99 self.assertEqual(collections.OrderedDict([('A', 0), 149 self.assertEqual(collections.OrderedDict([('A', 0),
100 ('B', 1), 150 ('B', 1),
101 ('C', 2)]), 151 ('C', 2)]),
102 definition.entries) 152 definition.entries)
103 153
104 def testEnumValueAssignmentAllDefined(self): 154 def testEnumValueAssignmentAllDefined(self):
105 definition = EnumDefinition('c', 'p', []) 155 definition = EnumDefinition(original_enum_name='c', class_package='p')
106 definition.AppendEntry('A', '1') 156 definition.AppendEntry('A', '1')
107 definition.AppendEntry('B', '2') 157 definition.AppendEntry('B', '2')
108 definition.AppendEntry('C', '3') 158 definition.AppendEntry('C', '3')
109 definition.Finalize() 159 definition.Finalize()
110 self.assertEqual(collections.OrderedDict([('A', '1'), 160 self.assertEqual(collections.OrderedDict([('A', '1'),
111 ('B', '2'), 161 ('B', '2'),
112 ('C', '3')]), 162 ('C', '3')]),
113 definition.entries) 163 definition.entries)
114 164
115 def testEnumValueAssignmentReferences(self): 165 def testEnumValueAssignmentReferences(self):
116 definition = EnumDefinition('c', 'p', []) 166 definition = EnumDefinition(original_enum_name='c', class_package='p')
117 definition.AppendEntry('A', None) 167 definition.AppendEntry('A', None)
118 definition.AppendEntry('B', 'A') 168 definition.AppendEntry('B', 'A')
119 definition.AppendEntry('C', None) 169 definition.AppendEntry('C', None)
120 definition.AppendEntry('D', 'C') 170 definition.AppendEntry('D', 'C')
121 definition.Finalize() 171 definition.Finalize()
122 self.assertEqual(collections.OrderedDict([('A', 0), 172 self.assertEqual(collections.OrderedDict([('A', 0),
123 ('B', 0), 173 ('B', 0),
124 ('C', 1), 174 ('C', 1),
125 ('D', 1)]), 175 ('D', 1)]),
126 definition.entries) 176 definition.entries)
127 177
178 def testEnumValueAssignmentSet(self):
179 definition = EnumDefinition(original_enum_name='c', class_package='p')
180 definition.AppendEntry('A', None)
181 definition.AppendEntry('B', '2')
182 definition.AppendEntry('C', None)
183 definition.Finalize()
184 self.assertEqual(collections.OrderedDict([('A', 0),
185 ('B', 2),
186 ('C', 3)]),
187 definition.entries)
188
189 def testEnumValueAssignmentSetReferences(self):
190 definition = EnumDefinition(original_enum_name='c', class_package='p')
191 definition.AppendEntry('A', None)
192 definition.AppendEntry('B', 'A')
193 definition.AppendEntry('C', 'B')
194 definition.AppendEntry('D', None)
195 definition.Finalize()
196 self.assertEqual(collections.OrderedDict([('A', 0),
197 ('B', 0),
198 ('C', 0),
199 ('D', 1)]),
200 definition.entries)
201
128 def testEnumValueAssignmentRaises(self): 202 def testEnumValueAssignmentRaises(self):
129 definition = EnumDefinition('c', 'p', []) 203 definition = EnumDefinition(original_enum_name='c', class_package='p')
130 definition.AppendEntry('A', None) 204 definition.AppendEntry('A', None)
131 definition.AppendEntry('B', '1') 205 definition.AppendEntry('B', 'foo')
132 definition.AppendEntry('C', None) 206 definition.AppendEntry('C', None)
133 with self.assertRaises(Exception): 207 with self.assertRaises(Exception):
134 definition.Finalize() 208 definition.Finalize()
135 209
136 def testExplicitPrefixStripping(self): 210 def testExplicitPrefixStripping(self):
137 definition = EnumDefinition('c', 'p', []) 211 definition = EnumDefinition(original_enum_name='c', class_package='p')
138 definition.AppendEntry('P_A', None) 212 definition.AppendEntry('P_A', None)
139 definition.AppendEntry('B', None) 213 definition.AppendEntry('B', None)
140 definition.AppendEntry('P_C', None) 214 definition.AppendEntry('P_C', None)
215 definition.AppendEntry('P_LAST', 'P_C')
141 definition.prefix_to_strip = 'P_' 216 definition.prefix_to_strip = 'P_'
142 definition.Finalize() 217 definition.Finalize()
143 self.assertEqual(['A', 'B', 'C'], definition.entries.keys()) 218 self.assertEqual(collections.OrderedDict([('A', 0),
219 ('B', 1),
220 ('C', 2),
221 ('LAST', 2)]),
222 definition.entries)
144 223
145 def testImplicitPrefixStripping(self): 224 def testImplicitPrefixStripping(self):
146 definition = EnumDefinition('ClassName', 'p', []) 225 definition = EnumDefinition(original_enum_name='ClassName',
226 class_package='p')
147 definition.AppendEntry('CLASS_NAME_A', None) 227 definition.AppendEntry('CLASS_NAME_A', None)
148 definition.AppendEntry('CLASS_NAME_B', None) 228 definition.AppendEntry('CLASS_NAME_B', None)
149 definition.AppendEntry('CLASS_NAME_C', None) 229 definition.AppendEntry('CLASS_NAME_C', None)
230 definition.AppendEntry('CLASS_NAME_LAST', 'CLASS_NAME_C')
150 definition.Finalize() 231 definition.Finalize()
151 self.assertEqual(['A', 'B', 'C'], definition.entries.keys()) 232 self.assertEqual(collections.OrderedDict([('A', 0),
233 ('B', 1),
234 ('C', 2),
235 ('LAST', 2)]),
236 definition.entries)
152 237
153 def testImplicitPrefixStrippingRequiresAllConstantsToBePrefixed(self): 238 def testImplicitPrefixStrippingRequiresAllConstantsToBePrefixed(self):
154 definition = EnumDefinition('Name', 'p', []) 239 definition = EnumDefinition(original_enum_name='Name',
240 class_package='p')
155 definition.AppendEntry('A', None) 241 definition.AppendEntry('A', None)
156 definition.AppendEntry('B', None) 242 definition.AppendEntry('B', None)
157 definition.AppendEntry('NAME_LAST', None) 243 definition.AppendEntry('NAME_LAST', None)
158 definition.Finalize() 244 definition.Finalize()
159 self.assertEqual(['A', 'B', 'NAME_LAST'], definition.entries.keys()) 245 self.assertEqual(['A', 'B', 'NAME_LAST'], definition.entries.keys())
160 246
247 def main(argv):
248 parser = optparse.OptionParser()
249 parser.add_option("--stamp", help="File to touch on success.")
250 options, _ = parser.parse_args(argv)
251
252 suite = unittest.TestLoader().loadTestsFromTestCase(TestPreprocess)
253 unittest.TextTestRunner(verbosity=0).run(suite)
254
255 if options.stamp:
256 build_utils.Touch(options.stamp)
161 257
162 if __name__ == '__main__': 258 if __name__ == '__main__':
163 unittest.main() 259 main(sys.argv[1:])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698