def testParseMalformedMultiLineDirectiveWithOtherDirective(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: ( // test.name // space // GENERATED_JAVA_CLASS_NAME_OVERRIDE: Bar enum Foo { FOO_A, }; """.split('\n') with self.assertRaises(Exception): HeaderParser(test_data).ParseDefinitions()
def testParseSimpleMultiLineDirective(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: ( // test.namespace) // GENERATED_JAVA_CLASS_NAME_OVERRIDE: Bar enum Foo { FOO_A, }; """.split('\n') definitions = HeaderParser(test_data).ParseDefinitions() self.assertEqual('test.namespace', definitions[0].enum_package) self.assertEqual('Bar', definitions[0].class_name)
def testParseSingleLineEnum(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: other.package // GENERATED_JAVA_PREFIX_TO_STRIP: P_ enum EnumTwo { P_A, P_B }; """.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', 0), ('B', 1)]), definition.entries)
def testParseEnumStruct(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace enum struct Foo { FOO_A, }; """.split('\n') definitions = HeaderParser(test_data).ParseDefinitions() self.assertEqual(1, len(definitions)) definition = definitions[0] self.assertEqual('Foo', definition.class_name) self.assertEqual('test.namespace', definition.enum_package) self.assertEqual(collections.OrderedDict([('A', 0)]), definition.entries)
def testParseFixedTypeEnumClass(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace enum class Foo: unsigned short { FOO_A, }; """.split('\n') definitions = HeaderParser(test_data).ParseDefinitions() self.assertEqual(1, len(definitions)) definition = definitions[0] self.assertEqual('Foo', definition.class_name) self.assertEqual('test.namespace', definition.enum_package) self.assertEqual('unsigned short', definition.fixed_type) self.assertEqual(collections.OrderedDict([('A', 0)]), definition.entries)
def testParseSimpleEnum(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace enum EnumName { VALUE_ZERO, VALUE_ONE, }; """.split('\n') definitions = HeaderParser(test_data).ParseDefinitions() self.assertEqual(1, len(definitions)) definition = definitions[0] self.assertEqual('EnumName', definition.class_name) self.assertEqual('test.namespace', definition.enum_package) self.assertEqual( collections.OrderedDict([('VALUE_ZERO', 0), ('VALUE_ONE', 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 testParseEnumEntryWithTrailingMultilineEntry(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: bar.namespace enum Foo { VALUE_ZERO = 1, VALUE_ONE = SymbolKey | FnKey | AltGrKey | MetaKey | AltKey | ControlKey | ShiftKey, }; """.split('\n') expected_entries = collections.OrderedDict([ ('VALUE_ZERO', '1'), ('VALUE_ONE', 'SymbolKey | FnKey | AltGrKey | MetaKey | AltKey | ' 'ControlKey | ShiftKey')]) definitions = HeaderParser(test_data).ParseDefinitions() self.assertEqual(1, len(definitions)) definition = definitions[0] self.assertEqual('Foo', definition.class_name) self.assertEqual('bar.namespace', definition.enum_package) self.assertEqual(expected_entries, definition.entries)
def testParseTwoEnums(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace enum EnumOne { ENUM_ONE_A = 1, // Comment there ENUM_ONE_B = A, }; enum EnumIgnore { C, D, E }; // GENERATED_JAVA_ENUM_PACKAGE: other.package // GENERATED_JAVA_PREFIX_TO_STRIP: P_ enum EnumTwo { P_A, // This comment spans // two lines. P_B }; """.split('\n') definitions = HeaderParser(test_data).ParseDefinitions() self.assertEqual(2, len(definitions)) definition = definitions[0] self.assertEqual('EnumOne', definition.class_name) self.assertEqual('test.namespace', definition.enum_package) self.assertEqual(collections.OrderedDict([('A', '1'), ('B', 'A')]), definition.entries) self.assertEqual(collections.OrderedDict([('ENUM_ONE_B', 'Comment there')]), definition.comments) definition = definitions[1] self.assertEqual('EnumTwo', definition.class_name) self.assertEqual('other.package', definition.enum_package) self.assertEqual(collections.OrderedDict( [('P_B', 'This comment spans two lines.')]), definition.comments) self.assertEqual(collections.OrderedDict([('A', 0), ('B', 1)]), definition.entries)
def testParseClassNameOverride(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: test.namespace // GENERATED_JAVA_CLASS_NAME_OVERRIDE: OverrideName enum EnumName { FOO }; // GENERATED_JAVA_ENUM_PACKAGE: test.namespace // GENERATED_JAVA_CLASS_NAME_OVERRIDE: OtherOverride enum PrefixTest { PREFIX_TEST_A, PREFIX_TEST_B, }; """.split('\n') definitions = HeaderParser(test_data).ParseDefinitions() self.assertEqual(2, len(definitions)) definition = definitions[0] self.assertEqual('OverrideName', definition.class_name) definition = definitions[1] self.assertEqual('OtherOverride', definition.class_name) self.assertEqual(collections.OrderedDict([('A', 0), ('B', 1)]), definition.entries)
def testParseNoCommaAfterLastEntry(self): test_data = """ // GENERATED_JAVA_ENUM_PACKAGE: bar.namespace enum Foo { VALUE_ZERO = 1, // This is a multiline // // comment with an empty line. VALUE_ONE = 2 }; """.split('\n') expected_entries = collections.OrderedDict([('VALUE_ZERO', '1'), ('VALUE_ONE', '2')]) expected_comments = collections.OrderedDict([ ('VALUE_ONE', 'This is a multiline comment with an empty line.') ]) definitions = HeaderParser(test_data).ParseDefinitions() self.assertEqual(1, len(definitions)) definition = definitions[0] self.assertEqual('Foo', definition.class_name) self.assertEqual('bar.namespace', definition.enum_package) self.assertEqual(expected_entries, definition.entries) self.assertEqual(expected_comments, definition.comments)
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)