diff options
Diffstat (limited to 'tools/InterfaceGenerator/test/generator/generators/test_SmartFactorySDLRPC.py')
-rwxr-xr-x | tools/InterfaceGenerator/test/generator/generators/test_SmartFactorySDLRPC.py | 231 |
1 files changed, 127 insertions, 104 deletions
diff --git a/tools/InterfaceGenerator/test/generator/generators/test_SmartFactorySDLRPC.py b/tools/InterfaceGenerator/test/generator/generators/test_SmartFactorySDLRPC.py index 3c354cd34b..4b21a64ec1 100755 --- a/tools/InterfaceGenerator/test/generator/generators/test_SmartFactorySDLRPC.py +++ b/tools/InterfaceGenerator/test/generator/generators/test_SmartFactorySDLRPC.py @@ -3,18 +3,36 @@ Verifies format specific functions and produced source code. """ -import collections import codecs +import collections import os import unittest import uuid - -from mock import MagicMock -from mock import call - -from generator.generators import SmartFactorySDLRPC -from generator import Model - +from pathlib import Path +from unittest.mock import MagicMock +from unittest.mock import call + +import sys + +sys.path.append(Path(__file__).absolute().parents[3].as_posix()) +sys.path.append(Path(__file__).absolute().parents[4].joinpath('rpc_spec/InterfaceParser').as_posix()) +try: + from generator.generators import SmartFactorySDLRPC + from model.array import Array + from model.boolean import Boolean + from model.float import Float + from model.enum import Enum + from model.enum_element import EnumElement + from model.enum_subset import EnumSubset + from model.function import Function + from model.integer import Integer + from model.interface import Interface + from model.issue import Issue + from model.param import Param + from model.struct import Struct +except ModuleNotFoundError as error: + print('{}.\nProbably you did not initialize submodule'.format(error)) + sys.exit(1) EXPECTED_NOTIFICATION_RESULT = ( u"""params_members[ns_smart_device_link::ns_json_handler::""" @@ -41,15 +59,14 @@ DESCRIPTION = [u"Description Line1", u"Description Line2"] DESIGN_DESCRIPTION = [u"Design Line1"] -ISSUES = [Model.Issue(value=u"Issue1"), - Model.Issue(value=u"Issue2"), - Model.Issue(value=u"Issue3")] +ISSUES = [Issue(value=u"Issue1"), + Issue(value=u"Issue2"), + Issue(value=u"Issue3")] TODOS = [u"Do1", u"Do2"] class Test(unittest.TestCase): - """Test for SLDRPC SmartFactory generator. This class holds set of test cases for the SDLRPC SmartFactory generator. @@ -107,66 +124,66 @@ class Test(unittest.TestCase): this module. """ - - expected_h_file_content = open("test_expected_sdlrpc.h", "r").read() - expected_cc_file_content = open("test_expected_sdlrpc.cc", "r").read() + self.maxDiff = None + expected_h_file_content = Path(__file__).parents[0].joinpath('test_expected_sdlrpc.h').read_text() + expected_cc_file_content = Path(__file__).parents[0].joinpath('test_expected_sdlrpc.cc').read_text() generator = SmartFactorySDLRPC.CodeGenerator() message_type_elements = collections.OrderedDict() - message_type_elements[u"request"] = Model.EnumElement(name=u"request") - message_type_elements[u"response"] = Model.EnumElement( + message_type_elements[u"request"] = EnumElement(name=u"request") + message_type_elements[u"response"] = EnumElement( name=u"response") - message_type_elements[u"notification"] = Model.EnumElement( + message_type_elements[u"notification"] = EnumElement( name=u"notification") - message_type = Model.Enum(name=u"messageType", - elements=message_type_elements) + message_type = Enum(name=u"messageType", + elements=message_type_elements) elements1 = collections.OrderedDict() - elements1[u"name1"] = Model.EnumElement( + elements1[u"name1"] = EnumElement( name=u"name1", design_description=DESIGN_DESCRIPTION, todos=TODOS, value=u"1") - elements1[u"name2"] = Model.EnumElement( + elements1[u"name2"] = EnumElement( name="name2", description=DESCRIPTION, issues=ISSUES, internal_name=u"internal_name2") - enum1 = Model.Enum(name=u"Enum1", - todos=TODOS, - elements=elements1) + enum1 = Enum(name=u"Enum1", + todos=TODOS, + elements=elements1) elements2 = collections.OrderedDict() - elements2[u"xxx"] = Model.EnumElement(name=u"xxx", - internal_name=u"val_1") - elements2[u"yyy"] = Model.EnumElement(name=u"yyy", - internal_name=u"val_2", - value=u"100") - elements2[u"zzz"] = Model.EnumElement(name=u"val_3") + 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 = Model.Enum(name=u"E2", - elements=elements2) + enum2 = Enum(name=u"E2", + elements=elements2) elements3 = collections.OrderedDict() - elements3["1"] = Model.EnumElement(name="xxx", - internal_name="_1") - elements3["2"] = Model.EnumElement(name="xxx", - internal_name="_2") - elements3["3"] = Model.EnumElement(name="xxx", - internal_name="_3") - enum3 = Model.Enum(name="Enum_new2", - elements=elements3) + elements3["1"] = EnumElement(name="xxx", + internal_name="_1") + elements3["2"] = EnumElement(name="xxx", + internal_name="_2") + elements3["3"] = EnumElement(name="xxx", + internal_name="_3") + enum3 = Enum(name="Enum_new2", + elements=elements3) elements4 = collections.OrderedDict() - elements4["name1"] = Model.EnumElement(name="xxx", - internal_name="_11") - elements4["name2"] = Model.EnumElement(name="xxx", - internal_name="_22") - enum4 = Model.Enum(name="Enum_new4", - elements=elements4) + elements4["name1"] = EnumElement(name="xxx", + internal_name="_11") + elements4["name2"] = EnumElement(name="xxx", + internal_name="_22") + enum4 = Enum(name="Enum_new4", + elements=elements4) enums = collections.OrderedDict() enums["Enum1"] = enum1 @@ -176,7 +193,7 @@ class Test(unittest.TestCase): enums["messageType"] = message_type params1 = collections.OrderedDict() - params1["1"] = Model.FunctionParam( + params1["1"] = Param( name="param1", design_description=DESIGN_DESCRIPTION, description=DESCRIPTION, @@ -184,110 +201,110 @@ class Test(unittest.TestCase): todos=TODOS, param_type=enum4, default_value=elements4["name1"]) - params1["2"] = Model.FunctionParam( + params1["2"] = Param( name="param2", - param_type=Model.EnumSubset( + param_type=EnumSubset( name="sub1", enum=enum1, allowed_elements={"e1": elements1["name1"]}), default_value=elements1["name1"]) functions = collections.OrderedDict() - functions["Function1"] = Model.Function( + functions["Function1"] = Function( name="Function1", function_id=elements1["name1"], message_type=message_type_elements["request"], params=params1) - functions["Function2"] = Model.Function( + functions["Function2"] = Function( name="Function2", function_id=elements2["xxx"], message_type=message_type_elements["response"]) - functions["Function3"] = Model.Function( + functions["Function3"] = Function( name="Function2", function_id=elements2["yyy"], message_type=message_type_elements["notification"]) members1 = collections.OrderedDict() - members1["m1"] = Model.Param(name="intParam", - param_type=Model.Integer(max_value=2)) - members1["m11"] = Model.Param(name="doubleParam", - param_type=Model.Double(min_value=0.333), - is_mandatory=False) - members1["m222"] = Model.Param(name="boolParam", - param_type=Model.Boolean()) - members1["m2"] = Model.Param(name="structParam", - param_type=Model.Struct(name="Struct2")) - members1["aaa"] = Model.Param(name="enumParam", - param_type=enum1) - members1["bbb"] = Model.Param(name="enumParam1", - param_type=enum1) - members1["xxx"] = Model.Param( + members1["m1"] = Param(name="intParam", + param_type=Integer(max_value=2)) + members1["m11"] = Param(name="doubleParam", + param_type=Float(min_value=0.333), + is_mandatory=False) + members1["m222"] = Param(name="boolParam", + param_type=Boolean()) + members1["m2"] = Param(name="structParam", + param_type=Struct(name="Struct2")) + members1["aaa"] = Param(name="enumParam", + param_type=enum1) + members1["bbb"] = Param(name="enumParam1", + param_type=enum1) + members1["xxx"] = Param( name="enumSubset1", - param_type=Model.EnumSubset( + param_type=EnumSubset( name="sub", enum=enum1, allowed_elements={"e1": elements1["name1"]}), is_mandatory=False) - members1["1"] = Model.Param( + members1["1"] = Param( name="arrayOfInt", - param_type=Model.Array(min_size=0, - max_size=20, - element_type=Model.Boolean()), + param_type=Array(min_size=0, + max_size=20, + element_type=Boolean()), is_mandatory=False) - members1["2"] = Model.Param( + members1["2"] = Param( name="arrayOfEnum1", - param_type=Model.Array(min_size=0, - max_size=20, - element_type=enum1), + param_type=Array(min_size=0, + max_size=20, + element_type=enum1), is_mandatory=False) - members1["3"] = Model.Param( + members1["3"] = Param( name="arrayOfEnum3", - param_type=Model.Array(min_size=10, - max_size=40, - element_type=enum3), + param_type=Array(min_size=10, + max_size=40, + element_type=enum3), is_mandatory=True) - members1["4"] = Model.Param( + members1["4"] = Param( name="arrayOfEnum4", - param_type=Model.Array( + param_type=Array( min_size=10, max_size=41, - element_type=Model.EnumSubset( + element_type=EnumSubset( name="sub1", enum=enum1, allowed_elements={"e1": elements1["name1"]}))) - members1["5"] = Model.Param( + members1["5"] = Param( name="arrayOfEnum5", - param_type=Model.Array( + param_type=Array( min_size=10, max_size=42, - element_type=Model.EnumSubset( + element_type=EnumSubset( name="sub2", enum=enum1, allowed_elements={"e1": elements1["name2"]}))) - members1["6"] = Model.Param( + members1["6"] = Param( name="arrayOfEnum6", - param_type=Model.Array( + param_type=Array( min_size=10, max_size=43, - element_type=Model.EnumSubset( + element_type=EnumSubset( name="sub3", enum=enum4, allowed_elements={"e1": elements4["name2"]}))) structs = collections.OrderedDict() - structs["Struct1"] = Model.Struct( + structs["Struct1"] = Struct( name="Struct1", design_description=DESIGN_DESCRIPTION, issues=ISSUES, members=members1) - structs["Struct2"] = Model.Struct(name="Struct2", - issues=ISSUES) + structs["Struct2"] = Struct(name="Struct2", + issues=ISSUES) - interface = Model.Interface(enums=enums, - structs=structs, - functions=functions, - params={"param1": "value1", - "param2": "value2"}) + interface = Interface(enums=enums, + structs=structs, + functions=functions, + params={"param1": "value1", + "param2": "value2"}) os.path.exists = MagicMock(return_value=True) uuid.uuid1 = MagicMock( @@ -311,15 +328,21 @@ class Test(unittest.TestCase): "Invalid header file creation") self.assertEqual(mock_calls[4], - call('/some/test/dir/Test.cc', + call('/some/test/dir/Test_schema.h', mode='w', encoding='utf-8'), "Invalid source file creation") + try: + self.assertSequenceEqual(str(mock_calls[2])[27:-2].replace("\\n", "\n"), + expected_h_file_content, + "Invalid header file content") + + self.assertSequenceEqual(str(mock_calls[6])[27:-2].replace("\\n", "\n"), + expected_cc_file_content, + "Invalid source file content") + except AssertionError as message: + print(message) - self.assertEqual(str(mock_calls[2])[27:-2].replace("\\n", "\n"), - expected_h_file_content, - "Invalid header file content") - self.assertEqual(str(mock_calls[6])[27:-2].replace("\\n", "\n"), - expected_cc_file_content, - "Invalid source file content") +if __name__ == '__main__': + unittest.main() |