diff options
author | Aleksandr Mishchenko <AMishchenko@luxoft.com> | 2020-03-24 14:26:32 +0100 |
---|---|---|
committer | Aleksandr Mishchenko <AMishchenko@luxoft.com> | 2020-03-24 14:26:32 +0100 |
commit | 9a0d9f6c8b0d2c553125880410dcf4db01f85115 (patch) | |
tree | 05188fb70c7ce5f6377b764224c30f4e71ea5eac | |
parent | a94c956876980df6680ffe78bd3f268351f39442 (diff) | |
download | sdl_ios-9a0d9f6c8b0d2c553125880410dcf4db01f85115.tar.gz |
Apply suggestions from code review
-rw-r--r-- | generator/templates/enums/template.h | 2 | ||||
-rw-r--r-- | generator/templates/enums/template_numeric.h | 13 | ||||
-rw-r--r-- | generator/test/runner.py | 15 | ||||
-rw-r--r-- | generator/test/test_enums.py | 26 | ||||
-rw-r--r-- | generator/test/test_functions.py | 34 | ||||
-rw-r--r-- | generator/test/test_structs.py | 14 | ||||
-rw-r--r-- | generator/transformers/enums_producer.py | 6 |
7 files changed, 81 insertions, 29 deletions
diff --git a/generator/templates/enums/template.h b/generator/templates/enums/template.h index 033626c1c..122fe0f15 100644 --- a/generator/templates/enums/template.h +++ b/generator/templates/enums/template.h @@ -1,4 +1,4 @@ -{#- String based enum. If the enum element doesn't have values it going to be string enum -#} +{#- String based enum -#} {% include 'copyright.txt' %} {% block imports -%} {%- for import in imports %} diff --git a/generator/templates/enums/template_numeric.h b/generator/templates/enums/template_numeric.h deleted file mode 100644 index f16e8f834..000000000 --- a/generator/templates/enums/template_numeric.h +++ /dev/null @@ -1,13 +0,0 @@ -{#- Numeric based enum. If the enum element values are numeric the enum should be a numerical. - This template extends base "templates/enums/template.h" and overriding block body -#} -{% extends "template.h" %} -{%- block body %} -{% include 'description.jinja' %} -typedef NS_ENUM(NSUInteger, {{ name }}){ -{% for param in params %} -{%- macro description_param() -%}{% include 'description_param.jinja' %}{%- endmacro -%} -{{ description_param()|indent(4, True) }} - {{ name }}{{ param.name }} = {{ param.value }}{{ " __deprecated" if param.deprecated }}{{',' if not loop.last }} -{% endfor -%} -}; -{% endblock -%}
\ No newline at end of file diff --git a/generator/test/runner.py b/generator/test/runner.py index ac72c6a2e..2cb413227 100644 --- a/generator/test/runner.py +++ b/generator/test/runner.py @@ -36,7 +36,17 @@ def config_logging(): def main(): """ - Entry point for parser and generator + Without performing Tests (simple instances initialization) there are following initial test code coverage: + generator/transformers/common_producer.py 21% + generator/transformers/enums_producer.py 24% + generator/transformers/functions_producer.py 18% + generator/transformers/structs_producer.py 32% + + After performing Tests there are following initial test code coverage: + generator/transformers/common_producer.py 100% + generator/transformers/enums_producer.py 100% + generator/transformers/functions_producer.py 100% + generator/transformers/structs_producer.py 100% """ config_logging() suite = TestSuite() @@ -51,4 +61,7 @@ def main(): if __name__ == '__main__': + """ + Entry point for parser and generator. + """ main() diff --git a/generator/test/test_enums.py b/generator/test/test_enums.py index b7205e984..912dafe30 100644 --- a/generator/test/test_enums.py +++ b/generator/test/test_enums.py @@ -12,6 +12,10 @@ class TestEnumsProducer(TestCase): class EnumsProducer. All names of Enums and nested elements doesn't reflating with real Enums and could be replaces with some meaningless names. + + After performing Tests there are following initial test code coverage: + generator/transformers/common_producer.py 34% + generator/transformers/enums_producer.py 100% """ def setUp(self): @@ -20,6 +24,10 @@ class TestEnumsProducer(TestCase): self.producer = EnumsProducer('SDLEnum') 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) @@ -31,16 +39,20 @@ class TestEnumsProducer(TestCase): expected['name'] = 'SDLFunctionID' expected['imports'] = {'.h': {'SDLEnum'}, '.m': {'SDLEnum'}} expected['params'] = ( - self.producer.param_named(description=[], name='Reserved', origin='RESERVED', since=None, value=0), + self.producer.param_named(description=[], name='Reserved', origin='RESERVED', since=None), self.producer.param_named(description=[], name='RegisterAppInterface', origin='RegisterAppInterfaceID', - since=None, value=None), + since=None), self.producer.param_named(description=[], name='PerformAudioPassThru', origin='PerformAudioPassThruID', - since=None, value=None),) + since=None),) actual = self.producer.transform(item) self.assertDictEqual(expected, actual) 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') @@ -53,11 +65,11 @@ class TestEnumsProducer(TestCase): expected['name'] = 'SDLTextFieldName' expected['imports'] = {'.h': {'SDLEnum'}, '.m': {'SDLEnum'}} expected['params'] = ( - self.producer.param_named(description=[], name='Success', origin='SUCCESS', since=None, value=None), - self.producer.param_named(description=[], name='MainField1', origin='mainField1', since=None, value=None), - self.producer.param_named(description=[], name='H264', origin='H264', since=None, value=None), + self.producer.param_named(description=[], name='Success', origin='SUCCESS', since=None), + self.producer.param_named(description=[], name='MainField1', origin='mainField1', since=None), + self.producer.param_named(description=[], name='H264', origin='H264', since=None), self.producer.param_named(description=[], name='UnsupportedRequest', origin='UNSUPPORTED_REQUEST', - since=None, value=None)) + since=None)) actual = self.producer.transform(item) self.assertDictEqual(expected, actual) diff --git a/generator/test/test_functions.py b/generator/test/test_functions.py index a481317c3..44af42c7e 100644 --- a/generator/test/test_functions.py +++ b/generator/test/test_functions.py @@ -19,8 +19,12 @@ class TestFunctionsProducer(TestCase): """ The structures of tests in this class was prepared to cover all possible combinations of code branching in tested class FunctionsProducer. - All names of Functions and nested elements doesn't reflating with real Enums + All names of Functions and nested elements doesn't reflating with real Functions and could be replaces with some meaningless names. + + After performing Tests there are following initial test code coverage: + generator/transformers/common_producer.py 99% + generator/transformers/functions_producer.py 100% """ def setUp(self): @@ -37,6 +41,10 @@ class TestFunctionsProducer(TestCase): self.producer = FunctionsProducer(paths, names) 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', @@ -84,6 +92,10 @@ class TestFunctionsProducer(TestCase): self.assertCountEqual(expected, actual['params']) def test_RegisterAppInterfaceRequest(self): + """ + generator/transformers/common_producer.py 85% + generator/transformers/functions_producer.py 63% + """ params = OrderedDict() params['syncMsgVersion'] = Param( name='syncMsgVersion', param_type=Struct(name='SyncMsgVersion', description=['Specifies the'], members={ @@ -177,6 +189,10 @@ class TestFunctionsProducer(TestCase): self.assertDictEqual(expected, actual) def test_RegisterAppInterfaceResponse(self): + """ + generator/transformers/common_producer.py 82% + generator/transformers/functions_producer.py 63% + """ params = OrderedDict() params['success'] = Param(name='success', param_type=Boolean(), description=[' True if '], is_mandatory=False) params['language'] = Param(name='language', is_mandatory=False, param_type=Enum(name='Language', elements={ @@ -238,6 +254,10 @@ class TestFunctionsProducer(TestCase): self.assertDictEqual(expected, actual) 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')) @@ -267,6 +287,10 @@ class TestFunctionsProducer(TestCase): self.assertDictEqual(expected, actual) def test_CreateWindow(self): + """ + generator/transformers/common_producer.py 82% + generator/transformers/functions_producer.py 63% + """ params = OrderedDict() params['windowID'] = Param(name='windowID', param_type=Integer()) params['cmdID'] = Param(name='cmdID', param_type=Integer(max_value=2000000000, min_value=0)) @@ -350,6 +374,10 @@ class TestFunctionsProducer(TestCase): self.assertDictEqual(expected, actual) 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'), @@ -379,6 +407,10 @@ class TestFunctionsProducer(TestCase): self.assertDictEqual(expected, actual) 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'), diff --git a/generator/test/test_structs.py b/generator/test/test_structs.py index 77186799e..838e13254 100644 --- a/generator/test/test_structs.py +++ b/generator/test/test_structs.py @@ -12,8 +12,12 @@ class TestStructsProducer(TestCase): """ The structures of tests in this class was prepared to cover all possible combinations of code branching in tested class StructsProducer. - All names of Structs and nested elements doesn't reflating with real Enums + All names of Structs and nested elements doesn't reflating with real Structs and could be replaces with some meaningless names. + + After performing Tests there are following initial test code coverage: + generator/transformers/common_producer.py 72% + generator/transformers/structs_producer.py 100% """ def setUp(self): @@ -22,6 +26,10 @@ class TestStructsProducer(TestCase): self.producer = StructsProducer('SDLRPCStruct', ['Image']) def test_CloudAppProperties(self): + """ + generator/transformers/common_producer.py 64% + generator/transformers/structs_producer.py 100% + """ item = Struct(name='CloudAppProperties', members={ 'appID': Param(name='appID', param_type=String()) }) @@ -49,6 +57,10 @@ class TestStructsProducer(TestCase): self.assertDictEqual(expected, actual) def test_TouchEvent(self): + """ + generator/transformers/common_producer.py 69% + generator/transformers/structs_producer.py 100% + """ item = Struct(name='TouchEvent', members={ 'id': Param(name='id', param_type=Integer(max_value=9, min_value=0)) }) diff --git a/generator/transformers/enums_producer.py b/generator/transformers/enums_producer.py index f458e243f..e9f1c71dd 100644 --- a/generator/transformers/enums_producer.py +++ b/generator/transformers/enums_producer.py @@ -20,7 +20,7 @@ class EnumsProducer(InterfaceProducerCommon): container_name='elements') self.enum_class = enum_class self.logger = logging.getLogger(self.__class__.__name__) - self.param_named = namedtuple('param_named', 'origin description name since value') + self.param_named = namedtuple('param_named', 'origin description name since') def transform(self, item: Enum, render: dict = None) -> dict: """ @@ -40,8 +40,6 @@ class EnumsProducer(InterfaceProducerCommon): render['name'] = name render['imports'] = imports super(EnumsProducer, self).transform(item, render) - if any(map(lambda p: p.value, render['params'])): - render['template'] = 'enums/template_numeric' return render def extract_param(self, param: EnumElement): @@ -69,6 +67,4 @@ class EnumsProducer(InterfaceProducerCommon): name.append(item.title()) data['name'] = ''.join(name) - data['value'] = param.value - return self.param_named(**data) |