summaryrefslogtreecommitdiff
path: root/src/components/application_manager/test/message_helper/message_helper_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/test/message_helper/message_helper_test.cc')
-rw-r--r--src/components/application_manager/test/message_helper/message_helper_test.cc906
1 files changed, 906 insertions, 0 deletions
diff --git a/src/components/application_manager/test/message_helper/message_helper_test.cc b/src/components/application_manager/test/message_helper/message_helper_test.cc
new file mode 100644
index 0000000000..77e791dc82
--- /dev/null
+++ b/src/components/application_manager/test/message_helper/message_helper_test.cc
@@ -0,0 +1,906 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+#include <string>
+#include <vector>
+
+#include "gmock/gmock.h"
+#include "utils/macro.h"
+#include "utils/make_shared.h"
+#include "application_manager/policies/policy_handler.h"
+#include "application_manager/test/resumption/include/application_mock.h"
+#include "utils/custom_string.h"
+#include "policy/mock_policy_settings.h"
+#include "application_manager/policies/policy_handler.h"
+#include "application_manager/mock_application_manager.h"
+#include "application_manager/event_engine/event_dispatcher.h"
+#include "application_manager/state_controller.h"
+#include "application_manager/resumption/resume_ctrl.h"
+
+namespace application_manager {
+namespace test {
+
+namespace HmiLanguage = hmi_apis::Common_Language;
+namespace HmiResults = hmi_apis::Common_Result;
+namespace MobileResults = mobile_apis::Result;
+
+typedef ::test::components::resumption_test::MockApplication AppMock;
+typedef utils::SharedPtr<AppMock> MockApplicationSharedPtr;
+typedef std::vector<std::string> StringArray;
+typedef ::application_manager::Application App;
+typedef utils::SharedPtr<App> ApplicationSharedPtr;
+
+using testing::AtLeast;
+using testing::ReturnRefOfCopy;
+using testing::ReturnRef;
+using testing::Return;
+
+TEST(MessageHelperTestCreate,
+ CreateBlockedByPoliciesResponse_SmartObject_Equal) {
+ mobile_apis::FunctionID::eType function_id =
+ mobile_apis::FunctionID::eType::AddCommandID;
+ mobile_apis::Result::eType result = mobile_apis::Result::eType::ABORTED;
+ uint32_t correlation_id = 0;
+ uint32_t connection_key = 0;
+ bool success = false;
+
+ smart_objects::SmartObjectSPtr ptr =
+ MessageHelper::CreateBlockedByPoliciesResponse(
+ function_id, result, correlation_id, connection_key);
+
+ EXPECT_TRUE(ptr);
+
+ smart_objects::SmartObject& obj = *ptr;
+
+ EXPECT_EQ(function_id, obj[strings::params][strings::function_id].asInt());
+ EXPECT_EQ(kResponse, obj[strings::params][strings::message_type].asInt());
+ EXPECT_EQ(success, obj[strings::msg_params][strings::success].asBool());
+ EXPECT_EQ(result, obj[strings::msg_params][strings::result_code].asInt());
+ EXPECT_EQ(correlation_id,
+ obj[strings::params][strings::correlation_id].asUInt());
+ EXPECT_EQ(connection_key,
+ obj[strings::params][strings::connection_key].asUInt());
+ EXPECT_EQ(kV2, obj[strings::params][strings::protocol_version].asInt());
+}
+
+TEST(MessageHelperTestCreate, CreateSetAppIcon_SendNullPathImagetype_Equal) {
+ std::string path_to_icon = "";
+ uint32_t app_id = 0;
+ smart_objects::SmartObjectSPtr ptr =
+ MessageHelper::CreateSetAppIcon(path_to_icon, app_id);
+
+ EXPECT_TRUE(ptr);
+
+ smart_objects::SmartObject& obj = *ptr;
+
+ int image_type = static_cast<int>(mobile_api::ImageType::DYNAMIC);
+
+ EXPECT_EQ(path_to_icon,
+ obj[strings::sync_file_name][strings::value].asString());
+ EXPECT_EQ(image_type,
+ obj[strings::sync_file_name][strings::image_type].asInt());
+ EXPECT_EQ(app_id, obj[strings::app_id].asUInt());
+}
+
+TEST(MessageHelperTestCreate, CreateSetAppIcon_SendPathImagetype_Equal) {
+ std::string path_to_icon = "/qwe/qwe/";
+ uint32_t app_id = 10;
+ smart_objects::SmartObjectSPtr ptr =
+ MessageHelper::CreateSetAppIcon(path_to_icon, app_id);
+
+ EXPECT_TRUE(ptr);
+
+ smart_objects::SmartObject& obj = *ptr;
+
+ int image_type = static_cast<int>(mobile_api::ImageType::DYNAMIC);
+
+ EXPECT_EQ(path_to_icon,
+ obj[strings::sync_file_name][strings::value].asString());
+ EXPECT_EQ(image_type,
+ obj[strings::sync_file_name][strings::image_type].asInt());
+ EXPECT_EQ(app_id, obj[strings::app_id].asUInt());
+}
+
+TEST(MessageHelperTestCreate,
+ CreateGlobalPropertiesRequestsToHMI_SmartObject_EmptyList) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<MockApplication>();
+ EXPECT_CALL(*appSharedMock, vr_help_title()).Times(AtLeast(1));
+ EXPECT_CALL(*appSharedMock, vr_help()).Times(AtLeast(1));
+ EXPECT_CALL(*appSharedMock, help_prompt()).Times(AtLeast(1));
+ EXPECT_CALL(*appSharedMock, timeout_prompt()).Times(AtLeast(1));
+
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateGlobalPropertiesRequestsToHMI(appSharedMock, 0u);
+
+ EXPECT_TRUE(ptr.empty());
+}
+
+TEST(MessageHelperTestCreate,
+ CreateGlobalPropertiesRequestsToHMI_SmartObject_NotEmpty) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ smart_objects::SmartObjectSPtr objPtr =
+ MakeShared<smart_objects::SmartObject>();
+
+ (*objPtr)[0][strings::vr_help_title] = "111";
+ (*objPtr)[1][strings::vr_help] = "222";
+ (*objPtr)[2][strings::keyboard_properties] = "333";
+ (*objPtr)[3][strings::menu_title] = "444";
+ (*objPtr)[4][strings::menu_icon] = "555";
+ (*objPtr)[5][strings::help_prompt] = "666";
+ (*objPtr)[6][strings::timeout_prompt] = "777";
+
+ EXPECT_CALL(*appSharedMock, vr_help_title())
+ .Times(AtLeast(3))
+ .WillRepeatedly(Return(&(*objPtr)[0]));
+ EXPECT_CALL(*appSharedMock, vr_help())
+ .Times(AtLeast(2))
+ .WillRepeatedly(Return(&(*objPtr)[1]));
+ EXPECT_CALL(*appSharedMock, help_prompt())
+ .Times(AtLeast(3))
+ .WillRepeatedly(Return(&(*objPtr)[5]));
+ EXPECT_CALL(*appSharedMock, timeout_prompt())
+ .Times(AtLeast(2))
+ .WillRepeatedly(Return(&(*objPtr)[6]));
+ EXPECT_CALL(*appSharedMock, keyboard_props())
+ .Times(AtLeast(2))
+ .WillRepeatedly(Return(&(*objPtr)[2]));
+ EXPECT_CALL(*appSharedMock, menu_title())
+ .Times(AtLeast(2))
+ .WillRepeatedly(Return(&(*objPtr)[3]));
+ EXPECT_CALL(*appSharedMock, menu_icon())
+ .Times(AtLeast(2))
+ .WillRepeatedly(Return(&(*objPtr)[4]));
+ EXPECT_CALL(*appSharedMock, app_id()).WillRepeatedly(Return(0));
+
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateGlobalPropertiesRequestsToHMI(appSharedMock, 0u);
+
+ EXPECT_FALSE(ptr.empty());
+
+ smart_objects::SmartObject& first = *ptr[0];
+ smart_objects::SmartObject& second = *ptr[1];
+
+ EXPECT_EQ((*objPtr)[0], first[strings::msg_params][strings::vr_help_title]);
+ EXPECT_EQ((*objPtr)[1], first[strings::msg_params][strings::vr_help]);
+ EXPECT_EQ((*objPtr)[2],
+ first[strings::msg_params][strings::keyboard_properties]);
+ EXPECT_EQ((*objPtr)[3], first[strings::msg_params][strings::menu_title]);
+ EXPECT_EQ((*objPtr)[4], first[strings::msg_params][strings::menu_icon]);
+ EXPECT_EQ((*objPtr)[5], second[strings::msg_params][strings::help_prompt]);
+ EXPECT_EQ((*objPtr)[6], second[strings::msg_params][strings::timeout_prompt]);
+}
+
+TEST(MessageHelperTestCreate, CreateShowRequestToHMI_SendSmartObject_Equal) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+
+ smart_objects::SmartObjectSPtr smartObjectPtr =
+ utils::MakeShared<smart_objects::SmartObject>();
+
+ const smart_objects::SmartObject& object = *smartObjectPtr;
+
+ EXPECT_CALL(*appSharedMock, show_command())
+ .Times(AtLeast(2))
+ .WillRepeatedly(Return(&object));
+
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateShowRequestToHMI(appSharedMock, 0u);
+
+ EXPECT_FALSE(ptr.empty());
+
+ smart_objects::SmartObject& obj = *ptr[0];
+
+ int function_id = static_cast<int>(hmi_apis::FunctionID::UI_Show);
+
+ EXPECT_EQ(function_id, obj[strings::params][strings::function_id].asInt());
+ EXPECT_EQ(*smartObjectPtr, obj[strings::msg_params]);
+}
+
+TEST(MessageHelperTestCreate,
+ CreateAddCommandRequestToHMI_SendSmartObject_Empty) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<MockApplication>();
+ ::application_manager::CommandsMap vis;
+ DataAccessor<application_manager::CommandsMap> data_accessor(vis, true);
+
+ EXPECT_CALL(*appSharedMock, commands_map()).WillOnce(Return(data_accessor));
+ application_manager_test::MockApplicationManager mock_application_manager;
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateAddCommandRequestToHMI(appSharedMock,
+ mock_application_manager);
+
+ EXPECT_TRUE(ptr.empty());
+}
+
+TEST(MessageHelperTestCreate,
+ CreateAddCommandRequestToHMI_SendSmartObject_Equal) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ CommandsMap vis;
+ DataAccessor<CommandsMap> data_accessor(vis, true);
+ smart_objects::SmartObjectSPtr smartObjectPtr =
+ utils::MakeShared<smart_objects::SmartObject>();
+
+ smart_objects::SmartObject& object = *smartObjectPtr;
+
+ object[strings::menu_params] = 1;
+ object[strings::cmd_icon] = 1;
+ object[strings::cmd_icon][strings::value] = "10";
+
+ vis.insert(std::pair<uint32_t, smart_objects::SmartObject*>(5, &object));
+
+ EXPECT_CALL(*appSharedMock, commands_map()).WillOnce(Return(data_accessor));
+ EXPECT_CALL(*appSharedMock, app_id()).WillOnce(Return(1u));
+ application_manager_test::MockApplicationManager mock_application_manager;
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateAddCommandRequestToHMI(appSharedMock,
+ mock_application_manager);
+
+ EXPECT_FALSE(ptr.empty());
+
+ smart_objects::SmartObject& obj = *ptr[0];
+
+ int function_id = static_cast<int>(hmi_apis::FunctionID::UI_AddCommand);
+
+ EXPECT_EQ(function_id, obj[strings::params][strings::function_id].asInt());
+ EXPECT_EQ(1u, obj[strings::msg_params][strings::app_id].asUInt());
+ EXPECT_EQ(5, obj[strings::msg_params][strings::cmd_id].asInt());
+ EXPECT_EQ(object[strings::menu_params],
+ obj[strings::msg_params][strings::menu_params]);
+ EXPECT_EQ(object[strings::cmd_icon],
+ obj[strings::msg_params][strings::cmd_icon]);
+ EXPECT_EQ(
+ "10",
+ obj[strings::msg_params][strings::cmd_icon][strings::value].asString());
+}
+
+TEST(MessageHelperTestCreate,
+ CreateAddVRCommandRequestFromChoiceToHMI_SendEmptyData_EmptyList) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ application_manager::ChoiceSetMap vis;
+ DataAccessor< ::application_manager::ChoiceSetMap> data_accessor(vis, true);
+
+ EXPECT_CALL(*appSharedMock, choice_set_map()).WillOnce(Return(data_accessor));
+ application_manager_test::MockApplicationManager mock_application_manager;
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateAddVRCommandRequestFromChoiceToHMI(
+ appSharedMock, mock_application_manager);
+
+ EXPECT_TRUE(ptr.empty());
+}
+
+TEST(MessageHelperTestCreate,
+ CreateAddVRCommandRequestFromChoiceToHMI_SendObject_EqualList) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ application_manager::ChoiceSetMap vis;
+ DataAccessor< ::application_manager::ChoiceSetMap> data_accessor(vis, true);
+ smart_objects::SmartObjectSPtr smartObjectPtr =
+ utils::MakeShared<smart_objects::SmartObject>();
+
+ smart_objects::SmartObject& object = *smartObjectPtr;
+
+ object[strings::choice_set] = "10";
+ object[strings::grammar_id] = 111;
+ object[strings::choice_set][0][strings::choice_id] = 1;
+ object[strings::choice_set][0][strings::vr_commands] = 2;
+
+ vis.insert(std::pair<uint32_t, smart_objects::SmartObject*>(5, &object));
+ vis.insert(std::pair<uint32_t, smart_objects::SmartObject*>(6, &object));
+ vis.insert(std::pair<uint32_t, smart_objects::SmartObject*>(7, &object));
+ vis.insert(std::pair<uint32_t, smart_objects::SmartObject*>(8, &object));
+ vis.insert(std::pair<uint32_t, smart_objects::SmartObject*>(9, &object));
+
+ EXPECT_CALL(*appSharedMock, choice_set_map()).WillOnce(Return(data_accessor));
+ EXPECT_CALL(*appSharedMock, app_id())
+ .Times(AtLeast(5))
+ .WillRepeatedly(Return(1u));
+ application_manager_test::MockApplicationManager mock_application_manager;
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateAddVRCommandRequestFromChoiceToHMI(
+ appSharedMock, mock_application_manager);
+
+ EXPECT_FALSE(ptr.empty());
+
+ int function_id = static_cast<int>(hmi_apis::FunctionID::VR_AddCommand);
+ int type = static_cast<int>(hmi_apis::Common_VRCommandType::Choice);
+
+ smart_objects::SmartObject& obj = *ptr[0];
+
+ EXPECT_EQ(function_id, obj[strings::params][strings::function_id].asInt());
+ EXPECT_EQ(1u, obj[strings::msg_params][strings::app_id].asUInt());
+ EXPECT_EQ(111u, obj[strings::msg_params][strings::grammar_id].asUInt());
+ EXPECT_EQ(object[strings::choice_set][0][strings::choice_id],
+ obj[strings::msg_params][strings::cmd_id]);
+ EXPECT_EQ(object[strings::choice_set][0][strings::vr_commands],
+ obj[strings::msg_params][strings::vr_commands]);
+ EXPECT_EQ(type, obj[strings::msg_params][strings::type].asInt());
+}
+
+TEST(MessageHelperTestCreate, CreateAddSubMenuRequestToHMI_SendObject_Equal) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ application_manager::SubMenuMap vis;
+ DataAccessor< ::application_manager::SubMenuMap> data_accessor(vis, true);
+ smart_objects::SmartObjectSPtr smartObjectPtr =
+ utils::MakeShared<smart_objects::SmartObject>();
+
+ smart_objects::SmartObject& object = *smartObjectPtr;
+
+ object[strings::position] = 1;
+ object[strings::menu_name] = 1;
+
+ vis.insert(std::pair<uint32_t, smart_objects::SmartObject*>(5, &object));
+
+ EXPECT_CALL(*appSharedMock, sub_menu_map()).WillOnce(Return(data_accessor));
+ EXPECT_CALL(*appSharedMock, app_id()).Times(AtLeast(1)).WillOnce(Return(1u));
+
+ const uint32_t cor_id = 0u;
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateAddSubMenuRequestToHMI(appSharedMock, cor_id);
+
+ EXPECT_FALSE(ptr.empty());
+
+ smart_objects::SmartObject& obj = *ptr[0];
+
+ int function_id = static_cast<int>(hmi_apis::FunctionID::UI_AddSubMenu);
+
+ EXPECT_EQ(function_id, obj[strings::params][strings::function_id].asInt());
+ EXPECT_EQ(5, obj[strings::msg_params][strings::menu_id].asInt());
+ EXPECT_EQ(1,
+ obj[strings::msg_params][strings::menu_params][strings::position]
+ .asInt());
+ EXPECT_EQ(1,
+ obj[strings::msg_params][strings::menu_params][strings::menu_name]
+ .asInt());
+ EXPECT_EQ(1u, obj[strings::msg_params][strings::app_id].asUInt());
+}
+
+TEST(MessageHelperTestCreate,
+ CreateAddSubMenuRequestToHMI_SendEmptyMap_EmptySmartObjectList) {
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ application_manager::SubMenuMap vis;
+ DataAccessor< ::application_manager::SubMenuMap> data_accessor(vis, true);
+
+ EXPECT_CALL(*appSharedMock, sub_menu_map()).WillOnce(Return(data_accessor));
+
+ const uint32_t cor_id = 0u;
+ smart_objects::SmartObjectList ptr =
+ MessageHelper::CreateAddSubMenuRequestToHMI(appSharedMock, cor_id);
+
+ EXPECT_TRUE(ptr.empty());
+}
+
+TEST(MessageHelperTestCreate, CreateNegativeResponse_SendSmartObject_Equal) {
+ uint32_t connection_key = 111;
+ int32_t function_id = 222;
+ uint32_t correlation_id = 333u;
+ int32_t result_code = 0;
+
+ smart_objects::SmartObjectSPtr ptr = MessageHelper::CreateNegativeResponse(
+ connection_key, function_id, correlation_id, result_code);
+
+ EXPECT_TRUE(ptr);
+
+ smart_objects::SmartObject& obj = *ptr;
+
+ int objFunction_id = obj[strings::params][strings::function_id].asInt();
+ uint32_t objCorrelation_id =
+ obj[strings::params][strings::correlation_id].asUInt();
+ int objResult_code = obj[strings::msg_params][strings::result_code].asInt();
+ uint32_t objConnection_key =
+ obj[strings::params][strings::connection_key].asUInt();
+
+ int message_type = static_cast<int>(mobile_apis::messageType::response);
+ int protocol_type =
+ static_cast<int>(commands::CommandImpl::mobile_protocol_type_);
+ int protocol_version =
+ static_cast<int>(commands::CommandImpl::protocol_version_);
+ bool success = false;
+
+ EXPECT_EQ(function_id, objFunction_id);
+ EXPECT_EQ(message_type, obj[strings::params][strings::message_type].asInt());
+ EXPECT_EQ(protocol_type,
+ obj[strings::params][strings::protocol_type].asInt());
+ EXPECT_EQ(protocol_version,
+ obj[strings::params][strings::protocol_version].asInt());
+ EXPECT_EQ(correlation_id, objCorrelation_id);
+ EXPECT_EQ(result_code, objResult_code);
+ EXPECT_EQ(success, obj[strings::msg_params][strings::success].asBool());
+ EXPECT_EQ(connection_key, objConnection_key);
+}
+
+class MessageHelperTest : public ::testing::Test {
+ public:
+ MessageHelperTest()
+ : language_strings{"EN-US", "ES-MX", "FR-CA", "DE-DE", "ES-ES", "EN-GB",
+ "RU-RU", "TR-TR", "PL-PL", "FR-FR", "IT-IT", "SV-SE",
+ "PT-PT", "NL-NL", "EN-AU", "ZH-CN", "ZH-TW", "JA-JP",
+ "AR-SA", "KO-KR", "PT-BR", "CS-CZ", "DA-DK", "NO-NO",
+ "NL-BE", "EL-GR", "HU-HU", "FI-FI", "SK-SK"}
+ , hmi_result_strings{"SUCCESS",
+ "UNSUPPORTED_REQUEST",
+ "UNSUPPORTED_RESOURCE",
+ "DISALLOWED",
+ "REJECTED",
+ "ABORTED",
+ "IGNORED",
+ "RETRY",
+ "IN_USE",
+ "DATA_NOT_AVAILABLE",
+ "TIMED_OUT",
+ "INVALID_DATA",
+ "CHAR_LIMIT_EXCEEDED",
+ "INVALID_ID",
+ "DUPLICATE_NAME",
+ "APPLICATION_NOT_REGISTERED",
+ "WRONG_LANGUAGE",
+ "OUT_OF_MEMORY",
+ "TOO_MANY_PENDING_REQUESTS",
+ "NO_APPS_REGISTERED",
+ "NO_DEVICES_CONNECTED",
+ "WARNINGS",
+ "GENERIC_ERROR",
+ "USER_DISALLOWED",
+ "TRUNCATED_DATA"}
+ , mobile_result_strings{"SUCCESS",
+ "UNSUPPORTED_REQUEST",
+ "UNSUPPORTED_RESOURCE",
+ "DISALLOWED",
+ "REJECTED",
+ "ABORTED",
+ "IGNORED",
+ "RETRY",
+ "IN_USE",
+ "VEHICLE_DATA_NOT_AVAILABLE",
+ "TIMED_OUT",
+ "INVALID_DATA",
+ "CHAR_LIMIT_EXCEEDED",
+ "INVALID_ID",
+ "DUPLICATE_NAME",
+ "APPLICATION_NOT_REGISTERED",
+ "WRONG_LANGUAGE",
+ "OUT_OF_MEMORY",
+ "TOO_MANY_PENDING_REQUESTS",
+ "TOO_MANY_APPLICATIONS",
+ "APPLICATION_REGISTERED_ALREADY",
+ "WARNINGS",
+ "GENERIC_ERROR",
+ "USER_DISALLOWED",
+ "UNSUPPORTED_VERSION",
+ "VEHICLE_DATA_NOT_ALLOWED",
+ "FILE_NOT_FOUND",
+ "CANCEL_ROUTE",
+ "TRUNCATED_DATA",
+ "SAVED",
+ "INVALID_CERT",
+ "EXPIRED_CERT",
+ "RESUME_FAILED"}
+ , function_id_strings{"RESERVED",
+ "RegisterAppInterface",
+ "UnregisterAppInterface",
+ "SetGlobalProperties",
+ "ResetGlobalProperties",
+ "AddCommand",
+ "DeleteCommand",
+ "AddSubMenu",
+ "DeleteSubMenu",
+ "CreateInteractionChoiceSet",
+ "PerformInteraction",
+ "DeleteInteractionChoiceSet",
+ "Alert",
+ "Show",
+ "Speak",
+ "SetMediaClockTimer",
+ "PerformAudioPassThru",
+ "EndAudioPassThru",
+ "SubscribeButton",
+ "UnsubscribeButton",
+ "SubscribeVehicleData",
+ "UnsubscribeVehicleData",
+ "GetVehicleData",
+ "ReadDID",
+ "GetDTCs",
+ "ScrollableMessage",
+ "Slider",
+ "ShowConstantTBT",
+ "AlertManeuver",
+ "UpdateTurnList",
+ "ChangeRegistration",
+ "GenericResponse",
+ "PutFile",
+ "DeleteFile",
+ "ListFiles",
+ "SetAppIcon",
+ "SetDisplayLayout",
+ "DiagnosticMessage",
+ "SystemRequest",
+ "SendLocation",
+ "DialNumber"}
+ , events_id_strings{"OnHMIStatus",
+ "OnAppInterfaceUnregistered",
+ "OnButtonEvent",
+ "OnButtonPress",
+ "OnVehicleData",
+ "OnCommand",
+ "OnTBTClientState",
+ "OnDriverDistraction",
+ "OnPermissionsChange",
+ "OnAudioPassThru",
+ "OnLanguageChange",
+ "OnKeyboardInput",
+ "OnTouchEvent",
+ "OnSystemRequest",
+ "OnHashChange"}
+ , hmi_level_strings{"FULL", "LIMITED", "BACKGROUND", "NONE"}
+ , delta_from_functions_id(32768) {}
+
+ protected:
+ application_manager_test::MockApplicationManager mock_application_manager;
+ const StringArray language_strings;
+ const StringArray hmi_result_strings;
+ const StringArray mobile_result_strings;
+ const StringArray function_id_strings;
+ const StringArray events_id_strings;
+ const StringArray hmi_level_strings;
+
+ const size_t delta_from_functions_id;
+};
+
+TEST_F(MessageHelperTest,
+ CommonLanguageFromString_StringValueOfEnum_CorrectEType) {
+ HmiLanguage::eType enum_value;
+ HmiLanguage::eType enum_from_string_value;
+ // Check all languages >= 0
+ for (size_t array_index = 0; array_index < language_strings.size();
+ ++array_index) {
+ enum_value = static_cast<HmiLanguage::eType>(array_index);
+ enum_from_string_value =
+ MessageHelper::CommonLanguageFromString(language_strings[array_index]);
+ EXPECT_EQ(enum_value, enum_from_string_value);
+ }
+ // Check InvalidEnum == -1
+ enum_value = HmiLanguage::INVALID_ENUM;
+ enum_from_string_value = MessageHelper::CommonLanguageFromString("");
+ EXPECT_EQ(enum_value, enum_from_string_value);
+}
+
+TEST_F(MessageHelperTest,
+ CommonLanguageToString_ETypeValueOfEnum_CorrectString) {
+ std::string string_from_enum;
+ HmiLanguage::eType casted_enum;
+ // Check all languages >=0
+ for (size_t array_index = 0; array_index < language_strings.size();
+ ++array_index) {
+ casted_enum = static_cast<HmiLanguage::eType>(array_index);
+ string_from_enum = MessageHelper::CommonLanguageToString(casted_enum);
+ EXPECT_EQ(language_strings[array_index], string_from_enum);
+ }
+ // Check InvalidEnum == -1
+ string_from_enum =
+ MessageHelper::CommonLanguageToString(HmiLanguage::INVALID_ENUM);
+ EXPECT_EQ("", string_from_enum);
+}
+
+TEST_F(MessageHelperTest, ConvertEnumAPINoCheck_AnyEnumType_AnotherEnumType) {
+ hmi_apis::Common_LayoutMode::eType tested_enum_value =
+ hmi_apis::Common_LayoutMode::ICON_ONLY;
+ hmi_apis::Common_AppHMIType::eType converted =
+ MessageHelper::ConvertEnumAPINoCheck<hmi_apis::Common_LayoutMode::eType,
+ hmi_apis::Common_AppHMIType::eType>(
+ tested_enum_value);
+ EXPECT_EQ(hmi_apis::Common_AppHMIType::DEFAULT, converted);
+}
+
+TEST_F(MessageHelperTest, HMIResultFromString_StringValueOfEnum_CorrectEType) {
+ HmiResults::eType enum_value;
+ HmiResults::eType enum_from_string_value;
+ // Check all results >= 0
+ for (size_t array_index = 0; array_index < hmi_result_strings.size();
+ ++array_index) {
+ enum_value = static_cast<HmiResults::eType>(array_index);
+ enum_from_string_value =
+ MessageHelper::HMIResultFromString(hmi_result_strings[array_index]);
+ EXPECT_EQ(enum_value, enum_from_string_value);
+ }
+ // Check InvalidEnum == -1
+ enum_value = HmiResults::INVALID_ENUM;
+ enum_from_string_value = MessageHelper::HMIResultFromString("");
+ EXPECT_EQ(enum_value, enum_from_string_value);
+}
+
+TEST_F(MessageHelperTest, HMIResultToString_ETypeValueOfEnum_CorrectString) {
+ std::string string_from_enum;
+ HmiResults::eType casted_enum;
+ // Check all results >=0
+ for (size_t array_index = 0; array_index < hmi_result_strings.size();
+ ++array_index) {
+ casted_enum = static_cast<HmiResults::eType>(array_index);
+ string_from_enum = MessageHelper::HMIResultToString(casted_enum);
+ EXPECT_EQ(hmi_result_strings[array_index], string_from_enum);
+ }
+ // Check InvalidEnum == -1
+ string_from_enum = MessageHelper::HMIResultToString(HmiResults::INVALID_ENUM);
+ EXPECT_EQ("", string_from_enum);
+}
+
+TEST_F(MessageHelperTest,
+ HMIToMobileResult_HmiResultEType_GetCorrectMobileResultEType) {
+ MobileResults::eType tested_enum;
+ HmiResults::eType casted_hmi_enum;
+ MobileResults::eType converted_enum;
+ // Check enums >=0
+ for (size_t enum_index = 0; enum_index < hmi_result_strings.size();
+ ++enum_index) {
+ tested_enum =
+ MessageHelper::MobileResultFromString(hmi_result_strings[enum_index]);
+ casted_hmi_enum = static_cast<HmiResults::eType>(enum_index);
+ converted_enum = MessageHelper::HMIToMobileResult(casted_hmi_enum);
+ EXPECT_EQ(tested_enum, converted_enum);
+ }
+ // Check invalid enums == -1
+ tested_enum = MobileResults::INVALID_ENUM;
+ converted_enum = MessageHelper::HMIToMobileResult(HmiResults::INVALID_ENUM);
+ EXPECT_EQ(tested_enum, converted_enum);
+ // Check when out of range (true == result.empty())
+ casted_hmi_enum = static_cast<HmiResults::eType>(INT_MAX);
+ converted_enum = MessageHelper::HMIToMobileResult(casted_hmi_enum);
+ EXPECT_EQ(tested_enum, converted_enum);
+}
+
+TEST_F(MessageHelperTest, VerifySoftButtonString_WrongStrings_False) {
+ const StringArray wrong_strings{"soft_button1\t\ntext",
+ "soft_button1\\ntext",
+ "soft_button1\\ttext",
+ " ",
+ "soft_button1\t\n",
+ "soft_button1\\n",
+ "soft_button1\\t"};
+ for (size_t i = 0; i < wrong_strings.size(); ++i) {
+ EXPECT_FALSE(MessageHelper::VerifySoftButtonString(wrong_strings[i]));
+ }
+}
+
+TEST_F(MessageHelperTest, VerifySoftButtonString_CorrectStrings_True) {
+ const StringArray wrong_strings{"soft_button1.text",
+ "soft_button1?text",
+ " asd asdasd .././/",
+ "soft_button1??....asd",
+ "soft_button12313fcvzxc./.,"};
+ for (size_t i = 0; i < wrong_strings.size(); ++i) {
+ EXPECT_TRUE(MessageHelper::VerifySoftButtonString(wrong_strings[i]));
+ }
+}
+
+TEST_F(MessageHelperTest,
+ GetIVISubscriptionRequests_ValidApplication_HmiRequestNotEmpty) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating data acessor
+ application_manager::VehicleInfoSubscriptions vis;
+ DataAccessor<application_manager::VehicleInfoSubscriptions> data_accessor(
+ vis, true);
+ // Calls for ApplicationManager
+ EXPECT_CALL(*appSharedMock, app_id()).WillOnce(Return(1u));
+ EXPECT_CALL(*appSharedMock, SubscribedIVI()).WillOnce(Return(data_accessor));
+
+ smart_objects::SmartObjectList outList =
+ MessageHelper::GetIVISubscriptionRequests(appSharedMock,
+ mock_application_manager);
+ // Expect not empty request
+ EXPECT_FALSE(outList.empty());
+}
+
+TEST_F(MessageHelperTest,
+ ProcessSoftButtons_SmartObjectWithoutButtonsKey_Success) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating input data for method
+ smart_objects::SmartObject object;
+ policy_handler_test::MockPolicySettings policy_settings_;
+ const policy::PolicyHandler policy_handler(policy_settings_,
+ mock_application_manager);
+ // Method call
+ mobile_apis::Result::eType result = MessageHelper::ProcessSoftButtons(
+ object, appSharedMock, policy_handler, mock_application_manager);
+ // Expect
+ EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
+}
+
+TEST_F(MessageHelperTest,
+ ProcessSoftButtons_IncorectSoftButonValue_InvalidData) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating input data for method
+ smart_objects::SmartObject object;
+ smart_objects::SmartObject& buttons = object[strings::soft_buttons];
+ // Setting invalid image string to button
+ buttons[0][strings::image][strings::value] = "invalid\\nvalue";
+ policy_handler_test::MockPolicySettings policy_settings_;
+ const policy::PolicyHandler policy_handler(policy_settings_,
+ mock_application_manager);
+ // Method call
+ mobile_apis::Result::eType result = MessageHelper::ProcessSoftButtons(
+ object, appSharedMock, policy_handler, mock_application_manager);
+ // Expect
+ EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
+}
+
+TEST_F(MessageHelperTest, VerifyImage_ImageTypeIsStatic_Success) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating input data for method
+ smart_objects::SmartObject image;
+ image[strings::image_type] = mobile_apis::ImageType::STATIC;
+ // Method call
+ mobile_apis::Result::eType result = MessageHelper::VerifyImage(
+ image, appSharedMock, mock_application_manager);
+ // EXPECT
+ EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
+}
+
+TEST_F(MessageHelperTest, VerifyImage_ImageValueNotValid_InvalidData) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating input data for method
+ smart_objects::SmartObject image;
+ image[strings::image_type] = mobile_apis::ImageType::DYNAMIC;
+ // Invalid value
+ image[strings::value] = " ";
+ // Method call
+ mobile_apis::Result::eType result = MessageHelper::VerifyImage(
+ image, appSharedMock, mock_application_manager);
+ // EXPECT
+ EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
+}
+
+TEST_F(MessageHelperTest, VerifyImageFiles_SmartObjectWithValidData_Success) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating input data for method
+ smart_objects::SmartObject images;
+ images[0][strings::image_type] = mobile_apis::ImageType::STATIC;
+ images[1][strings::image_type] = mobile_apis::ImageType::STATIC;
+ // Method call
+ mobile_apis::Result::eType result = MessageHelper::VerifyImageFiles(
+ images, appSharedMock, mock_application_manager);
+ // EXPECT
+ EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
+}
+
+TEST_F(MessageHelperTest,
+ VerifyImageFiles_SmartObjectWithInvalidData_NotSuccsess) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating input data for method
+ smart_objects::SmartObject images;
+ images[0][strings::image_type] = mobile_apis::ImageType::DYNAMIC;
+ images[1][strings::image_type] = mobile_apis::ImageType::DYNAMIC;
+ // Invalid values
+ images[0][strings::value] = " ";
+ images[1][strings::value] = "image\\n";
+ // Method call
+ mobile_apis::Result::eType result = MessageHelper::VerifyImageFiles(
+ images, appSharedMock, mock_application_manager);
+ // EXPECT
+ EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
+}
+
+TEST_F(MessageHelperTest,
+ VerifyImageVrHelpItems_SmartObjectWithSeveralValidImages_Succsess) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating input data for method
+ smart_objects::SmartObject message;
+ message[0][strings::image][strings::image_type] =
+ mobile_apis::ImageType::STATIC;
+ message[1][strings::image][strings::image_type] =
+ mobile_apis::ImageType::STATIC;
+ // Method call
+ mobile_apis::Result::eType result = MessageHelper::VerifyImageVrHelpItems(
+ message, appSharedMock, mock_application_manager);
+ // EXPECT
+ EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
+}
+
+TEST_F(MessageHelperTest,
+ VerifyImageVrHelpItems_SmartObjWithSeveralInvalidImages_NotSuccsess) {
+ // Creating sharedPtr to MockApplication
+ MockApplicationSharedPtr appSharedMock = utils::MakeShared<AppMock>();
+ // Creating input data for method
+ smart_objects::SmartObject message;
+ message[0][strings::image][strings::image_type] =
+ mobile_apis::ImageType::DYNAMIC;
+ message[1][strings::image][strings::image_type] =
+ mobile_apis::ImageType::DYNAMIC;
+ // Invalid values
+ message[0][strings::image][strings::value] = " ";
+ message[1][strings::image][strings::value] = "image\\n";
+ // Method call
+ mobile_apis::Result::eType result = MessageHelper::VerifyImageVrHelpItems(
+ message, appSharedMock, mock_application_manager);
+ // EXPECT
+ EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
+}
+
+TEST_F(MessageHelperTest,
+ StringifiedFunctionID_FinctionId_EqualsWithStringsInArray) {
+ // Start from 1 because 1 == RESERVED and haven`t ID in last 2 characters
+ // if FUNCTION ID == 1 inner DCHECK is false
+ mobile_apis::FunctionID::eType casted_enum;
+ std::string converted;
+ for (size_t i = 1; i < function_id_strings.size(); ++i) {
+ casted_enum = static_cast<mobile_apis::FunctionID::eType>(i);
+ converted = MessageHelper::StringifiedFunctionID(casted_enum);
+ EXPECT_EQ(function_id_strings[i], converted);
+ }
+ // EventIDs emum strarts from delta_from_functions_id = 32768
+ for (size_t i = delta_from_functions_id;
+ i < events_id_strings.size() + delta_from_functions_id;
+ ++i) {
+ casted_enum = static_cast<mobile_apis::FunctionID::eType>(i);
+ converted = MessageHelper::StringifiedFunctionID(casted_enum);
+ EXPECT_EQ(events_id_strings[i - delta_from_functions_id], converted);
+ }
+}
+
+TEST_F(MessageHelperTest,
+ StringifiedHmiLevel_LevelEnum_EqualsWithStringsInArray) {
+ mobile_apis::HMILevel::eType casted_enum;
+ std::string converted_value;
+ for (size_t i = 0; i < hmi_level_strings.size(); ++i) {
+ casted_enum = static_cast<mobile_apis::HMILevel::eType>(i);
+ converted_value = MessageHelper::StringifiedHMILevel(casted_enum);
+ EXPECT_EQ(hmi_level_strings[i], converted_value);
+ }
+}
+
+TEST_F(MessageHelperTest, StringToHmiLevel_LevelString_EqEType) {
+ mobile_apis::HMILevel::eType tested_enum;
+ mobile_apis::HMILevel::eType converted_enum;
+ for (size_t i = 0; i < hmi_level_strings.size(); ++i) {
+ tested_enum = static_cast<mobile_apis::HMILevel::eType>(i);
+ converted_enum = MessageHelper::StringToHMILevel(hmi_level_strings[i]);
+ EXPECT_EQ(tested_enum, converted_enum);
+ }
+}
+
+TEST_F(MessageHelperTest, SubscribeApplicationToSoftButton_CallFromApp) {
+ // Create application mock
+ MockApplicationSharedPtr appSharedPtr = utils::MakeShared<AppMock>();
+ // Prepare data for method
+ smart_objects::SmartObject message_params;
+ size_t function_id = 1;
+ //
+ EXPECT_CALL(*appSharedPtr,
+ SubscribeToSoftButtons(function_id, SoftButtonID())).Times(1);
+ MessageHelper::SubscribeApplicationToSoftButton(
+ message_params, appSharedPtr, function_id);
+}
+
+} // namespace test
+} // namespace application_manager