summaryrefslogtreecommitdiff
path: root/SDL_Core/tools/InterfaceGenerator/test/generator/generators/test_SmartFactoryJSONRPC.py
diff options
context:
space:
mode:
Diffstat (limited to 'SDL_Core/tools/InterfaceGenerator/test/generator/generators/test_SmartFactoryJSONRPC.py')
-rwxr-xr-xSDL_Core/tools/InterfaceGenerator/test/generator/generators/test_SmartFactoryJSONRPC.py482
1 files changed, 0 insertions, 482 deletions
diff --git a/SDL_Core/tools/InterfaceGenerator/test/generator/generators/test_SmartFactoryJSONRPC.py b/SDL_Core/tools/InterfaceGenerator/test/generator/generators/test_SmartFactoryJSONRPC.py
deleted file mode 100755
index b21e32003..000000000
--- a/SDL_Core/tools/InterfaceGenerator/test/generator/generators/test_SmartFactoryJSONRPC.py
+++ /dev/null
@@ -1,482 +0,0 @@
-"""Test for JSONRPC SmartFactory generator.
-
-Verifies format specific functions and produced source code.
-
-"""
-import collections
-import codecs
-import os
-import unittest
-import uuid
-
-from mock import MagicMock
-from mock import call
-
-from generator.generators import SmartFactoryJSONRPC
-from generator import Model
-
-
-EXPECTED_RESULT_REQUEST = (
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_FUNCTION_ID] = CObjectSchemaItem::SMember("""
- u"""TEnumSchemaItem<FunctionID::eType>::create("""
- u"""function_id_items), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_MESSAGE_TYPE] = CObjectSchemaItem::SMember("""
- u"""TEnumSchemaItem<messageType::eType>::create("""
- u"""message_type_items), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PROTOCOL_VERSION] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PROTOCOL_TYPE] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_CORRELATION_ID] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
-)
-
-EXPECTED_RESULT_RESPONSE = (
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_FUNCTION_ID] = CObjectSchemaItem::SMember("""
- u"""TEnumSchemaItem<FunctionID::eType>::create("""
- u"""function_id_items), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_MESSAGE_TYPE] = CObjectSchemaItem::SMember("""
- u"""TEnumSchemaItem<messageType::eType>::create("""
- u"""message_type_items), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PROTOCOL_VERSION] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PROTOCOL_TYPE] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_CORRELATION_ID] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::kCode] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
-)
-
-EXPECTED_RESULT_NOTIFICATION = (
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_FUNCTION_ID] = CObjectSchemaItem::SMember("""
- u"""TEnumSchemaItem<FunctionID::eType>::create("""
- u"""function_id_items), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_MESSAGE_TYPE] = CObjectSchemaItem::SMember("""
- u"""TEnumSchemaItem<messageType::eType>::create("""
- u"""message_type_items), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PROTOCOL_VERSION] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u"""params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PROTOCOL_TYPE] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
-)
-
-EXPECTED_PRE_FUNCTION_CODE = (
- u""" std::map<std::string, CObjectSchemaItem::SMember> """
- u"""params_members;\n"""
- u""" params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_FUNCTION_ID] = CObjectSchemaItem::SMember("""
- u"""TEnumSchemaItem<FunctionID::eType>::create("""
- u"""function_id_items), true);\n"""
- u""" params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_MESSAGE_TYPE] = CObjectSchemaItem::SMember("""
- u"""TEnumSchemaItem<messageType::eType>::create("""
- u"""message_type_items), true);\n"""
- u""" params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PROTOCOL_VERSION] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u""" params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PROTOCOL_TYPE] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u""" params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_CORRELATION_ID] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u""" params_members[NsSmartDeviceLink::NsJSONHandler"""
- u"""::strings::kCode] = CObjectSchemaItem::SMember("""
- u"""TNumberSchemaItem<int>::create(), true);\n"""
- u""" params_members[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::kMessage] = CObjectSchemaItem::SMember("""
- u"""CStringSchemaItem::create(), true);\n"""
- u"""\n"""
- u""" std::map<std::string, CObjectSchemaItem::SMember> """
- u"""root_members_map;\n"""
- u""" root_members_map[NsSmartDeviceLink::NsJSONHandler::"""
- u"""strings::S_PARAMS] = CObjectSchemaItem::SMember("""
- u"""CObjectSchemaItem::create(params_members), true);\n"""
- u"""\n"""
- u""" CSmartSchema error_response_schema(CObjectSchemaItem::create("""
- u"""root_members_map));\n"""
- u"""\n"""
- u""" functions_schemes_.insert(std::make_pair("""
- u"""NsSmartDeviceLink::NsJSONHandler::SmartSchemaKey<"""
- u"""FunctionID::eType, messageType::eType>("""
- u"""FunctionID::request, messageType::error_response)"""
- u""", error_response_schema));\n"""
- u"""\n"""
-)
-
-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")]
-
-TODOS = [u"Do1", u"Do2"]
-
-
-class Test(unittest.TestCase):
-
- """Test for JSONRPC SmartFactory generator.
-
- This class holds set of test cases for the JSONRPC SmartFactory generator.
-
- """
-
- def test_gen_schema_params_fill(self):
- """Test feature that allows to create format specific PARAMS.
-
- Verifies JSONRPC implementation of the _gen_schema_params_fill
- method.
-
- """
- generator = SmartFactoryJSONRPC.CodeGenerator()
-
- self.assertEqual(generator._gen_schema_params_fill("request"),
- EXPECTED_RESULT_REQUEST,
- "Invalid code generation for request")
-
- self.assertEqual(generator._gen_schema_params_fill(u"request"),
- EXPECTED_RESULT_REQUEST,
- "Invalid code generation for request")
-
- self.assertEqual(generator._gen_schema_params_fill("response"),
- EXPECTED_RESULT_RESPONSE,
- "Invalid code generation for response")
-
- self.assertEqual(generator._gen_schema_params_fill(u"response"),
- EXPECTED_RESULT_RESPONSE,
- "Invalid code generation for response")
-
- self.assertEqual(generator._gen_schema_params_fill("notification"),
- EXPECTED_RESULT_NOTIFICATION,
- "Invalid code generation for notification")
-
- self.assertEqual(generator._gen_schema_params_fill(u"notification"),
- EXPECTED_RESULT_NOTIFICATION,
- "Invalid code generation for notification")
-
- 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"] = Model.EnumElement(name=u"request")
- message_type_elements[u"response"] = Model.EnumElement(
- name=u"response")
- message_type_elements[u"notification"] = Model.EnumElement(
- name=u"notification")
-
- message_type = Model.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"] = Model.EnumElement(name=u"request")
- message_type_elements[u"notification"] = Model.EnumElement(
- name=u"notification")
-
- message_type = Model.Enum(name=u"messageType",
- elements=message_type_elements)
-
- result_enum = generator._preprocess_message_type(message_type)
-
- self.assertNotIn("error_response", result_enum.elements)
-
- def test_gen_pre_function_schemas(self):
- """Test code that goes before schema initialization.
-
- Verifies JSONPRC implementation of the _gen_pre_function_schemas
- function.
-
- """
-
- 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"] = Model.EnumElement(name=u"request")
- message_type_elements[u"response"] = Model.EnumElement(
- name=u"response")
- message_type_elements[u"notification"] = Model.EnumElement(
- name=u"notification")
-
- message_type = Model.Enum(name=u"messageType",
- elements=message_type_elements)
-
- function1 = Model.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 = Model.Function(
- "func2", function_id=message_type.elements[u"request"],
- message_type=message_type.elements[u"response"])
-
- 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")
-
- def test_full_generation(self):
- """Test full generation using JSONRPC SmartSchema generator.
-
- Creates output files which is captured by the mock and compare them
- with sample files with correct code. This test requires valid
- test_expected_jsonrpc.h and test_expected_jsonrpc.cc in the same
- directory as this module.
-
- """
-
- expected_h_file_content = open("test_expected_jsonrpc.h", "r").read()
- expected_cc_file_content = open("test_expected_jsonrpc.cc", "r").read()
-
- generator = SmartFactoryJSONRPC.CodeGenerator()
-
- message_type_elements = collections.OrderedDict()
- message_type_elements[u"request"] = Model.EnumElement(name=u"request")
- message_type_elements[u"response"] = Model.EnumElement(
- name=u"response")
- message_type_elements[u"notification"] = Model.EnumElement(
- name=u"notification")
-
- message_type = Model.Enum(name=u"messageType",
- elements=message_type_elements)
-
- elements1 = collections.OrderedDict()
- elements1[u"name1"] = Model.EnumElement(
- name=u"name1",
- design_description=DESIGN_DESCRIPTION,
- todos=TODOS,
- value=u"1")
- elements1[u"name2"] = Model.EnumElement(
- name="name2",
- description=DESCRIPTION,
- issues=ISSUES,
- internal_name=u"internal_name2")
-
- enum1 = Model.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")
-
- enum2 = Model.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)
-
- 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)
-
- enums = collections.OrderedDict()
- enums["Enum1"] = enum1
- enums["Enum2"] = enum2
- enums["Enum3"] = enum3
- enums["Enum4"] = enum4
- enums["messageType"] = message_type
-
- params1 = collections.OrderedDict()
- params1["1"] = Model.FunctionParam(
- name="param1",
- design_description=DESIGN_DESCRIPTION,
- description=DESCRIPTION,
- issues=ISSUES,
- todos=TODOS,
- param_type=enum4,
- default_value=elements4["name1"])
- params1["2"] = Model.FunctionParam(
- name="param2",
- param_type=Model.EnumSubset(
- name="sub1",
- enum=enum1,
- allowed_elements={"e1": elements1["name1"]}),
- default_value=elements1["name1"])
-
- functions = collections.OrderedDict()
- functions["Function1"] = Model.Function(
- name="Function1",
- function_id=elements1["name1"],
- message_type=message_type_elements["request"],
- params=params1)
- functions["Function2"] = Model.Function(
- name="Function2",
- function_id=elements2["xxx"],
- message_type=message_type_elements["response"])
- functions["Function3"] = Model.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(
- name="enumSubset1",
- param_type=Model.EnumSubset(
- name="sub",
- enum=enum1,
- allowed_elements={"e1": elements1["name1"]}),
- is_mandatory=False)
- members1["1"] = Model.Param(
- name="arrayOfInt",
- param_type=Model.Array(min_size=0,
- max_size=20,
- element_type=Model.Boolean()),
- is_mandatory=False)
- members1["2"] = Model.Param(
- name="arrayOfEnum1",
- param_type=Model.Array(min_size=0,
- max_size=20,
- element_type=enum1),
- is_mandatory=False)
- members1["3"] = Model.Param(
- name="arrayOfEnum3",
- param_type=Model.Array(min_size=10,
- max_size=40,
- element_type=enum3),
- is_mandatory=True)
- members1["4"] = Model.Param(
- name="arrayOfEnum4",
- param_type=Model.Array(
- min_size=10,
- max_size=41,
- element_type=Model.EnumSubset(
- name="sub1",
- enum=enum1,
- allowed_elements={"e1": elements1["name1"]})))
- members1["5"] = Model.Param(
- name="arrayOfEnum5",
- param_type=Model.Array(
- min_size=10,
- max_size=42,
- element_type=Model.EnumSubset(
- name="sub2",
- enum=enum1,
- allowed_elements={"e1": elements1["name2"]})))
- members1["6"] = Model.Param(
- name="arrayOfEnum6",
- param_type=Model.Array(
- min_size=10,
- max_size=43,
- element_type=Model.EnumSubset(
- name="sub3",
- enum=enum4,
- allowed_elements={"e1": elements4["name2"]})))
-
- structs = collections.OrderedDict()
- structs["Struct1"] = Model.Struct(
- name="Struct1",
- design_description=DESIGN_DESCRIPTION,
- issues=ISSUES,
- members=members1)
- structs["Struct2"] = Model.Struct(name="Struct2",
- issues=ISSUES)
-
- interface = Model.Interface(enums=enums,
- structs=structs,
- functions=functions,
- params={"param1": "value1",
- "param2": "value2"})
-
- os.path.exists = MagicMock(return_value=True)
- uuid.uuid1 = MagicMock(
- return_value=uuid.UUID("12345678123456781234567812345678"))
- codecs.open = MagicMock()
-
- generator.generate(interface=interface,
- filename="Test.xml",
- namespace="XXX::YYY::ZZZ",
- destination_dir="/some/test/dir")
-
- os.path.exists.assert_has_calls([call('/some/test/dir')])
-
- open_result = codecs.open
- mock_calls = open_result.mock_calls
-
- self.assertEqual(mock_calls[0],
- call('/some/test/dir/Test.h',
- mode='w',
- encoding='utf-8'),
- "Invalid header file creation")
-
- self.assertEqual(mock_calls[4],
- call('/some/test/dir/Test.cc',
- mode='w',
- encoding='utf-8'),
- "Invalid source file creation")
-
- 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")