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

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

Issue 1273173002: Added Network Quality Estimator Real-time interface to Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nit from mef Created 5 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
(...skipping 10 matching lines...) Expand all
21 sys.path.append(os.path.join(os.path.dirname(__file__), "gyp")) 21 sys.path.append(os.path.join(os.path.dirname(__file__), "gyp"))
22 from util import build_utils 22 from util import build_utils
23 23
24 class TestPreprocess(unittest.TestCase): 24 class TestPreprocess(unittest.TestCase):
25 def testOutput(self): 25 def testOutput(self):
26 definition = EnumDefinition(original_enum_name='ClassName', 26 definition = EnumDefinition(original_enum_name='ClassName',
27 enum_package='some.package', 27 enum_package='some.package',
28 entries=[('E1', 1), ('E2', '2 << 2')]) 28 entries=[('E1', 1), ('E2', '2 << 2')])
29 output = GenerateOutput('path/to/file', definition) 29 output = GenerateOutput('path/to/file', definition)
30 expected = """ 30 expected = """
31 // Copyright 2014 The Chromium Authors. All rights reserved. 31 // Copyright 2015 The Chromium Authors. All rights reserved.
32 // Use of this source code is governed by a BSD-style license that can be 32 // Use of this source code is governed by a BSD-style license that can be
33 // found in the LICENSE file. 33 // found in the LICENSE file.
34 34
35 // This file is autogenerated by 35 // This file is autogenerated by
36 // %s 36 // %s
37 // From 37 // From
38 // path/to/file 38 // path/to/file
39 39
40 package some.package; 40 package some.package;
41 41
(...skipping 14 matching lines...) Expand all
56 """.split('\n') 56 """.split('\n')
57 definitions = HeaderParser(test_data).ParseDefinitions() 57 definitions = HeaderParser(test_data).ParseDefinitions()
58 self.assertEqual(1, len(definitions)) 58 self.assertEqual(1, len(definitions))
59 definition = definitions[0] 59 definition = definitions[0]
60 self.assertEqual('EnumName', definition.class_name) 60 self.assertEqual('EnumName', definition.class_name)
61 self.assertEqual('test.namespace', definition.enum_package) 61 self.assertEqual('test.namespace', definition.enum_package)
62 self.assertEqual(collections.OrderedDict([('VALUE_ZERO', 0), 62 self.assertEqual(collections.OrderedDict([('VALUE_ZERO', 0),
63 ('VALUE_ONE', 1)]), 63 ('VALUE_ONE', 1)]),
64 definition.entries) 64 definition.entries)
65 65
66 def testParseSimpleEnumWithComments(self):
67 test_data = """
68 // GENERATED_JAVA_ENUM_PACKAGE: test.namespace
69 enum EnumName {
70 // zero
71 VALUE_ZERO,
72
73 VALUE_ONE,
74
75 // two
76 // too
77 VALUE_TWO,
78 };
79 """.split('\n')
80 definitions = HeaderParser(test_data).ParseDefinitions()
81 self.assertEqual(1, len(definitions))
82 definition = definitions[0]
83 self.assertEqual('EnumName', definition.class_name)
84 self.assertEqual('test.namespace', definition.enum_package)
85 self.assertEqual(collections.OrderedDict([('VALUE_ZERO', 0),
86 ('VALUE_ONE', 1),
87 ('VALUE_TWO', 2)]),
88 definition.entries)
89 self.assertEqual(collections.OrderedDict([('VALUE_ZERO', [' zero']),
90 ('VALUE_ONE', []),
91 ('VALUE_TWO', [' two',' too'])]),
92 definition.comments)
93
66 def testParseBitShifts(self): 94 def testParseBitShifts(self):
67 test_data = """ 95 test_data = """
68 // GENERATED_JAVA_ENUM_PACKAGE: test.namespace 96 // GENERATED_JAVA_ENUM_PACKAGE: test.namespace
69 enum EnumName { 97 enum EnumName {
70 VALUE_ZERO = 1 << 0, 98 VALUE_ZERO = 1 << 0,
71 VALUE_ONE = 1 << 1, 99 VALUE_ONE = 1 << 1,
72 }; 100 };
73 """.split('\n') 101 """.split('\n')
74 definitions = HeaderParser(test_data).ParseDefinitions() 102 definitions = HeaderParser(test_data).ParseDefinitions()
75 self.assertEqual(1, len(definitions)) 103 self.assertEqual(1, len(definitions))
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 // GENERATED_JAVA_ENUM_PACKAGE: ( 331 // GENERATED_JAVA_ENUM_PACKAGE: (
304 enum Foo { 332 enum Foo {
305 FOO_A, 333 FOO_A,
306 }; 334 };
307 """.split('\n') 335 """.split('\n')
308 with self.assertRaises(Exception): 336 with self.assertRaises(Exception):
309 HeaderParser(test_data).ParseDefinitions() 337 HeaderParser(test_data).ParseDefinitions()
310 338
311 def testEnumValueAssignmentNoneDefined(self): 339 def testEnumValueAssignmentNoneDefined(self):
312 definition = EnumDefinition(original_enum_name='c', enum_package='p') 340 definition = EnumDefinition(original_enum_name='c', enum_package='p')
313 definition.AppendEntry('A', None) 341 definition.AppendEntry('A', None, [' foo'])
314 definition.AppendEntry('B', None) 342 definition.AppendEntry('B', None, [])
315 definition.AppendEntry('C', None) 343 definition.AppendEntry('C', None, [' bar', ' goo'])
316 definition.Finalize() 344 definition.Finalize()
317 self.assertEqual(collections.OrderedDict([('A', 0), 345 self.assertEqual(collections.OrderedDict([('A', 0),
318 ('B', 1), 346 ('B', 1),
319 ('C', 2)]), 347 ('C', 2)]),
320 definition.entries) 348 definition.entries)
349 self.assertEqual(collections.OrderedDict([('A', [' foo']),
350 ('B', []),
351 ('C', [' bar', ' goo'])]),
352 definition.comments)
321 353
322 def testEnumValueAssignmentAllDefined(self): 354 def testEnumValueAssignmentAllDefined(self):
323 definition = EnumDefinition(original_enum_name='c', enum_package='p') 355 definition = EnumDefinition(original_enum_name='c', enum_package='p')
324 definition.AppendEntry('A', '1') 356 definition.AppendEntry('A', '1', [])
325 definition.AppendEntry('B', '2') 357 definition.AppendEntry('B', '2', [])
326 definition.AppendEntry('C', '3') 358 definition.AppendEntry('C', '3', [])
327 definition.Finalize() 359 definition.Finalize()
328 self.assertEqual(collections.OrderedDict([('A', '1'), 360 self.assertEqual(collections.OrderedDict([('A', '1'),
329 ('B', '2'), 361 ('B', '2'),
330 ('C', '3')]), 362 ('C', '3')]),
331 definition.entries) 363 definition.entries)
332 364
333 def testEnumValueAssignmentReferences(self): 365 def testEnumValueAssignmentReferences(self):
334 definition = EnumDefinition(original_enum_name='c', enum_package='p') 366 definition = EnumDefinition(original_enum_name='c', enum_package='p')
335 definition.AppendEntry('A', None) 367 definition.AppendEntry('A', None, [])
336 definition.AppendEntry('B', 'A') 368 definition.AppendEntry('B', 'A', [])
337 definition.AppendEntry('C', None) 369 definition.AppendEntry('C', None, [])
338 definition.AppendEntry('D', 'C') 370 definition.AppendEntry('D', 'C', [])
339 definition.Finalize() 371 definition.Finalize()
340 self.assertEqual(collections.OrderedDict([('A', 0), 372 self.assertEqual(collections.OrderedDict([('A', 0),
341 ('B', 0), 373 ('B', 0),
342 ('C', 1), 374 ('C', 1),
343 ('D', 1)]), 375 ('D', 1)]),
344 definition.entries) 376 definition.entries)
345 377
346 def testEnumValueAssignmentSet(self): 378 def testEnumValueAssignmentSet(self):
347 definition = EnumDefinition(original_enum_name='c', enum_package='p') 379 definition = EnumDefinition(original_enum_name='c', enum_package='p')
348 definition.AppendEntry('A', None) 380 definition.AppendEntry('A', None, [])
349 definition.AppendEntry('B', '2') 381 definition.AppendEntry('B', '2', [])
350 definition.AppendEntry('C', None) 382 definition.AppendEntry('C', None, [])
351 definition.Finalize() 383 definition.Finalize()
352 self.assertEqual(collections.OrderedDict([('A', 0), 384 self.assertEqual(collections.OrderedDict([('A', 0),
353 ('B', 2), 385 ('B', 2),
354 ('C', 3)]), 386 ('C', 3)]),
355 definition.entries) 387 definition.entries)
356 388
357 def testEnumValueAssignmentSetReferences(self): 389 def testEnumValueAssignmentSetReferences(self):
358 definition = EnumDefinition(original_enum_name='c', enum_package='p') 390 definition = EnumDefinition(original_enum_name='c', enum_package='p')
359 definition.AppendEntry('A', None) 391 definition.AppendEntry('A', None, [])
360 definition.AppendEntry('B', 'A') 392 definition.AppendEntry('B', 'A', [])
361 definition.AppendEntry('C', 'B') 393 definition.AppendEntry('C', 'B', [])
362 definition.AppendEntry('D', None) 394 definition.AppendEntry('D', None, [])
363 definition.Finalize() 395 definition.Finalize()
364 self.assertEqual(collections.OrderedDict([('A', 0), 396 self.assertEqual(collections.OrderedDict([('A', 0),
365 ('B', 0), 397 ('B', 0),
366 ('C', 0), 398 ('C', 0),
367 ('D', 1)]), 399 ('D', 1)]),
368 definition.entries) 400 definition.entries)
369 401
370 def testEnumValueAssignmentRaises(self): 402 def testEnumValueAssignmentRaises(self):
371 definition = EnumDefinition(original_enum_name='c', enum_package='p') 403 definition = EnumDefinition(original_enum_name='c', enum_package='p')
372 definition.AppendEntry('A', None) 404 definition.AppendEntry('A', None, [])
373 definition.AppendEntry('B', 'foo') 405 definition.AppendEntry('B', 'foo', [])
374 definition.AppendEntry('C', None) 406 definition.AppendEntry('C', None, [])
375 with self.assertRaises(Exception): 407 with self.assertRaises(Exception):
376 definition.Finalize() 408 definition.Finalize()
377 409
378 def testExplicitPrefixStripping(self): 410 def testExplicitPrefixStripping(self):
379 definition = EnumDefinition(original_enum_name='c', enum_package='p') 411 definition = EnumDefinition(original_enum_name='c', enum_package='p')
380 definition.AppendEntry('P_A', None) 412 definition.AppendEntry('P_A', None, [])
381 definition.AppendEntry('B', None) 413 definition.AppendEntry('B', None, [])
382 definition.AppendEntry('P_C', None) 414 definition.AppendEntry('P_C', None, [])
383 definition.AppendEntry('P_LAST', 'P_C') 415 definition.AppendEntry('P_LAST', 'P_C', [])
384 definition.prefix_to_strip = 'P_' 416 definition.prefix_to_strip = 'P_'
385 definition.Finalize() 417 definition.Finalize()
386 self.assertEqual(collections.OrderedDict([('A', 0), 418 self.assertEqual(collections.OrderedDict([('A', 0),
387 ('B', 1), 419 ('B', 1),
388 ('C', 2), 420 ('C', 2),
389 ('LAST', 2)]), 421 ('LAST', 2)]),
390 definition.entries) 422 definition.entries)
391 423
392 def testImplicitPrefixStripping(self): 424 def testImplicitPrefixStripping(self):
393 definition = EnumDefinition(original_enum_name='ClassName', 425 definition = EnumDefinition(original_enum_name='ClassName',
394 enum_package='p') 426 enum_package='p')
395 definition.AppendEntry('CLASS_NAME_A', None) 427 definition.AppendEntry('CLASS_NAME_A', None, [])
396 definition.AppendEntry('CLASS_NAME_B', None) 428 definition.AppendEntry('CLASS_NAME_B', None, [])
397 definition.AppendEntry('CLASS_NAME_C', None) 429 definition.AppendEntry('CLASS_NAME_C', None, [])
398 definition.AppendEntry('CLASS_NAME_LAST', 'CLASS_NAME_C') 430 definition.AppendEntry('CLASS_NAME_LAST', 'CLASS_NAME_C', [])
399 definition.Finalize() 431 definition.Finalize()
400 self.assertEqual(collections.OrderedDict([('A', 0), 432 self.assertEqual(collections.OrderedDict([('A', 0),
401 ('B', 1), 433 ('B', 1),
402 ('C', 2), 434 ('C', 2),
403 ('LAST', 2)]), 435 ('LAST', 2)]),
404 definition.entries) 436 definition.entries)
405 437
406 def testImplicitPrefixStrippingRequiresAllConstantsToBePrefixed(self): 438 def testImplicitPrefixStrippingRequiresAllConstantsToBePrefixed(self):
407 definition = EnumDefinition(original_enum_name='Name', 439 definition = EnumDefinition(original_enum_name='Name',
408 enum_package='p') 440 enum_package='p')
409 definition.AppendEntry('A', None) 441 definition.AppendEntry('A', None, [])
410 definition.AppendEntry('B', None) 442 definition.AppendEntry('B', None, [])
411 definition.AppendEntry('NAME_LAST', None) 443 definition.AppendEntry('NAME_LAST', None, [])
412 definition.Finalize() 444 definition.Finalize()
413 self.assertEqual(['A', 'B', 'NAME_LAST'], definition.entries.keys()) 445 self.assertEqual(['A', 'B', 'NAME_LAST'], definition.entries.keys())
414 446
415 def testGenerateThrowsOnEmptyInput(self): 447 def testGenerateThrowsOnEmptyInput(self):
416 with self.assertRaises(Exception): 448 with self.assertRaises(Exception):
417 original_do_parse = java_cpp_enum.DoParseHeaderFile 449 original_do_parse = java_cpp_enum.DoParseHeaderFile
418 try: 450 try:
419 java_cpp_enum.DoParseHeaderFile = lambda _: [] 451 java_cpp_enum.DoParseHeaderFile = lambda _: []
420 java_cpp_enum.DoGenerate('dir', ['file']) 452 java_cpp_enum.DoGenerate('dir', ['file'])
421 finally: 453 finally:
422 java_cpp_enum.DoParseHeaderFile = original_do_parse 454 java_cpp_enum.DoParseHeaderFile = original_do_parse
423 455
424 def main(argv): 456 def main(argv):
425 parser = optparse.OptionParser() 457 parser = optparse.OptionParser()
426 parser.add_option("--stamp", help="File to touch on success.") 458 parser.add_option("--stamp", help="File to touch on success.")
427 options, _ = parser.parse_args(argv) 459 options, _ = parser.parse_args(argv)
428 460
429 suite = unittest.TestLoader().loadTestsFromTestCase(TestPreprocess) 461 suite = unittest.TestLoader().loadTestsFromTestCase(TestPreprocess)
430 unittest.TextTestRunner(verbosity=0).run(suite) 462 unittest.TextTestRunner(verbosity=0).run(suite)
431 463
432 if options.stamp: 464 if options.stamp:
433 build_utils.Touch(options.stamp) 465 build_utils.Touch(options.stamp)
434 466
435 if __name__ == '__main__': 467 if __name__ == '__main__':
436 main(sys.argv[1:]) 468 main(sys.argv[1:])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698