summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandr Mishchenko <AMishchenko@luxoft.com>2020-03-24 14:26:32 +0100
committerAleksandr Mishchenko <AMishchenko@luxoft.com>2020-03-24 14:26:32 +0100
commit9a0d9f6c8b0d2c553125880410dcf4db01f85115 (patch)
tree05188fb70c7ce5f6377b764224c30f4e71ea5eac
parenta94c956876980df6680ffe78bd3f268351f39442 (diff)
downloadsdl_ios-9a0d9f6c8b0d2c553125880410dcf4db01f85115.tar.gz
Apply suggestions from code review
-rw-r--r--generator/templates/enums/template.h2
-rw-r--r--generator/templates/enums/template_numeric.h13
-rw-r--r--generator/test/runner.py15
-rw-r--r--generator/test/test_enums.py26
-rw-r--r--generator/test/test_functions.py34
-rw-r--r--generator/test/test_structs.py14
-rw-r--r--generator/transformers/enums_producer.py6
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)