示例#1
0
    def test_FunctionID(self):
        """
        generator/transformers/common_producer.py	34%
        generator/transformers/enums_producer.py	80%
        """
        elements = OrderedDict()
        elements['RESERVED'] = EnumElement(name='RESERVED', value=0)
        elements['RegisterAppInterfaceID'] = EnumElement(name='RegisterAppInterfaceID', hex_value=1)
        elements['PerformAudioPassThruID'] = EnumElement(name='PerformAudioPassThruID', hex_value=10)

        item = Enum(name='FunctionID', elements=elements)
        expected = OrderedDict()
        expected['origin'] = 'FunctionID'
        expected['name'] = 'SDLFunctionID'
        expected['imports'] = {
            '.h': {'SDLEnum'},
            '.m': ['SDLEnum']
        }
        expected['history'] = None
        expected['params'] = (
            self.producer.param_named(history=None, description=[], name='Reserved', origin='RESERVED', since=None, deprecated=False),
            self.producer.param_named(history=None, description=[], name='RegisterAppInterface', origin='RegisterAppInterfaceID',
                                      since=None, deprecated=False),
            self.producer.param_named(history=None, description=[], name='PerformAudioPassThru', origin='PerformAudioPassThruID',
                                      since=None, deprecated=False),)

        actual = self.producer.transform(item)
        self.assertDictEqual(expected, actual)
示例#2
0
    def test_TextFieldName(self):
        """
        generator/transformers/common_producer.py	34%
        generator/transformers/enums_producer.py	98%
        """
        elements = OrderedDict()
        elements['SUCCESS'] = EnumElement(name='SUCCESS')
        elements['mainField1'] = EnumElement(name='mainField1')
        elements['H264'] = EnumElement(name='H264')
        elements['UNSUPPORTED_REQUEST'] = EnumElement(name='UNSUPPORTED_REQUEST')
        item = Enum(name='TextFieldName', elements=elements)

        expected = OrderedDict()
        expected['origin'] = 'TextFieldName'
        expected['name'] = 'SDLTextFieldName'
        expected['imports'] = {
            '.h': {'SDLEnum'},
            '.m': ['SDLEnum']
        }
        expected['history'] = None
        expected['params'] = (
            self.producer.param_named(history=None, description=[], name='Success', origin='SUCCESS', since=None,
                                      deprecated=False),
            self.producer.param_named(history=None, description=[], name='MainField1', origin='mainField1', since=None,
                                      deprecated=False),
            self.producer.param_named(history=None, description=[], name='H264', origin='H264', since=None, deprecated=False),
            self.producer.param_named(history=None, description=[], name='UnsupportedRequest', origin='UNSUPPORTED_REQUEST',
                                      since=None, deprecated=False))

        actual = self.producer.transform(item)
        self.assertDictEqual(expected, actual)
示例#3
0
    def test_SystemCapabilityType(self):
        elements = OrderedDict()
        elements['DISPLAYS'] = EnumElement(name='DISPLAYS')
        elements['NAVIGATION'] = EnumElement(name='NAVIGATION')

        item = Enum(name='SystemCapabilityType', elements=elements)
        expected = {
            'kind':
            'simple',
            'package_name':
            'com.smartdevicelink.proxy.rpc.enums',
            'class_name':
            'SystemCapabilityType',
            'params': (self.producer.params(deprecated=None,
                                            value=None,
                                            description=None,
                                            name='DISPLAYS',
                                            origin='DISPLAYS',
                                            since=None,
                                            internal=None),
                       self.producer.params(deprecated=None,
                                            value=None,
                                            description=None,
                                            name='NAVIGATION',
                                            origin='NAVIGATION',
                                            since=None,
                                            internal=None)),
            'since':
            None,
            'deprecated':
            None,
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#4
0
    def test_PutFileRequest(self):
        params = OrderedDict()
        params['fileType'] = Param(
            name='fileType',
            param_type=Enum(
                name='FileType',
                description=['Enumeration listing'],
                elements={'AUDIO_MP3': EnumElement(name='AUDIO_MP3')}),
            description=['Selected file type.'])
        params['syncFileName'] = Param(name='syncFileName',
                                       param_type=String(max_length=255,
                                                         min_length=1))

        item = Function(name='PutFile',
                        function_id=None,
                        description=['\n            Used to'],
                        message_type=EnumElement(name='request'),
                        params=params)
        expected = self.expected_template.copy()
        expected['kind'] = 'request'
        expected['function_id'] = 'PUT_FILE'
        expected['class_name'] = 'PutFile'
        expected['extends_class'] = 'RPCRequest'
        expected['history'] = None
        expected['imports'] = [
            'androidx.annotation.NonNull', '',
            'com.smartdevicelink.protocol.enums.FunctionID',
            'com.smartdevicelink.proxy.RPCRequest',
            'com.smartdevicelink.proxy.rpc.enums.FileType', '',
            'java.util.Hashtable'
        ]
        expected['description'] = ['Used to']
        expected['params'] = (self.producer.params(
            deprecated=None,
            description=['Selected file type.'],
            key='KEY_FILE_TYPE',
            last='fileType',
            mandatory=True,
            origin='fileType',
            SuppressWarnings=None,
            return_type='FileType',
            since=None,
            title='FileType',
            param_doc=None,
            name=None),
                              self.producer.params(deprecated=None,
                                                   key='KEY_SDL_FILE_NAME',
                                                   last='sdlFileName',
                                                   mandatory=True,
                                                   origin='syncFileName',
                                                   return_type='String',
                                                   description=None,
                                                   since=None,
                                                   title='SdlFileName',
                                                   SuppressWarnings=None,
                                                   param_doc=None,
                                                   name=None))
        actual = self.producer.transform(item)
        self.comparison(expected, actual)
示例#5
0
    def test_CreateInteractionChoiceSet(self):
        """
        generator/transformers/common_producer.py		67%
        generator/transformers/functions_producer.py	63%
        """
        params = OrderedDict()
        params['choiceSet'] = Param(
            name='choiceSet',
            param_type=Array(element_type=Struct(name='Choice')))
        item = Function(
            name='CreateInteractionChoiceSet',
            function_id=EnumElement(name='CreateInteractionChoiceSetID'),
            message_type=EnumElement(name='request'),
            params=params)

        expected = OrderedDict()
        expected['origin'] = 'CreateInteractionChoiceSet'
        expected['name'] = 'SDLCreateInteractionChoiceSet'
        expected['extends_class'] = 'SDLRPCRequest'
        expected['imports'] = {
            '.m': {'SDLChoice'},
            '.h': {
                'struct': {'SDLChoice'},
                'enum': {'SDLRPCRequest'}
            }
        }
        expected['params'] = (self.producer.param_named(
            constructor_argument='choiceSet',
            constructor_argument_override=None,
            constructor_prefix='ChoiceSet',
            deprecated=False,
            description=[],
            for_name='objects',
            mandatory=True,
            method_suffix='ChoiceSet',
            modifier='strong',
            of_class='SDLChoice.class',
            origin='choiceSet',
            since=None,
            type_native='NSArray<SDLChoice *> *',
            type_sdl='NSArray<SDLChoice *> *'), )

        argument = [
            self.producer.argument_named(variable='choiceSet',
                                         deprecated=False,
                                         constructor_argument='choiceSet',
                                         origin='choiceSet')
        ]

        expected['constructors'] = (self.producer.constructor_named(
            all=argument,
            arguments=argument,
            deprecated=False,
            self=True,
            init='ChoiceSet:(NSArray<SDLChoice *> *)choiceSet'), )

        actual = self.producer.transform(item)
        self.assertDictEqual(expected, actual)
示例#6
0
    def test_OnHMIStatus(self):
        """
        generator/transformers/common_producer.py		66%
        generator/transformers/functions_producer.py	65%
        """
        item = Function(name='OnHMIStatus',
                        function_id=EnumElement(name='OnHMIStatusID'),
                        message_type=EnumElement(name='notification'),
                        params={
                            'hmiLevel':
                            Param(name='hmiLevel',
                                  param_type=Enum(name='HMILevel'))
                        })
        expected = OrderedDict()
        expected['origin'] = 'OnHMIStatus'
        expected['name'] = 'SDLOnHMIStatus'
        expected['extends_class'] = 'SDLRPCNotification'
        expected['imports'] = {
            ".h": {
                'enum': {'SDLRPCNotification'},
                'struct': set()
            },
            ".m": set()
        }
        expected['params'] = (self.producer.param_named(
            constructor_argument='hmiLevel',
            constructor_argument_override=None,
            constructor_prefix='HmiLevel',
            deprecated=False,
            description=[],
            for_name='enum',
            mandatory=True,
            method_suffix='HmiLevel',
            modifier='strong',
            of_class='',
            origin='hmiLevel',
            since=None,
            type_native='SDLHMILevel ',
            type_sdl='SDLHMILevel '), )

        arguments = [
            self.producer.argument_named(variable='hmiLevel',
                                         deprecated=False,
                                         origin='hmiLevel',
                                         constructor_argument='hmiLevel')
        ]

        expected['constructors'] = (self.producer.constructor_named(
            all=arguments,
            arguments=arguments,
            deprecated=False,
            self=True,
            init='HmiLevel:(SDLHMILevel)hmiLevel'), )

        actual = self.producer.transform(item)
        self.assertDictEqual(expected, actual)
示例#7
0
    def test_SetDisplayLayout(self):
        """
        generator/transformers/common_producer.py		66%
        generator/transformers/functions_producer.py	63%
        """
        params = OrderedDict()
        params['displayLayout'] = Param(name='displayLayout', param_type=String(max_length=500, min_length=1))
        item = Function(name='SetDisplayLayout', function_id=EnumElement(name='SetDisplayLayoutID'),
                        message_type=EnumElement(name='request'), params=params, history=[
                Function(name='SetDisplayLayout', function_id=EnumElement(name='SetDisplayLayoutID'),
                         message_type=EnumElement(name='request'), params={}, history=None, since='3.0.0',
                         until='6.0.0')
            ], since='6.0.0', until=None, deprecated='true')

        expected = OrderedDict()
        expected['origin'] = 'SetDisplayLayout'
        expected['name'] = 'SDLSetDisplayLayout'
        expected['extends_class'] = 'SDLRPCRequest'
        expected['imports'] = {
            '.h': {
                'enum': ['SDLRPCRequest'],
                'struct': []},
            '.m': [
                'NSMutableDictionary+Store',
                'SDLRPCFunctionNames',
                'SDLRPCParameterNames',
                'SDLSetDisplayLayout'
                ]
        }
        expected['history'] = '3.0.0'
        expected['since'] = '6.0.0'
        expected['deprecated'] = True
        expected['params'] = (
            self.producer.param_named(
                history=None,
                constructor_argument='displayLayout', constructor_argument_override=None,
                constructor_prefix='DisplayLayout', deprecated=False,
                description=['{"string_min_length": 1, "string_max_length": 500}'], for_name='object',
                mandatory=True, method_suffix='DisplayLayout', modifier='strong', of_class='NSString.class',
                origin='displayLayout', since=None, type_native='NSString *', type_sdl='NSString *'),)

        argument = [
            self.producer.argument_named(variable='displayLayout', deprecated=False,
                                         constructor_argument='displayLayout', origin='displayLayout')]

        expected['constructors'] = (self.producer.constructor_named(
            all=argument, arguments=argument, self=True,
            init='DisplayLayout:(NSString *)displayLayout'),)

        actual = self.producer.transform(item)
        self.assertDictEqual(expected, actual)
示例#8
0
    def test_process_function_name(self):
        """
        generator/transformers/common_producer.py		29%
        generator/transformers/functions_producer.py	61%
        """
        functions = {
            'RegisterAppInterface': Function(name='RegisterAppInterface',
                                             function_id=EnumElement(name='RegisterAppInterfaceID'), since='3.0.0',
                                             message_type=EnumElement(name='request'),
                                             description=['RegisterAppInterface description'], params={
                    'syncMsgVersion': Param(name='syncMsgVersion', param_type=Float(), since='3.5.0',
                                            description=['syncMsgVersion description'])}),
            'OnHMIStatus': Function(name='OnHMIStatus', function_id=EnumElement(name='OnHMIStatusID'), since='4.0.0',
                                    message_type=EnumElement(name='notification'),
                                    description=['OnHMIStatus description'], params={
                    'acEnable': Param(name='acEnable', param_type=Integer(), since='4.5.0',
                                      description=['acEnable description'])})}
        structs = {
            'SoftButton': Struct(name='SoftButton', members={
                'image': Param(name='image', param_type=String(), since='1.0.0', description=['image description']),
                'dayColorScheme': Param(name='dayColorScheme', param_type=Struct(name='TemplateColorScheme', description=[
                '\nA color scheme for all display layout templates.\n']))}),
            'PresetBankCapabilities': Struct(name='PresetBankCapabilities', members={
                'availableHdChannelsAvailable': Param(name='availableHdChannelsAvailable', param_type=Boolean(),
                                                      since='2.0.0',
                                                      description=['availableHDChannelsAvailable description'])})}

        expected = [
            self.producer.common_names(
                description=['OnHMIStatus description'], name='OnHMIStatus', origin='OnHMIStatus', since='4.0.0'),
            self.producer.common_names(
                description=['RegisterAppInterface description'], name='RegisterAppInterface',
                origin='RegisterAppInterface', since='3.0.0')]
        actual = self.producer.get_function_names(functions)
        self.assertListEqual(expected, actual['params'])

        expected = [
            self.producer.common_names(description=['acEnable description'], name='AcEnable',
                                       origin='acEnable', since='4.5.0'),
            self.producer.common_names(description=['availableHDChannelsAvailable description'],
                                       since='2.0.0', name='AvailableHdChannelsAvailable',
                                       origin='availableHdChannelsAvailable'),
            self.producer.common_names(description=[], name='DayColorScheme', origin='dayColorScheme', since=None),
            self.producer.common_names(description=['image description'], name='Image', origin='image', since='1.0.0'),
            self.producer.common_names(description=['syncMsgVersion description'], name='SdlMsgVersion',
                                       origin='syncMsgVersion', since='3.5.0')]
        actual = self.producer.get_simple_params(functions, structs)
        self.assertCountEqual(expected, actual['params'])
 def test_PutFileRequest(self):
     params = OrderedDict()
     params['fileType'] = Param(
         name='fileType',
         param_type=Enum(
             name='FileType',
             description=['Enumeration listing'],
             elements={'AUDIO_MP3': EnumElement(name='AUDIO_MP3')}),
         description=['Selected file type.'])
     item = Function(name='PutFile',
                     function_id=Enum(name='PutFileID'),
                     description=['\n            Used to'],
                     message_type=EnumElement(name='request'),
                     params=params)
     expected = OrderedDict()
     expected['file_name'] = 'PutFile'
     expected['name'] = 'PutFile'
     expected['imports'] = {
         self.producer.imports(what='FileType',
                               wherefrom='../enums/FileType.js'),
         self.producer.imports(what='RpcRequest',
                               wherefrom='../RpcRequest.js'),
         self.producer.imports(what='FunctionID',
                               wherefrom='../enums/FunctionID.js')
     }
     expected['methods'] = (self.producer.methods(
         key='KEY_FILE_TYPE',
         method_title='FileType',
         external='FileType',
         description=['Selected file type.'],
         param_name='type',
         type='FileType',
         param_values={},
         since=None,
         history=None,
         deprecated=None), )
     expected['params'] = (self.producer.params(key='KEY_FILE_TYPE',
                                                value="'fileType'"), )
     expected['description'] = ['Used to']
     expected['since'] = None
     expected['history'] = None
     expected['deprecated'] = None
     expected['script'] = self.producer.get_file_content(
         'templates/scripts/PutFileRequest.js')
     expected['func'] = 'PutFile'
     expected['extend'] = 'RpcRequest'
     result = self.producer.transform(item)
     self.assertDictEqual(expected, result)
示例#10
0
 def test_DeleteCommand(self):
     item = Function(name='DeleteCommand',
                     function_id=None,
                     message_type=EnumElement(name='request'),
                     params={
                         'cmdID':
                         Param(name='cmdID',
                               param_type=Integer(max_value=2000000000,
                                                  min_value=0))
                     })
     expected = self.expected_template.copy()
     expected['kind'] = 'request'
     expected['function_id'] = 'DELETE_COMMAND'
     expected['class_name'] = 'DeleteCommand'
     expected['extends_class'] = 'RPCRequest'
     expected['imports'] = [
         'android.support.annotation.NonNull', '',
         'com.smartdevicelink.protocol.enums.FunctionID',
         'com.smartdevicelink.proxy.RPCRequest', '', 'java.util.Hashtable'
     ]
     expected['params'] = (self.producer.params(deprecated=None,
                                                key='KEY_CMD_ID',
                                                last='cmdID',
                                                mandatory=True,
                                                origin='cmdID',
                                                return_type='Integer',
                                                since=None,
                                                title='CmdID',
                                                description=None,
                                                SuppressWarnings=None,
                                                param_doc=None,
                                                name=None), )
     actual = self.producer.transform(item)
     self.comparison(expected, actual)
示例#11
0
    def test_VehicleDataEventStatus(self):
        item = Enum(name='VehicleDataEventStatus',
                    elements={
                        'NO_EVENT':
                        EnumElement(name='NO_EVENT',
                                    internal_name='VDES_NO_EVENT')
                    })
        expected = {
            'kind':
            'simple',
            'package_name':
            'com.smartdevicelink.proxy.rpc.enums',
            'class_name':
            'VehicleDataEventStatus',
            'params': (self.producer.params(deprecated=None,
                                            value=None,
                                            description=None,
                                            name='NO_EVENT',
                                            origin='NO_EVENT',
                                            since=None,
                                            internal=None), ),
            'since':
            None,
            'deprecated':
            None,
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#12
0
 def test_ReleaseInteriorVehicleDataModule(self):
     item = Function(name='ReleaseInteriorVehicleDataModule',
                     function_id=None,
                     message_type=EnumElement(name='request'),
                     params={
                         'moduleType':
                         Param(name='moduleType',
                               param_type=Enum(name='ModuleType'))
                     })
     expected = self.expected_template.copy()
     expected['kind'] = 'request'
     expected['function_id'] = 'RELEASE_INTERIOR_VEHICLE_DATA_MODULE'
     expected['class_name'] = 'ReleaseInteriorVehicleDataModule'
     expected['extends_class'] = 'RPCRequest'
     expected['imports'] = [
         'android.support.annotation.NonNull', '',
         'com.smartdevicelink.protocol.enums.FunctionID',
         'com.smartdevicelink.proxy.RPCRequest', '', 'java.util.Hashtable'
     ]
     expected['params'] = (self.producer.params(deprecated=None,
                                                key='KEY_MODULE_TYPE',
                                                last='moduleType',
                                                mandatory=True,
                                                origin='moduleType',
                                                return_type='ModuleType',
                                                since=None,
                                                title='ModuleType',
                                                description=None,
                                                SuppressWarnings=None,
                                                param_doc=None,
                                                name=None), )
     actual = self.producer.transform(item)
     self.comparison(expected, actual)
示例#13
0
 def test_Alert(self):
     item = Function(name='Alert',
                     function_id=None,
                     message_type=EnumElement(name='request'),
                     params={
                         'alertText2':
                         Param(name='alertText2',
                               param_type=String(max_length=500))
                     })
     expected = self.expected_template.copy()
     expected['kind'] = 'request'
     expected['function_id'] = 'ALERT'
     expected['class_name'] = 'Alert'
     expected['extends_class'] = 'RPCRequest'
     expected['imports'] = [
         'android.support.annotation.NonNull', '',
         'com.smartdevicelink.protocol.enums.FunctionID',
         'com.smartdevicelink.proxy.RPCRequest', '', 'java.util.Hashtable'
     ]
     expected['params'] = (self.producer.params(deprecated=None,
                                                key='KEY_ALERT_TEXT_2',
                                                last='alertText2',
                                                mandatory=True,
                                                origin='alertText2',
                                                param_doc=None,
                                                return_type='String',
                                                since=None,
                                                title='AlertText2',
                                                description=None,
                                                SuppressWarnings=None,
                                                name=None), )
     actual = self.producer.transform(item)
     self.comparison(expected, actual)
示例#14
0
    def test_Language(self):
        item = Enum(name='Language',
                    elements={
                        'EN-US': EnumElement(name='EN-US',
                                             internal_name='EN-US')
                    })
        expected = {
            'kind':
            'custom',
            'package_name':
            'com.smartdevicelink.proxy.rpc.enums',
            'class_name':
            'Language',
            'params': (self.producer.params(name='EN_US',
                                            origin='EN-US',
                                            internal='"EN-US"',
                                            description=None,
                                            since=None,
                                            value=None,
                                            deprecated=None), ),
            'since':
            None,
            'deprecated':
            None,
            'imports': {'java.util.EnumSet'}
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#15
0
    def test_DisplayType(self):
        item = Enum(name='DisplayType',
                    deprecated=True,
                    since='5.0.0',
                    elements={'CID': EnumElement(name='CID', since='3.0.0')})
        expected = {
            'kind':
            'simple',
            'package_name':
            'com.smartdevicelink.proxy.rpc.enums',
            'class_name':
            'DisplayType',
            'params': (self.producer.params(name='CID',
                                            origin='CID',
                                            internal=None,
                                            description=None,
                                            since='3.0.0',
                                            value=None,
                                            deprecated=None), ),
            'since':
            '5.0.0',
            'deprecated':
            True
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#16
0
    def test_VrCapabilities1(self):
        item = Enum(name='VrCapabilities',
                    elements={
                        'TEXT': EnumElement(name='TEXT',
                                            internal_name='VR_TEXT')
                    })
        expected = {
            'kind':
            'simple',
            'package_name':
            'com.smartdevicelink.proxy.rpc.enums',
            'class_name':
            'VrCapabilities',
            'params': (self.producer.params(name='TEXT',
                                            origin='TEXT',
                                            description=None,
                                            since=None,
                                            value=None,
                                            deprecated=None,
                                            internal=None), ),
            'since':
            None,
            'deprecated':
            None
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#17
0
    def test_deprecated(self):
        item = Enum(name='TestDeprecated',
                    deprecated=True,
                    elements={
                        'PRIMARY_WIDGET':
                        EnumElement(name='PRIMARY_WIDGET',
                                    internal_name='PRIMARY_WIDGET',
                                    value=1,
                                    deprecated=True)
                    })
        expected = {
            'kind':
            'simple',
            'package_name':
            'com.smartdevicelink.proxy.rpc.enums',
            'class_name':
            'TestDeprecated',
            'params': (self.producer.params(name='PRIMARY_WIDGET',
                                            origin='PRIMARY_WIDGET',
                                            deprecated=True,
                                            internal=1,
                                            description=None,
                                            since=None,
                                            value=None), ),
            'since':
            None,
            'deprecated':
            True
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#18
0
 def test_Result(self):
     elements = OrderedDict()
     elements['SUCCESS'] = EnumElement(name='SUCCESS')
     item = Enum(name='Result', elements=elements)
     expected = OrderedDict()
     expected['file_name'] = 'Result'
     expected['name'] = 'Result'
     expected['file_name'] = 'Result'
     expected['imports'] = {
         self.producer.imports(what='Enum', wherefrom='../../util/Enum.js')
     }
     expected['methods'] = (self.producer.methods(method_title='SUCCESS',
                                                  description=[],
                                                  type='String',
                                                  since=None,
                                                  history=None,
                                                  deprecated=None), )
     expected['params'] = (self.producer.params(key='SUCCESS',
                                                value="'SUCCESS'"), )
     expected['since'] = None
     expected['history'] = None
     expected['deprecated'] = None
     expected['extend'] = 'Enum'
     result = self.producer.transform(item)
     self.assertDictEqual(expected, result)
示例#19
0
    def _parse_enum_element(self, element):
        """Parse element as element of enumeration.

        :param element: an instance of Element (from ElementTree)
        :return: an instance of model.EnumElement
        """
        params, subelements, attrib = self._parse_base_item(element, "")

        if len(subelements) != 0:
            raise ParseError("Unexpected subelements in enum element")

        self._ignore_attribute(attrib, "scope")
        self._ignore_attribute(attrib, "rootscreen")

        for attribute in attrib:
            if attribute == "value":
                try:
                    params[attribute] = int(attrib[attribute])
                except:
                    raise ParseError(
                        "Invalid value for enum element: '{}'".format(
                            attrib[attribute]))
            elif attribute == "hexvalue":
                params["hex_value"] = attrib[attribute]
            elif attribute in ["internal_name", "deprecated", "removed"]:
                params[attribute] = attrib[attribute]
            elif attribute in ["since", "until"]:
                params[attribute] = self._parse_version(attrib[attribute])

        return EnumElement(**params)
示例#20
0
    def test_FunctionID(self):
        elements = OrderedDict()
        elements['RESERVED'] = EnumElement(name='RESERVED', value=0)
        elements['RegisterAppInterfaceID'] = EnumElement(
            name='RegisterAppInterfaceID', hex_value=1)
        elements['PerformAudioPassThruID'] = EnumElement(
            name='PerformAudioPassThruID', hex_value=10)

        item = Enum(name='FunctionID', elements=elements)
        expected = OrderedDict()
        expected['file_name'] = 'FunctionID'
        expected['name'] = 'FunctionID'
        expected['imports'] = {
            self.producer.imports(what='Enum', wherefrom='../../util/Enum.js')
        }
        expected['methods'] = (self.producer.methods(method_title='RESERVED',
                                                     description=[],
                                                     type='Number',
                                                     since=None,
                                                     history=None,
                                                     deprecated=None),
                               self.producer.methods(
                                   method_title='RegisterAppInterface',
                                   description=[],
                                   type='Number',
                                   since=None,
                                   history=None,
                                   deprecated=None),
                               self.producer.methods(
                                   method_title='PerformAudioPassThru',
                                   description=[],
                                   type='Number',
                                   since=None,
                                   history=None,
                                   deprecated=None))
        expected['params'] = (self.producer.params(key='RESERVED',
                                                   value="'RESERVED'"),
                              self.producer.params(key='RegisterAppInterface',
                                                   value='0x01'),
                              self.producer.params(key='PerformAudioPassThru',
                                                   value='0x10'))
        expected['since'] = None
        expected['history'] = None
        expected['deprecated'] = None
        expected['extend'] = 'Enum'
        result = self.producer.transform(item)
        self.assertDictEqual(expected, result)
示例#21
0
    def test_gen_pre_function_schemas(self):
        """Test code that goes before schema initialization.

        Verifies JSONPRC implementation of the _gen_pre_function_schemas
        function.

        """
        self.maxDiff = None

        generator = SmartFactoryJSONRPC.CodeGenerator()

        self.assertEqual(u"", generator._gen_pre_function_schemas([]),
                         "Invalid code for empty functions list")

        message_type_elements = collections.OrderedDict()
        message_type_elements[u"request"] = EnumElement(name=u"request")
        message_type_elements[u"response"] = EnumElement(name=u"response")
        message_type_elements[u"notification"] = EnumElement(
            name=u"notification")

        message_type = Enum(name=u"messageType",
                            elements=message_type_elements)

        function1 = Function("func1",
                             function_id=message_type.elements[u"request"],
                             message_type=message_type.elements[u"request"])

        self.assertEqual(u"", generator._gen_pre_function_schemas([function1]),
                         "Invalid code for empty functions list")

        function2 = Function("func2",
                             function_id=message_type.elements[u"request"],
                             message_type=message_type.elements[u"response"])
        try:
            self.assertEqual(EXPECTED_PRE_FUNCTION_CODE,
                             generator._gen_pre_function_schemas([function2]),
                             "Invalid code for single response function")

            self.assertEqual(
                EXPECTED_PRE_FUNCTION_CODE,
                generator._gen_pre_function_schemas([function1, function2]),
                "Invalid code for mixed function list")
        except AssertionError as message:
            print(message)
示例#22
0
    def test_Dimension(self):
        item = Enum(name='Dimension',
                    elements={
                        'NO_FIX':
                        EnumElement(name='NO_FIX',
                                    internal_name='Dimension_NO_FIX'),
                        '2D':
                        EnumElement(name='2D', internal_name='Dimension_2D')
                    })
        expected = {
            'kind':
            'custom',
            'package_name':
            'com.smartdevicelink.proxy.rpc.enums',
            'class_name':
            'Dimension',
            'params': (
                self.producer.params(deprecated=None,
                                     value=None,
                                     description=None,
                                     name='NO_FIX',
                                     origin='NO_FIX',
                                     since=None,
                                     internal='"NO_FIX"'),
                self.producer.params(deprecated=None,
                                     value=None,
                                     description=None,
                                     name='_2D',
                                     origin='2D',
                                     since=None,
                                     internal='"2D"'),
            ),
            'since':
            None,
            'deprecated':
            None,
            'imports': {'java.util.EnumSet'}
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#23
0
    def test_gen_enum_elements(self):
        """Test generation of the enum elements.

        Verifies correct generation of the enum elements.

        """
        generator = SmartFactoryBase.CodeGenerator()

        elements = [
            EnumElement(name=u"name1",
                        design_description=DESIGN_DESCRIPTION,
                        todos=TODOS,
                        value=u"1"),
            EnumElement(name=u"name2",
                        description=DESCRIPTION,
                        issues=ISSUES,
                        internal_name=u"internal_name2")
        ]
        self.assertEqual(generator._gen_enum_elements(elements),
                         EXPECTED_RESULT_ENUM_ELEMENTS1,
                         "Simple enum elements are invalid")
示例#24
0
    def test_PredefinedWindows(self):
        elements = OrderedDict()
        elements['DEFAULT_WINDOW'] = EnumElement(name='DEFAULT_WINDOW', value=0)
        elements['PRIMARY_WIDGET'] = EnumElement(name='PRIMARY_WIDGET', value=1)
        item = Enum(name='PredefinedWindows', elements=elements)
        expected = {
            'kind': 'simple',
            'package_name': 'com.smartdevicelink.proxy.rpc.enums',
            'class_name': 'PredefinedWindows',
            'params': (self.producer.params(name='DEFAULT_WINDOW', origin='DEFAULT_WINDOW',
                                            internal=0, description=None, since=None, value=None,
                                            deprecated=None),
                       self.producer.params(name='PRIMARY_WIDGET', origin='PRIMARY_WIDGET',
                                            internal=1, description=None, since=None, value=None,
                                            deprecated=None)),
            'since': None,
            'history': None,
            'deprecated': None
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#25
0
    def test_Result(self):
        elements = OrderedDict()
        elements['SUCCESS'] = EnumElement(name='SUCCESS', description=['The request succeeded'])
        elements['VEHICLE_DATA_NOT_AVAILABLE'] = EnumElement(name='VEHICLE_DATA_NOT_AVAILABLE', since='2.0.0')
        item = Enum(name='Result', elements=elements)
        expected = {
            'kind': 'simple',
            'package_name': 'com.smartdevicelink.proxy.rpc.enums',
            'class_name': 'Result',
            'params': (
                self.producer.params(name='SUCCESS', origin='SUCCESS', internal=None,
                                     description=['The request succeeded'],
                                     since=None, value=None, deprecated=None),
                self.producer.params(name='VEHICLE_DATA_NOT_AVAILABLE', origin='VEHICLE_DATA_NOT_AVAILABLE',
                                     internal=None, description=None, since='2.0.0', value=None, deprecated=None)),
            'since': None,
            'history': None,
            'deprecated': None
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)
示例#26
0
    def test_gen_enum(self):
        """Test generation of the enum.

        Verifies correct generation of the enum.

        """
        generator = SmartFactoryBase.CodeGenerator()

        elements1 = collections.OrderedDict()
        elements1[u"name1"] = EnumElement(
            name=u"name1",
            design_description=DESIGN_DESCRIPTION,
            todos=TODOS,
            value=u"1")
        elements1[u"name2"] = EnumElement(name=u"name2",
                                          description=DESCRIPTION,
                                          issues=ISSUES,
                                          internal_name=u"internal_name2")

        enum1 = Enum(name=u"Enum1", todos=TODOS, elements=elements1)

        self.assertEqual(generator._gen_enum(enum1), EXPECTED_RESULT_ENUM1,
                         "Simple enum is invalid")

        elements2 = collections.OrderedDict()
        elements2[u"xxx"] = EnumElement(name=u"xxx", internal_name=u"val_1")
        elements2[u"yyy"] = EnumElement(name=u"yyy",
                                        internal_name=u"val_2",
                                        value=u"100")
        elements2[u"zzz"] = EnumElement(name=u"val_3")

        enum2 = Enum(name=u"E2", elements=elements2)
        self.assertEqual(generator._gen_enum(enum2), EXPECTED_RESULT_ENUM2,
                         "Long enum is invalid")

        self.assertEqual(
            generator._gen_enums([enum1, enum2], collections.OrderedDict()),
            u"{0}\n{1}".format(EXPECTED_RESULT_ENUM1, EXPECTED_RESULT_ENUM2),
            "Generated enums are invalid")
示例#27
0
 def test_RegisterAppInterface(self):
     params = OrderedDict()
     params['syncMsgVersion'] = Param(
         name='syncMsgVersion', param_type=Struct(name='SyncMsgVersion'))
     params['ttsName'] = Param(
         name='ttsName',
         param_type=Array(element_type=Struct(name='TTSChunk')))
     item = Function(name='RegisterAppInterface',
                     function_id=None,
                     message_type=EnumElement(name='request'),
                     params=params)
     expected = self.expected_template.copy()
     expected['kind'] = 'request'
     expected['function_id'] = 'REGISTER_APP_INTERFACE'
     expected['class_name'] = 'RegisterAppInterface'
     expected['extends_class'] = 'RPCRequest'
     expected['history'] = None
     expected['imports'] = [
         'androidx.annotation.NonNull', '',
         'com.smartdevicelink.protocol.enums.FunctionID',
         'com.smartdevicelink.proxy.RPCRequest', '', 'java.util.Hashtable',
         'java.util.List'
     ]
     expected['params'] = (self.producer.params(deprecated=None,
                                                key='KEY_SDL_MSG_VERSION',
                                                last='sdlMsgVersion',
                                                mandatory=True,
                                                SuppressWarnings=None,
                                                origin='syncMsgVersion',
                                                return_type='SdlMsgVersion',
                                                since=None,
                                                title='SdlMsgVersion',
                                                description=None,
                                                param_doc=None,
                                                name=None),
                           self.producer.params(
                               SuppressWarnings='unchecked',
                               deprecated=None,
                               key='KEY_TTS_NAME',
                               last='ttsName',
                               mandatory=True,
                               origin='ttsName',
                               description=None,
                               return_type='List<TTSChunk>',
                               since=None,
                               title='TtsName',
                               param_doc=None,
                               name=None))
     actual = self.producer.transform(item)
     self.comparison(expected, actual)
示例#28
0
    def test_gen_enum_element(self):
        """Test generation of the single enum element.

        Verifies correct generation of the single enum element.

        """
        generator = SmartFactoryBase.CodeGenerator()

        enum_element1 = EnumElement(name=u"Element1",
                                    internal_name=u"InternalName",
                                    value=u"10")

        self.assertEqual(
            generator._gen_enum_element(enum_element1),
            EXPECTED_RESULT_ENUM_ELEMENT1,
            "Short commented enum element with internal name is invalid")

        enum_element2 = EnumElement(name=u"NO_VALUE_ELEMENT",
                                    description=DESCRIPTION,
                                    design_description=DESIGN_DESCRIPTION)
        self.assertEqual(generator._gen_enum_element(enum_element2),
                         EXPECTED_RESULT_ENUM_ELEMENT2,
                         "Enum element with no value is invalid")
示例#29
0
    def test_preprocess_message_type(self):
        """Test preprocessing of the message_type enum.

        Verifies JSONPRC implementation of the _preprocess_message_type
        function.

        """

        generator = SmartFactoryJSONRPC.CodeGenerator()

        message_type_elements = collections.OrderedDict()
        message_type_elements[u"request"] = EnumElement(name=u"request")
        message_type_elements[u"response"] = EnumElement(name=u"response")
        message_type_elements[u"notification"] = EnumElement(
            name=u"notification")

        message_type = Enum(name=u"messageType",
                            elements=message_type_elements)

        result_enum = generator._preprocess_message_type(message_type)

        self.assertIn("error_response", result_enum.elements)
        self.assertEqual("error_response",
                         result_enum.elements["error_response"].primary_name)

        message_type_elements = collections.OrderedDict()
        message_type_elements[u"request"] = EnumElement(name=u"request")
        message_type_elements[u"notification"] = EnumElement(
            name=u"notification")

        message_type = Enum(name=u"messageType",
                            elements=message_type_elements)

        result_enum = generator._preprocess_message_type(message_type)

        self.assertNotIn("error_response", result_enum.elements)
示例#30
0
    def test_ButtonName(self):
        item = Enum(name='ButtonName', elements={
            'OK': EnumElement(name='OK')
        })
        expected = {
            'kind': 'simple',
            'package_name': 'com.smartdevicelink.proxy.rpc.enums',
            'class_name': 'ButtonName',
            'params': (
                self.producer.params(deprecated=None, value=None, description=None,
                                     name='OK', origin='OK', since=None, internal=None),),
            'since': None,
            'history': None,
            'deprecated': None
        }
        actual = self.producer.transform(item)

        self.comparison(expected, actual)