def get_parameter_type(self, pos, typ, attrs): """ Return a type object for a parameter at the given position, protocol buffer type, and procedure attributes """ attrs = _Attributes.get_parameter_type_attrs(pos, attrs) for attr in attrs: try: return self.as_type(attr) except ValueError: pass return self.as_type(typ)
def test_get_parameter_type_attributes(self): self.assertEqual([], Attributes.get_parameter_type_attrs(0, [])) self.assertEqual([], Attributes.get_parameter_type_attrs(0, ['Class.Method(ServiceName.ClassName,MethodName)'])) self.assertEqual([], Attributes.get_parameter_type_attrs(0, ['ReturnType.Class(ServiceName.ClassName)'])) self.assertEqual([], Attributes.get_parameter_type_attrs(0, ['Class.Method(ServiceName.ClassName,MethodName)', 'ReturnType.Class(ServiceName.ClassName)'])) self.assertEqual([], Attributes.get_parameter_type_attrs(1, ['ParameterType(2).Class(ServiceName.ClassName)'])) self.assertEqual(['Class(ServiceName.ClassName)'], Attributes.get_parameter_type_attrs(2, ['ParameterType(2).Class(ServiceName.ClassName)'])) self.assertEqual(['Class(ServiceName.ClassName2)'], Attributes.get_parameter_type_attrs(2, ['ParameterType(0).Class(ServiceName.ClassName1)', 'ParameterType(2).Class(ServiceName.ClassName2)'])) self.assertEqual(['Class(ServiceName.ClassName)'], Attributes.get_parameter_type_attrs(1, ['Class.Method(ServiceName.ClassName,MethodName)', 'ParameterType(1).Class(ServiceName.ClassName)'])) self.assertEqual(['List(string)'], Attributes.get_parameter_type_attrs(1, ['ParameterType(1).List(string)'])) self.assertEqual(['Dictionary(int32,string)'], Attributes.get_parameter_type_attrs(1, ['ParameterType(1).Dictionary(int32,string)'])) self.assertEqual(['Set(string)'], Attributes.get_parameter_type_attrs(1, ['ParameterType(1).Set(string)'])) self.assertEqual(['List(Dictionary(int32,string))'], Attributes.get_parameter_type_attrs(1, ['ParameterType(1).List(Dictionary(int32,string))'])) self.assertEqual(['Dictionary(int32,List(ServiceName.ClassName))'], Attributes.get_parameter_type_attrs(1, ['ParameterType(1).Dictionary(int32,List(ServiceName.ClassName))']))