summaryrefslogtreecommitdiff
path: root/test/components/json_handler/include/json_handler/formatter_json_alrpcv1_test.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/components/json_handler/include/json_handler/formatter_json_alrpcv1_test.h')
-rw-r--r--test/components/json_handler/include/json_handler/formatter_json_alrpcv1_test.h991
1 files changed, 0 insertions, 991 deletions
diff --git a/test/components/json_handler/include/json_handler/formatter_json_alrpcv1_test.h b/test/components/json_handler/include/json_handler/formatter_json_alrpcv1_test.h
deleted file mode 100644
index 6f5b7acce..000000000
--- a/test/components/json_handler/include/json_handler/formatter_json_alrpcv1_test.h
+++ /dev/null
@@ -1,991 +0,0 @@
-// Copyright (c) 2013, Ford Motor Company
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-//
-// Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided with the
-// distribution.
-//
-// Neither the name of the Ford Motor Company nor the names of its contributors
-// may be used to endorse or promote products derived from this software
-// without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 'A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef TEST_COMPONENTS_JSON_HANDLER_INCLUDE_JSON_HANDLER_FORMATTERS_FORMATTER_JSON_ALRPCV1_TEST_H_
-#define TEST_COMPONENTS_JSON_HANDLER_INCLUDE_JSON_HANDLER_FORMATTERS_FORMATTER_JSON_ALRPCV1_TEST_H_
-
-#include "gtest/gtest.h"
-#include "gmock/gmock.h"
-
-#include <iostream>
-#include "json/json.h"
-
-#include "formatters/CFormatterJsonSDLRPCv1.hpp"
-#include "formatters/CSmartFactory.hpp"
-
-#include "smart_objects/array_schema_item.h"
-#include "smart_objects/bool_schema_item.h"
-#include "smart_objects/object_schema_item.h"
-#include "smart_objects/string_schema_item.h"
-#include "smart_objects/enum_schema_item.h"
-#include "smart_objects/number_schema_item.h"
-#include "smart_objects/schema_item_parameter.h"
-
-#include "formatter_test_helper.h"
-
-
-namespace test { namespace components { namespace json_handler { namespace formatters {
-
- // The code below is cut and paste from the generated code just to provide necessary environment for string <-> enum conversion.
- namespace FunctionID
- {
- /**
- * @brief Enumeration FunctionID.
- */
- enum eType
- {
- /**
- * @brief INVALID_ENUM.
- */
- INVALID_ENUM = -1,
-
- /**
- * @brief RegisterAppInterface.
- */
- RegisterAppInterface,
-
- /**
- * @brief UnregisterAppInterface.
- */
- UnregisterAppInterface,
-
- /**
- * @brief SetGlobalProperties.
- */
- SetGlobalProperties,
-
- // ...
- };
- }
-
- namespace messageType
- {
- /**
- * @brief Enumeration messageType.
- */
- enum eType
- {
- /**
- * @brief INVALID_ENUM.
- */
- INVALID_ENUM = -1,
-
- /**
- * @brief request.
- */
- request,
-
- /**
- * @brief response.
- */
- response,
-
- /**
- * @brief notification.
- */
- notification
- };
- }
- // end of cut and pasted code
-
- using namespace NsSmartDeviceLink::NsJSONHandler::strings;
- typedef NsSmartDeviceLink::NsJSONHandler::Formatters::CFormatterJsonSDLRPCv1 FormatterV1;
-
- TEST_F(CFormatterTestHelper, test_fromObjToALRPCv1AndBack)
- {
- Json::Value value; // just a quick workaround to avoid undefined reference to Json
- Json::Reader reader; // the same thing
-
- std::string str;
- NsSmartDeviceLink::NsSmartObjects::SmartObject srcObj;
- NsSmartDeviceLink::NsSmartObjects::SmartObject dstObj;
-
- fillTestObject(srcObj);
- srcObj[S_PARAMS][S_FUNCTION_ID] = "UnregisterAppInterface"; // a hack, it shouldn't be a string in the SmartObject
- srcObj[S_PARAMS][S_MESSAGE_TYPE] = "request"; // the same thing
- srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 1;
-
- // SmartObjects --> JSON
- FormatterV1::toString(srcObj, str);
-
- //std::cout << str << std::endl;
-
- // JSON --> SmartObjects
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str, dstObj);
-
- ASSERT_EQ(FormatterV1::kSuccess, result) << "Error parsing JSON string";
-
- srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionID::UnregisterAppInterface; // write the proper enum values
- srcObj[S_PARAMS][S_MESSAGE_TYPE] = messageType::request;
-
- compareObjects(srcObj, dstObj);
- }
-
- TEST_F(CFormatterTestHelper, test_fromJsonALRPCv1)
- {
- std::string str = "\
- {\
- \"request\": {\
- \"name\" : \"SetGlobalProperties\",\
- \"correlationID\": 11,\
- \"parameters\": {\
- \"syncMsgVersion\": \"version\",\
- \"appName\": \"some app name\",\
- \"ttsName\": [{\
- \"text\": \"ABC\",\
- \"type\": \"TEXT\"\
- }],\
- \"vrSynonyms\": [\"Synonym 1\", \"Synonym 2\"]\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj;
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str, obj);
-
- ASSERT_EQ(FormatterV1::kSuccess, result) << "Error parsing JSON string";
-
- ASSERT_EQ(FunctionID::SetGlobalProperties, obj[S_PARAMS][S_FUNCTION_ID].asInt());
- ASSERT_EQ(messageType::request, obj[S_PARAMS][S_MESSAGE_TYPE].asInt());
- ASSERT_EQ(11, obj[S_PARAMS][S_CORRELATION_ID].asInt());
- ASSERT_EQ("version", obj[S_MSG_PARAMS]["syncMsgVersion"].asString());
- ASSERT_EQ("some app name", obj[S_MSG_PARAMS]["appName"].asString());
- ASSERT_EQ("some app name", obj[S_MSG_PARAMS]["appName"].asString());
- ASSERT_EQ(1, obj[S_PARAMS][S_PROTOCOL_VERSION].asInt());
- ASSERT_EQ("TEXT", obj[S_MSG_PARAMS]["ttsName"][0]["type"].asString());
- ASSERT_EQ("Synonym 2", obj[S_MSG_PARAMS]["vrSynonyms"][1].asString());
- }
-
- TEST_F(CFormatterTestHelper, test_ALRPCv1_ErrorParsing)
- {
- std::string str = "\
- {\
- \"request\": {\
- \"name\" : \"SetGlobalProperties\",\
- \"correlationID\": 11,\
- \"parameters\": {\
- \"appName\": \"some app name\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj;
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str, obj);
-
- ASSERT_TRUE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_TRUE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is not set";
- ASSERT_TRUE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is not set";
- ASSERT_TRUE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is not set";
- }
-
- TEST_F(CFormatterTestHelper, test_ALRPCv1_MessageTypeError)
- {
- std::string str1 = "\
- {\
- \"information\": {\
- \"name\" : \"SetGlobalProperties\",\
- \"correlationID\": 11,\
- \"parameters\": {\
- \"appName\": \"some app name\"\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj1;
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str1, obj1);
-
- ASSERT_FALSE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_TRUE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is not set";
- ASSERT_TRUE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is not set";
- ASSERT_TRUE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is not set";
-
- std::string str2 = "\
- {\
- \"name\" : \"SetGlobalProperties\",\
- \"correlationID\": 11,\
- \"parameters\": {\
- \"appName\": \"some app name\"\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj2;
- result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str1, obj2);
-
- ASSERT_FALSE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_TRUE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is not set";
- ASSERT_TRUE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is not set";
- ASSERT_TRUE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is not set";
- }
-
- TEST_F(CFormatterTestHelper, test_ALRPCv1_FunctionID_Error)
- {
- std::string str1 = "\
- {\
- \"request\": {\
- \"not a name\" : \"SetGlobalProperties\",\
- \"correlationID\": 11,\
- \"parameters\": {\
- \"appName\": \"some app name\"\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj1;
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str1, obj1);
-
- ASSERT_FALSE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_FALSE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is set";
- ASSERT_TRUE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is not set";
- ASSERT_FALSE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is set";
- ASSERT_EQ(11, obj1[S_PARAMS][S_CORRELATION_ID].asInt()) << "Wrong CorrelationID";
- ASSERT_EQ(FunctionID::INVALID_ENUM, obj1[S_PARAMS][S_FUNCTION_ID].asInt());
- ASSERT_EQ(messageType::request, obj1[S_PARAMS][S_MESSAGE_TYPE].asInt());
-
- std::string str2 = "\
- {\
- \"request\": {\
- \"name\" : \"UnknownName\",\
- \"correlationID\": 12,\
- \"parameters\": {\
- \"appName\": \"some app name\"\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj2;
- result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str2, obj2);
-
- ASSERT_FALSE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_FALSE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is not set";
- ASSERT_TRUE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is not set";
- ASSERT_FALSE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is set";
- ASSERT_EQ(12, obj2[S_PARAMS][S_CORRELATION_ID].asInt()) << "Wrong CorrelationID";
- ASSERT_EQ(FunctionID::INVALID_ENUM, obj2[S_PARAMS][S_FUNCTION_ID].asInt());
- ASSERT_EQ(messageType::request, obj2[S_PARAMS][S_MESSAGE_TYPE].asInt());
- }
-
- TEST_F(CFormatterTestHelper, test_ALRPCv1_CorrelationID_Error)
- {
- std::string str1 = "\
- {\
- \"request\": {\
- \"name\" : \"SetGlobalProperties\",\
- \"NotACorrelationID\": 13,\
- \"parameters\": {\
- \"appName\": \"some app name\"\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj1;
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str1, obj1);
-
- ASSERT_FALSE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_FALSE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is set";
- ASSERT_FALSE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is set";
- ASSERT_TRUE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is not set";
- ASSERT_EQ(-1, obj1[S_PARAMS][S_CORRELATION_ID].asInt()) << "Wrong CorrelationID";
- ASSERT_EQ(FunctionID::SetGlobalProperties, obj1[S_PARAMS][S_FUNCTION_ID].asInt());
- ASSERT_EQ(messageType::request, obj1[S_PARAMS][S_MESSAGE_TYPE].asInt());
- }
-
- TEST_F(CFormatterTestHelper, test_ALRPCv1_CombinationError)
- {
- std::string str1 = "\
- {\
- \"response\": {\
- \"name\" : \"UnKnownName\",\
- \"NotACorrelationID\": 10,\
- \"parameters\": {\
- \"appName\": \"some app name\"\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj1;
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str1, obj1);
-
- ASSERT_FALSE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_FALSE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is set";
- ASSERT_TRUE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is not set";
- ASSERT_TRUE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is not set";
- ASSERT_EQ(-1, obj1[S_PARAMS][S_CORRELATION_ID].asInt()) << "Wrong CorrelationID";
- ASSERT_EQ(FunctionID::INVALID_ENUM, obj1[S_PARAMS][S_FUNCTION_ID].asInt());
- ASSERT_EQ(messageType::response, obj1[S_PARAMS][S_MESSAGE_TYPE].asInt());
- }
-
- TEST_F(CFormatterTestHelper, test_ALRPCv1_NotificationCorrelationId)
- {
- std::string str1 = "\
- {\
- \"notification\": {\
- \"name\" : \"SetGlobalProperties\",\
- \"NotACorrelationID\": 10,\
- \"parameters\": {\
- \"appName\": \"some app name\"\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj1;
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str1, obj1);
-
- ASSERT_FALSE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_FALSE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is set";
- ASSERT_FALSE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is set";
- ASSERT_FALSE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is set";
- ASSERT_EQ(-1, obj1[S_PARAMS][S_CORRELATION_ID].asInt()) << "Wrong CorrelationID";
- ASSERT_EQ(FunctionID::SetGlobalProperties, obj1[S_PARAMS][S_FUNCTION_ID].asInt());
- ASSERT_EQ(messageType::notification, obj1[S_PARAMS][S_MESSAGE_TYPE].asInt());
-
- std::string str2 = "\
- {\
- \"notification\": {\
- \"name\" : \"UnknownNotification\",\
- \"parameters\": {\
- \"appName\": \"some app name\"\
- }\
- }\
- }";
-
- NsSmartDeviceLink::NsSmartObjects::SmartObject obj2;
- result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str2, obj2);
-
- ASSERT_FALSE(FormatterV1::kParsingError & result) << "Wrong error code";
- ASSERT_FALSE(FormatterV1::kMessageTypeNotFound & result) << "MessageType error code is set";
- ASSERT_TRUE(FormatterV1::kFunctionIdNotFound & result) << "FunctionID error code is not set";
- ASSERT_FALSE(FormatterV1::kCorrelationIdNotFound & result) << "CorrelationID error code is set";
- ASSERT_EQ(-1, obj2[S_PARAMS][S_CORRELATION_ID].asInt()) << "Wrong CorrelationID";
- ASSERT_EQ(FunctionID::INVALID_ENUM, obj2[S_PARAMS][S_FUNCTION_ID].asInt());
- ASSERT_EQ(messageType::notification, obj2[S_PARAMS][S_MESSAGE_TYPE].asInt());
- }
-
- TEST_F(CFormatterTestHelper, test_SDLRPCv1_EmptyMapArrayTest) {
- using namespace NsSmartDeviceLink::NsSmartObjects;
-
- SmartObject srcObj, dstObj;
- std::string str;
-
- fillTestObject(srcObj);
- srcObj[S_PARAMS][S_FUNCTION_ID] = "UnregisterAppInterface"; // a hack, it shouldn't be a string in the SmartObject
- srcObj[S_PARAMS][S_MESSAGE_TYPE] = "request"; // the same thing
- srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 1;
- srcObj[S_MSG_PARAMS]["EmptyArray"] = SmartObject(SmartType_Array);
- srcObj[S_MSG_PARAMS]["EmptyMap"] = SmartObject(SmartType_Map);
- srcObj[S_MSG_PARAMS]["AnotherEmptyArray"] = srcObj[S_MSG_PARAMS]["EmptyArray"];
- srcObj[S_MSG_PARAMS]["AnotherEmptyMap"] = srcObj[S_MSG_PARAMS]["EmptyMap"];
-
- // SmartObjects --> JSON
- FormatterV1::toString(srcObj, str);
-
- //std::cout << str << std::endl;
-
- // JSON --> SmartObjects
- int result = FormatterV1::fromString<FunctionID::eType, messageType::eType>(str, dstObj);
-
- ASSERT_EQ(FormatterV1::kSuccess, result) << "Error parsing JSON string";
-
- srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionID::UnregisterAppInterface; // write the proper enum values
- srcObj[S_PARAMS][S_MESSAGE_TYPE] = messageType::request;
-
- compareObjects(srcObj, dstObj);
- }
-
- namespace so = NsSmartDeviceLink::NsSmartObjects;
- namespace mf = NsSmartDeviceLink::NsJSONHandler::Formatters::
- meta_formatter_error_code;
-
- TEST_F(CFormatterTestHelper, test_SDLRPCv1_MetaFormatToString_Empty) {
- std::string result;
- FormatterV1::tMetaFormatterErrorCode error_code;
-
- so::SmartObject empty_object;
- so::CSmartSchema empty_schema;
-
- error_code = FormatterV1::MetaFormatToString(empty_object,
- empty_schema,
- result);
-
- std::string expected_result(
- "{\n"
- " \"\" : {\n"
- " \"name\" : \"\",\n"
- " \"parameters\" : \"\"\n"
- " }\n"
- "}\n");
-
- ASSERT_EQ(expected_result, result) <<
- "Unexpected result string";
-
- ASSERT_FALSE(mf::kErrorOk & error_code) <<
- "Result must not be OK in such case";
-
- ASSERT_TRUE(mf::kErrorObjectIsNotFunction & error_code) <<
- "Object must be not be detected as function";
-
- ASSERT_TRUE(mf::kErrorSchemaIsNotFunction & error_code) <<
- "Target schema does not define a function";
-
- ASSERT_FALSE(mf::kErrorFailedCreateObjectBySchema & error_code) <<
- "This creation shold not fail because of valid empty schema";
-
- so::SmartObject object(so::SmartType_Map);
-
- object["1"] = 1;
- object["2"] = "two";
- object["3"] = false;
-
- error_code = FormatterV1::MetaFormatToString(object,
- empty_schema,
- result);
-
- ASSERT_EQ(expected_result, result) <<
- "Unexpected result string";
-
- ASSERT_FALSE(mf::kErrorOk & error_code) <<
- "Result must not be OK in such case";
-
- ASSERT_TRUE(mf::kErrorObjectIsNotFunction & error_code) <<
- "Object must be not be detected as function";
-
- ASSERT_TRUE(mf::kErrorSchemaIsNotFunction & error_code) <<
- "Target schema does not define a function";
-
- ASSERT_FALSE(mf::kErrorFailedCreateObjectBySchema & error_code) <<
- "This creation shold not fail because of valid empty schema";
-
- so::SmartObject function_object(so::SmartType_Map);
-
- function_object[S_PARAMS][S_FUNCTION_ID] =
- FunctionID::UnregisterAppInterface;
- function_object[S_PARAMS][S_MESSAGE_TYPE] = messageType::request;
- function_object[S_MSG_PARAMS]["Some data"] = "Some data";
-
- error_code = FormatterV1::MetaFormatToString(function_object,
- empty_schema,
- result);
-
- ASSERT_EQ(expected_result, result) <<
- "Unexpected result string";
-
- ASSERT_FALSE(mf::kErrorOk & error_code) <<
- "Result must not be OK in such case";
-
- ASSERT_FALSE(mf::kErrorObjectIsNotFunction & error_code) <<
- "Object must be detected as function";
-
- ASSERT_TRUE(mf::kErrorSchemaIsNotFunction & error_code) <<
- "Target schema does not define a function";
-
- ASSERT_FALSE(mf::kErrorFailedCreateObjectBySchema & error_code) <<
- "This creation shold not fail because of valid empty schema";
-
- std::map<std::string, so::CObjectSchemaItem::SMember>
- non_function_schema_members_map;
-
- non_function_schema_members_map["StringField"] =
- so::CObjectSchemaItem::SMember(
- so::CStringSchemaItem::create(
- so::TSchemaItemParameter<size_t>(),
- so::TSchemaItemParameter<size_t>(1000),
- so::TSchemaItemParameter<std::string>()),
- false);
- non_function_schema_members_map["IntField"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<int>::create(
- 1, 20, 10), true);
- non_function_schema_members_map["BoolField"] =
- so::CObjectSchemaItem::SMember(
- so::CBoolSchemaItem::create(
- so::TSchemaItemParameter<bool>()),
- true);
-
- so::CSmartSchema non_function_schema(so::CObjectSchemaItem::create(
- non_function_schema_members_map));
-
- error_code = FormatterV1::MetaFormatToString(empty_object,
- non_function_schema,
- result);
-
- ASSERT_EQ(expected_result, result) <<
- "Unexpected result string";
-
- ASSERT_FALSE(mf::kErrorOk & error_code) <<
- "Result must not be OK in such case";
-
- ASSERT_TRUE(mf::kErrorObjectIsNotFunction & error_code) <<
- "Object must not be detected as function";
-
- ASSERT_TRUE(mf::kErrorSchemaIsNotFunction & error_code) <<
- "Target schema does not define a function";
-
- ASSERT_FALSE(mf::kErrorFailedCreateObjectBySchema & error_code) <<
- "This creation shold not fail because of valid empty schema";
- }
-
- TEST_F(CFormatterTestHelper, test_SDLRPCv1_MetaFormatToString_Valid) {
- std::string result;
- FormatterV1::tMetaFormatterErrorCode error_code;
-
- so::SmartObject empty_object;
-
- std::set<FunctionID::eType> function_id_items;
- function_id_items.insert(FunctionID::RegisterAppInterface);
- function_id_items.insert(FunctionID::UnregisterAppInterface);
- function_id_items.insert(FunctionID::SetGlobalProperties);
-
- std::set<messageType::eType> message_type_items;
- message_type_items.insert(messageType::request);
- message_type_items.insert(messageType::response);
- message_type_items.insert(messageType::notification);
-
- std::map<std::string, so::CObjectSchemaItem::SMember>
- test_struct_members;
-
- test_struct_members["mandatory_int_field"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<int>::create(
- 1, 20, 15), true);
-
- test_struct_members["mandatory_string_field"] =
- so::CObjectSchemaItem::SMember(
- so::CStringSchemaItem::create(
- 0,
- 500,
- std::string("Mandatory text")),
- true);
-
- test_struct_members["non_mandatory_string_field"] =
- so::CObjectSchemaItem::SMember(
- so::CStringSchemaItem::create(
- 0,
- 500,
- std::string("Non-mandatory text")),
- false);
-
- std::map<std::string, so::CObjectSchemaItem::SMember>
- test_non_mandatory_struct_members;
-
- test_non_mandatory_struct_members["non_mandatory_int_field"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<int>::create(
- 1, 20, 15), false);
-
- std::map<std::string, so::CObjectSchemaItem::SMember> schema_members;
-
- schema_members["mandatory_auto_default_string"] =
- so::CObjectSchemaItem::SMember(so::CStringSchemaItem::create(100),
- true);
-
- schema_members["non_mandatory_auto_default_string"] =
- so::CObjectSchemaItem::SMember(so::CStringSchemaItem::create(100),
- false);
-
- schema_members["mandatory_manual_default_string"] =
- so::CObjectSchemaItem::SMember(
- so::CStringSchemaItem::create(
- 0,
- 500,
- std::string("String")),
- true);
-
- schema_members["non_mandatory_manual_default_string"] =
- so::CObjectSchemaItem::SMember(
- so::CStringSchemaItem::create(
- 0,
- 500,
- std::string("String")),
- false);
-
- schema_members["mandatory_auto_default_int"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<int>::create(
- 1, 200), true);
-
- schema_members["mandatory_manual_default_int"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<int>::create(
- 1, 20, 10), true);
-
- schema_members["non_mandatory_manual_default_int"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<int>::create(
- 1, 20, 10), false);
-
- schema_members["non_mandatory_auto_default_int"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<int>::create(
- 1, 200), false);
-
- schema_members["non_mandatory_auto_default_float"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<double>::create(
- 0.0, 100.0), false);
-
- schema_members["non_mandatory_manual_default_float"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<double>::create(
- 0.0, 100.0, 33.33), false);
-
- schema_members["mandatory_auto_default_float"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<double>::create(
- 0.0, 100.0), false);
-
- schema_members["mandatory_manual_default_float"] =
- so::CObjectSchemaItem::SMember(so::TNumberSchemaItem<double>::create(
- 0.0, 100.0, 33.33), false);
-
- schema_members["non_mandatory_auto_default_bool"] =
- so::CObjectSchemaItem::SMember(so::CBoolSchemaItem::create(), false);
-
- schema_members["non_mandatory_manual_default_bool"] =
- so::CObjectSchemaItem::SMember(so::CBoolSchemaItem::create(true),
- false);
-
- schema_members["mandatory_auto_default_bool"] =
- so::CObjectSchemaItem::SMember(so::CBoolSchemaItem::create(), true);
-
- schema_members["mandatory_manual_default_bool"] =
- so::CObjectSchemaItem::SMember(so::CBoolSchemaItem::create(true),
- true);
-
- schema_members["mandatory_auto_default_enum"] =
- so::CObjectSchemaItem::SMember(
- so::TEnumSchemaItem<messageType::eType>::create(
- message_type_items),
- true);
-
- schema_members["mandatory_manual_default_enum"] =
- so::CObjectSchemaItem::SMember(
- so::TEnumSchemaItem<messageType::eType>::create(
- message_type_items,
- messageType::request),
- true);
-
- schema_members["non_mandatory_auto_default_enum"] =
- so::CObjectSchemaItem::SMember(
- so::TEnumSchemaItem<messageType::eType>::create(
- message_type_items),
- false);
-
- schema_members["non_mandatory_manual_default_enum"] =
- so::CObjectSchemaItem::SMember(
- so::TEnumSchemaItem<messageType::eType>::create(
- message_type_items,
- messageType::request),
- false);
-
- schema_members["non_mandatory_struct"] =
- so::CObjectSchemaItem::SMember(so::CObjectSchemaItem::create(
- test_struct_members), false);
-
- schema_members["mandatory_struct"] =
- so::CObjectSchemaItem::SMember(so::CObjectSchemaItem::create(
- test_struct_members), true);
-
- schema_members["mandatory_struct_nm"] =
- so::CObjectSchemaItem::SMember(so::CObjectSchemaItem::create(
- test_non_mandatory_struct_members), true);
-
- schema_members["non_mandatory_struct_nm"] =
- so::CObjectSchemaItem::SMember(so::CObjectSchemaItem::create(
- test_non_mandatory_struct_members), false);
-
- schema_members["non_mandatory_non_empty_array"] =
- so::CObjectSchemaItem::SMember(so::CArraySchemaItem::create(
- so::TNumberSchemaItem<int>::create()), false);
-
- schema_members["mandatory_empty_array"] =
- so::CObjectSchemaItem::SMember(so::CArraySchemaItem::create(
- so::TNumberSchemaItem<int>::create(0, 0, 0)), true);
-
- schema_members["mandatory_empty_map"] =
- so::CObjectSchemaItem::SMember(so::CObjectSchemaItem::create(
- std::map<std::string, so::CObjectSchemaItem::SMember>()), true);
-
- schema_members["non_mandatory_empty_map"] =
- so::CObjectSchemaItem::SMember(so::CObjectSchemaItem::create(
- std::map<std::string, so::CObjectSchemaItem::SMember>()), false);
-
- std::map<std::string, so::CObjectSchemaItem::SMember>
- function_params_members;
-
- function_params_members[S_FUNCTION_ID] =
- so::CObjectSchemaItem::SMember(
- so::TEnumSchemaItem<FunctionID::eType>::create(function_id_items),
- true);
- function_params_members[S_MESSAGE_TYPE] =
- so::CObjectSchemaItem::SMember(
- so::TEnumSchemaItem<messageType::eType>::create(
- message_type_items), true);
- function_params_members[S_CORRELATION_ID] =
- so::CObjectSchemaItem::SMember(
- so::TNumberSchemaItem<int>::create(), true);
- function_params_members[S_PROTOCOL_VERSION] =
- so::CObjectSchemaItem::SMember(
- so::TNumberSchemaItem<int>::create(), true);
- function_params_members[S_PROTOCOL_TYPE] =
- so::CObjectSchemaItem::SMember(
- so::TNumberSchemaItem<int>::create(), true);
-
- std::map<std::string, so::CObjectSchemaItem::SMember>
- functiom_root_members;
-
- functiom_root_members[S_MSG_PARAMS] =
- so::CObjectSchemaItem::SMember(so::CObjectSchemaItem::create(
- schema_members), true);
- functiom_root_members[S_PARAMS] =
- so::CObjectSchemaItem::SMember(so::CObjectSchemaItem::create(
- function_params_members), true);
-
- so::CSmartSchema function_schema(
- so::CObjectSchemaItem::create(functiom_root_members));
-
- std::string expected_result1(
- "{\n"
- " \"-1\" : {\n"
- " \"correlationID\" : 0,\n"
- " \"name\" : \"-1\",\n"
- " \"parameters\" : {\n"
- " \"mandatory_auto_default_bool\" : false,\n"
- " \"mandatory_auto_default_enum\" : -1,\n"
- " \"mandatory_auto_default_int\" : 0,\n"
- " \"mandatory_auto_default_string\" : \"\",\n"
- " \"mandatory_empty_array\" : [],\n"
- " \"mandatory_empty_map\" : {},\n"
- " \"mandatory_manual_default_bool\" : true,\n"
- " \"mandatory_manual_default_enum\" : \"request\",\n"
- " \"mandatory_manual_default_int\" : 10,\n"
- " \"mandatory_manual_default_string\" : \"String\",\n"
- " \"mandatory_struct\" : {\n"
- " \"mandatory_int_field\" : 15,\n"
- " \"mandatory_string_field\" : \"Mandatory text\"\n"
- " },\n"
- " \"mandatory_struct_nm\" : {}\n"
- " }\n"
- " }\n"
- "}\n");
-
- error_code = FormatterV1::MetaFormatToString(empty_object,
- function_schema,
- result);
-
- ASSERT_EQ(expected_result1, result) <<
- "Invalid result JSON string";
-
- ASSERT_FALSE(mf::kErrorOk & error_code) <<
- "Result must not be OK in such case";
-
- ASSERT_TRUE(mf::kErrorObjectIsNotFunction & error_code) <<
- "Object must not be detected as function";
-
- ASSERT_FALSE(mf::kErrorSchemaIsNotFunction & error_code) <<
- "Target schema defines a function";
-
- ASSERT_FALSE(mf::kErrorFailedCreateObjectBySchema & error_code) <<
- "This creation shold not fail because of valid schema";
-
- so::SmartObject function_object(so::SmartType_Map);
-
- function_object[S_PARAMS][S_MESSAGE_TYPE] = messageType::response;
- function_object[S_PARAMS][S_FUNCTION_ID] =
- FunctionID::RegisterAppInterface;
- function_object[S_PARAMS][S_PROTOCOL_VERSION] = 13;
-
- std::string expected_result2(
- "{\n"
- " \"response\" : {\n"
- " \"correlationID\" : 0,\n"
- " \"name\" : \"RegisterAppInterface\",\n"
- " \"parameters\" : {\n"
- " \"mandatory_auto_default_bool\" : false,\n"
- " \"mandatory_auto_default_enum\" : -1,\n"
- " \"mandatory_auto_default_int\" : 0,\n"
- " \"mandatory_auto_default_string\" : \"\",\n"
- " \"mandatory_empty_array\" : [],\n"
- " \"mandatory_empty_map\" : {},\n"
- " \"mandatory_manual_default_bool\" : true,\n"
- " \"mandatory_manual_default_enum\" : \"request\",\n"
- " \"mandatory_manual_default_int\" : 10,\n"
- " \"mandatory_manual_default_string\" : \"String\",\n"
- " \"mandatory_struct\" : {\n"
- " \"mandatory_int_field\" : 15,\n"
- " \"mandatory_string_field\" : \"Mandatory text\"\n"
- " },\n"
- " \"mandatory_struct_nm\" : {}\n"
- " }\n"
- " }\n"
- "}\n");
-
- error_code = FormatterV1::MetaFormatToString(function_object,
- function_schema,
- result);
-
- ASSERT_EQ(expected_result2, result) <<
- "Invalid result JSON string";
-
- ASSERT_FALSE(mf::kErrorOk & error_code) <<
- "Result must not be OK in such case";
-
- ASSERT_TRUE(mf::kErrorObjectIsNotFunction & error_code) <<
- "Object must not be detected as function";
-
- ASSERT_FALSE(mf::kErrorSchemaIsNotFunction & error_code) <<
- "Target schema defines a function";
-
- ASSERT_FALSE(mf::kErrorFailedCreateObjectBySchema & error_code) <<
- "This creation shold not fail because of valid schema";
-
- function_object[S_MSG_PARAMS]["non_schema_int_field"] = 13;
- function_object[S_MSG_PARAMS]["non_schema_string_field"] = "xxx";
- function_object[S_PARAMS]["Noise"] = "bzzzz";
-
- error_code = FormatterV1::MetaFormatToString(function_object,
- function_schema,
- result);
-
- ASSERT_EQ(expected_result2, result) <<
- "Invalid result JSON string";
-
- ASSERT_FALSE(mf::kErrorOk & error_code) <<
- "Result must not be OK in such case";
-
- ASSERT_FALSE(mf::kErrorObjectIsNotFunction & error_code) <<
- "Object must be detected as function";
-
- ASSERT_FALSE(mf::kErrorSchemaIsNotFunction & error_code) <<
- "Target schema defines a function";
-
- ASSERT_FALSE(mf::kErrorFailedCreateObjectBySchema & error_code) <<
- "This creation shold not fail because of valid schema";
-
- function_object[S_MSG_PARAMS]["mandatory_auto_default_int"] = 25;
- function_object[S_MSG_PARAMS]["non_mandatory_auto_default_int"] = 100;
- function_object[S_MSG_PARAMS]["non_mandatory_struct_nm"]
- ["non_mandatory_int_field"] = 3;
- function_object[S_MSG_PARAMS]["mandatory_empty_map"]["x"] = 0;
- function_object[S_MSG_PARAMS]["mandatory_empty_map"]["y"] = 0;
- function_object[S_MSG_PARAMS]["non_mandatory_non_empty_array"][0] = 1;
- function_object[S_MSG_PARAMS]["non_mandatory_non_empty_array"][1] = 2;
- function_object[S_MSG_PARAMS]["non_mandatory_non_empty_array"][2] = 3;
- function_object[S_MSG_PARAMS]["mandatory_empty_array"][0] = 0;
- function_object[S_MSG_PARAMS]["mandatory_empty_array"][1] = 1;
- function_object[S_MSG_PARAMS]["mandatory_empty_array"][2] = 2;
-
- std::string expected_result3(
- "{\n"
- " \"response\" : {\n"
- " \"correlationID\" : 0,\n"
- " \"name\" : \"RegisterAppInterface\",\n"
- " \"parameters\" : {\n"
- " \"mandatory_auto_default_bool\" : false,\n"
- " \"mandatory_auto_default_enum\" : -1,\n"
- " \"mandatory_auto_default_int\" : 25,\n"
- " \"mandatory_auto_default_string\" : \"\",\n"
- " \"mandatory_empty_array\" : [ 0, 1, 2 ],\n"
- " \"mandatory_empty_map\" : {},\n"
- " \"mandatory_manual_default_bool\" : true,\n"
- " \"mandatory_manual_default_enum\" : \"request\",\n"
- " \"mandatory_manual_default_int\" : 10,\n"
- " \"mandatory_manual_default_string\" : \"String\",\n"
- " \"mandatory_struct\" : {\n"
- " \"mandatory_int_field\" : 15,\n"
- " \"mandatory_string_field\" : \"Mandatory text\"\n"
- " },\n"
- " \"mandatory_struct_nm\" : {},\n"
- " \"non_mandatory_auto_default_int\" : 100,\n"
- " \"non_mandatory_non_empty_array\" : [ 1, 2, 3 ],\n"
- " \"non_mandatory_struct_nm\" : {\n"
- " \"non_mandatory_int_field\" : 3\n"
- " }\n"
- " }\n"
- " }\n"
- "}\n");
-
- error_code = FormatterV1::MetaFormatToString(function_object,
- function_schema,
- result);
-
- ASSERT_EQ(expected_result3, result) <<
- "Invalid result JSON string";
-
- ASSERT_FALSE(mf::kErrorOk & error_code) <<
- "Result must not be OK in such case";
-
- ASSERT_FALSE(mf::kErrorObjectIsNotFunction & error_code) <<
- "Object must be detected as function";
-
- ASSERT_FALSE(mf::kErrorSchemaIsNotFunction & error_code) <<
- "Target schema defines a function";
-
- ASSERT_FALSE(mf::kErrorFailedCreateObjectBySchema & error_code) <<
- "This creation shold not fail because of valid schema";
- }
-}}}}
-
-namespace NsSmartDeviceLink { namespace NsSmartObjects {
-
- template <>
- const std::map<test::components::json_handler::formatters::FunctionID::eType, std::string> &
- NsSmartDeviceLink::NsSmartObjects::TEnumSchemaItem<test::components::json_handler::formatters::FunctionID::eType>::getEnumElementsStringRepresentation(void)
- {
- static bool isInitialized = false;
- static std::map<test::components::json_handler::formatters::FunctionID::eType, std::string> enumStringRepresentationMap;
-
- if (false == isInitialized)
- {
- enumStringRepresentationMap.insert(std::make_pair(test::components::json_handler::formatters::FunctionID::RegisterAppInterface, "RegisterAppInterface"));
- enumStringRepresentationMap.insert(std::make_pair(test::components::json_handler::formatters::FunctionID::UnregisterAppInterface, "UnregisterAppInterface"));
- enumStringRepresentationMap.insert(std::make_pair(test::components::json_handler::formatters::FunctionID::SetGlobalProperties, "SetGlobalProperties"));
-
- isInitialized = true;
- }
-
- return enumStringRepresentationMap;
- }
-
- template <>
- const std::map<test::components::json_handler::formatters::messageType::eType, std::string> &
- NsSmartDeviceLink::NsSmartObjects::TEnumSchemaItem<test::components::json_handler::formatters::messageType::eType>::getEnumElementsStringRepresentation(void)
- {
- static bool isInitialized = false;
- static std::map<test::components::json_handler::formatters::messageType::eType, std::string> enumStringRepresentationMap;
-
- if (false == isInitialized)
- {
- enumStringRepresentationMap.insert(std::make_pair(test::components::json_handler::formatters::messageType::request, "request"));
- enumStringRepresentationMap.insert(std::make_pair(test::components::json_handler::formatters::messageType::response, "response"));
- enumStringRepresentationMap.insert(std::make_pair(test::components::json_handler::formatters::messageType::notification, "notification"));
-
- isInitialized = true;
- }
-
- return enumStringRepresentationMap;
- }
-}}
-
-/*int main(int argc, char **argv)
-{
- ::testing::InitGoogleMock(&argc, argv);
- return RUN_ALL_TESTS();
-}*/
-
-#endif // TEST_COMPONENTS_JSON_HANDLER_INCLUDE_JSON_HANDLER_FORMATTERS_FORMATTER_JSON_ALRPCV1_TEST_H_