Index: build/android/gyp/java_cpp_enum_tests.py |
diff --git a/build/android/gyp/java_cpp_enum_tests.py b/build/android/gyp/java_cpp_enum_tests.py |
index 8d9e60de698d6699072b1efd22e8491bfdc9a8d7..cd6e1ee1835665dc21a37a71fd43ca8590059df4 100755 |
--- a/build/android/gyp/java_cpp_enum_tests.py |
+++ b/build/android/gyp/java_cpp_enum_tests.py |
@@ -97,9 +97,16 @@ public @interface ClassName { |
VALUE_ZERO = 1 << 0, |
VALUE_ONE = 1 << 1, |
}; |
+ |
+ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
+ enum EnumName { |
+ ENUM_NAME_ZERO = 1 << 0, |
+ ENUM_NAME_ONE = 1 << 1, |
+ ENUM_NAME_TWO = ENUM_NAME_ZERO | ENUM_NAME_ONE, |
+ }; |
""".split('\n') |
definitions = HeaderParser(test_data).ParseDefinitions() |
- self.assertEqual(1, len(definitions)) |
+ self.assertEqual(2, len(definitions)) |
definition = definitions[0] |
self.assertEqual('EnumName', definition.class_name) |
self.assertEqual('test.namespace', definition.enum_package) |
@@ -107,6 +114,13 @@ public @interface ClassName { |
('VALUE_ONE', '1 << 1')]), |
definition.entries) |
+ definition = definitions[1] |
+ expected_entries = collections.OrderedDict([ |
+ ('ZERO', '1 << 0'), |
+ ('ONE', '1 << 1'), |
+ ('TWO', 'ZERO | ONE')]) |
+ self.assertEqual(expected_entries, definition.entries) |
+ |
def testParseMultilineEnumEntry(self): |
test_data = """ |
// GENERATED_JAVA_ENUM_PACKAGE: bar.namespace |
@@ -289,6 +303,26 @@ public @interface ClassName { |
('B', 1)]), |
definition.entries) |
+ def testParseWithStrippingAndRelativeReferences(self): |
+ test_data = """ |
+ // GENERATED_JAVA_ENUM_PACKAGE: other.package |
+ // GENERATED_JAVA_PREFIX_TO_STRIP: P_ |
+ enum EnumTwo { |
+ P_A = 1, |
+ // P_A is old-don't use P_A. |
+ P_B = P_A, |
+ }; |
+ """.split('\n') |
+ definitions = HeaderParser(test_data).ParseDefinitions() |
+ definition = definitions[0] |
+ self.assertEqual('EnumTwo', definition.class_name) |
+ self.assertEqual('other.package', definition.enum_package) |
+ self.assertEqual(collections.OrderedDict([('A', '1'), |
+ ('B', 'A')]), |
+ definition.entries) |
+ self.assertEqual(collections.OrderedDict([('B', 'A is old-don\'t use A.')]), |
+ definition.comments) |
+ |
def testParseSingleLineAndRegularEnum(self): |
test_data = """ |
// GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
@@ -311,7 +345,7 @@ public @interface ClassName { |
definition = definitions[0] |
self.assertEqual( |
collections.OrderedDict([('A', '1'), ('B', 'A')]), definition.entries) |
- self.assertEqual(collections.OrderedDict([('ENUM_ONE_B', 'Comment there')]), |
+ self.assertEqual(collections.OrderedDict([('B', 'Comment there')]), |
definition.comments) |
self.assertEqual(3, len(definitions)) |
@@ -322,6 +356,106 @@ public @interface ClassName { |
definition = definitions[2] |
self.assertEqual(collections.OrderedDict([('FOO', 0)]), definition.entries) |
+ def testParseWithCamelCaseNames(self): |
+ test_data = """ |
+ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
+ enum EnumTest { |
+ EnumTestA = 1, |
+ // comment for EnumTestB. |
+ EnumTestB = 2, |
+ }; |
+ |
+ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
+ // GENERATED_JAVA_PREFIX_TO_STRIP: Test |
+ enum AnEnum { |
+ TestHTTPOption, |
+ TestHTTPSOption, |
+ }; |
+ |
+ """.split('\n') |
+ definitions = HeaderParser(test_data).ParseDefinitions() |
+ definition = definitions[0] |
+ self.assertEqual( |
+ collections.OrderedDict([('ENUM_TEST_A', '1'), ('ENUM_TEST_B', '2')]), |
+ definition.entries) |
+ self.assertEqual( |
+ collections.OrderedDict([('ENUM_TEST_B', 'comment for ENUM_TEST_B.')]), |
+ definition.comments) |
+ |
+ definition = definitions[1] |
+ self.assertEqual( |
+ collections.OrderedDict([('HTTP_OPTION', 0), ('HTTPS_OPTION', 1)]), |
+ definition.entries) |
+ |
+ def testParseWithKCamelCaseNames(self): |
+ test_data = """ |
+ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
+ enum EnumOne { |
+ kEnumOne = 1, |
+ // comment for kEnumTwo. |
+ kEnumTwo = 2, |
+ }; |
+ |
+ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
+ // GENERATED_JAVA_CLASS_NAME_OVERRIDE: OverrideName |
+ // GENERATED_JAVA_PREFIX_TO_STRIP: kEnumName |
+ enum EnumName { |
+ kEnumNameFoo, |
+ kEnumNameBar |
+ }; |
+ |
+ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
+ enum EnumName { |
+ kEnumNameFoo, |
+ kEnumBar, |
+ }; |
+ |
+ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
+ enum Keys { |
+ kSymbolKey = 1 << 0, |
+ kAltKey = 1 << 1, |
+ kUpKey = 1 << 2, |
+ kKeyModifiers = kSymbolKey | kAltKey | kUpKey | kKeyModifiers, |
+ }; |
+ |
+ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace |
+ enum Mixed { |
+ kTestVal, |
+ kCodecMPEG2 |
+ }; |
+ """.split('\n') |
+ definitions = HeaderParser(test_data).ParseDefinitions() |
+ definition = definitions[0] |
+ self.assertEqual( |
+ collections.OrderedDict([('ENUM_ONE', '1'), ('ENUM_TWO', '2')]), |
+ definition.entries) |
+ self.assertEqual( |
+ collections.OrderedDict([('ENUM_TWO', 'comment for ENUM_TWO.')]), |
+ definition.comments) |
+ |
+ definition = definitions[1] |
+ self.assertEqual( |
+ collections.OrderedDict([('FOO', 0), ('BAR', 1)]), |
+ definition.entries) |
+ |
+ definition = definitions[2] |
+ self.assertEqual( |
+ collections.OrderedDict([('ENUM_NAME_FOO', 0), ('ENUM_BAR', 1)]), |
+ definition.entries) |
+ |
+ definition = definitions[3] |
+ expected_entries = collections.OrderedDict([ |
+ ('SYMBOL_KEY', '1 << 0'), |
+ ('ALT_KEY', '1 << 1'), |
+ ('UP_KEY', '1 << 2'), |
+ ('KEY_MODIFIERS', 'SYMBOL_KEY | ALT_KEY | UP_KEY | KEY_MODIFIERS')]) |
+ self.assertEqual(expected_entries, definition.entries) |
+ |
+ definition = definitions[4] |
+ self.assertEqual( |
+ collections.OrderedDict([('TEST_VAL', 0), ('CODEC_MPEG2', 1)]), |
+ definition.entries) |
+ |
def testParseThrowsOnUnknownDirective(self): |
test_data = """ |
// GENERATED_JAVA_UNKNOWN: Value |