diff options
Diffstat (limited to 'src/components/application_manager/test/hmi_capabilities_test.cc')
-rw-r--r-- | src/components/application_manager/test/hmi_capabilities_test.cc | 527 |
1 files changed, 527 insertions, 0 deletions
diff --git a/src/components/application_manager/test/hmi_capabilities_test.cc b/src/components/application_manager/test/hmi_capabilities_test.cc new file mode 100644 index 0000000000..1ed2123eba --- /dev/null +++ b/src/components/application_manager/test/hmi_capabilities_test.cc @@ -0,0 +1,527 @@ +/* + * 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 "application_manager/hmi_capabilities.h" +#include "gtest/gtest.h" +#include "smart_objects/smart_object.h" +#include "application_manager/mock_message_helper.h" +#include "smart_objects/enum_schema_item.h" +#include "interfaces/HMI_API.h" +#include "utils/make_shared.h" +#include "application_manager/hmi_capabilities_for_testing.h" +#include "utils/file_system.h" +#include "application_manager/mock_application_manager.h" +#include "application_manager/mock_application_manager_settings.h" +#include "application_manager/mock_event_dispatcher.h" +#include "application_manager/state_controller.h" +#include "resumption/last_state.h" +#include "application_manager/resumption/resume_ctrl.h" + +namespace test { +namespace components { +namespace application_manager_test { + +using ::testing::_; +using ::testing::Return; +using ::testing::ReturnRef; +using ::testing::AtLeast; +using ::testing::Invoke; +using ::testing::InSequence; + +namespace smart_objects = NsSmartDeviceLink::NsSmartObjects; +using namespace application_manager; + +class HMICapabilitiesTest : public ::testing::Test { + protected: + HMICapabilitiesTest() : last_state_("app_storage_folder", "app_info_data") {} + virtual void SetUp() OVERRIDE { + EXPECT_CALL(app_mngr_, event_dispatcher()) + .WillOnce(ReturnRef(mock_event_dispatcher)); + EXPECT_CALL(app_mngr_, get_settings()) + .WillRepeatedly(ReturnRef(mock_application_manager_settings_)); + EXPECT_CALL(mock_application_manager_settings_, + hmi_capabilities_file_name()).WillOnce(ReturnRef(kFileName)); + EXPECT_CALL(mock_event_dispatcher, add_observer(_, _, _)).Times(1); + EXPECT_CALL(mock_event_dispatcher, remove_observer(_)).Times(1); + EXPECT_CALL(mock_application_manager_settings_, launch_hmi()) + .WillOnce(Return(false)); + hmi_capabilities_test = + utils::MakeShared<HMICapabilitiesForTesting>(app_mngr_); + hmi_capabilities_test->Init(&last_state_); + } + + void TearDown() OVERRIDE { + hmi_capabilities_test.reset(); + } + static void TearDownTestCase() { + if (file_system::FileExists("./app_info_data")) { + EXPECT_TRUE(::file_system::DeleteFile("./app_info_data")); + } + } + + void SetCooperating(); + MockApplicationManager app_mngr_; + event_engine_test::MockEventDispatcher mock_event_dispatcher; + resumption::LastState last_state_; + MockApplicationManagerSettings mock_application_manager_settings_; + utils::SharedPtr<HMICapabilitiesForTesting> hmi_capabilities_test; + const std::string kFileName = "hmi_capabilities.json"; +}; + +const char* const cstring_values_[] = { + "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"}; + +const hmi_apis::Common_Language::eType enum_values_[] = { + hmi_apis::Common_Language::EN_US, hmi_apis::Common_Language::ES_MX, + hmi_apis::Common_Language::FR_CA, hmi_apis::Common_Language::DE_DE, + hmi_apis::Common_Language::ES_ES, hmi_apis::Common_Language::EN_GB, + hmi_apis::Common_Language::RU_RU, hmi_apis::Common_Language::TR_TR, + hmi_apis::Common_Language::PL_PL, hmi_apis::Common_Language::FR_FR, + hmi_apis::Common_Language::IT_IT, hmi_apis::Common_Language::SV_SE, + hmi_apis::Common_Language::PT_PT, hmi_apis::Common_Language::NL_NL, + hmi_apis::Common_Language::EN_AU, hmi_apis::Common_Language::ZH_CN, + hmi_apis::Common_Language::ZH_TW, hmi_apis::Common_Language::JA_JP, + hmi_apis::Common_Language::AR_SA, hmi_apis::Common_Language::KO_KR, + hmi_apis::Common_Language::PT_BR, hmi_apis::Common_Language::CS_CZ, + hmi_apis::Common_Language::DA_DK, hmi_apis::Common_Language::NO_NO, + hmi_apis::Common_Language::NL_BE, hmi_apis::Common_Language::EL_GR, + hmi_apis::Common_Language::HU_HU, hmi_apis::Common_Language::FI_FI, + hmi_apis::Common_Language::SK_SK}; + +struct CStringComparator { + bool operator()(const char* a, const char* b) { + return strcmp(a, b) < 0; + } +}; + +typedef std::map<const char*, + hmi_apis::Common_Language::eType, + CStringComparator> CStringToEnumMap; + +CStringToEnumMap InitCStringToEnumMap() { + size_t value = sizeof(cstring_values_) / sizeof(cstring_values_[0]); + CStringToEnumMap result; + for (size_t i = 0; i < value; ++i) { + result[cstring_values_[i]] = enum_values_[i]; + } + return result; +} + +bool StringToEnum(const char* str, hmi_apis::Common_Language::eType& value) { + size_t count_value = sizeof(cstring_values_) / sizeof(cstring_values_[0]); + CStringToEnumMap result; + for (size_t i = 0; i < count_value; ++i) { + result[cstring_values_[i]] = enum_values_[i]; + } + + CStringToEnumMap::const_iterator it = result.find(str); + if (it == result.end()) { + return false; + } + value = it->second; + return true; +} + +hmi_apis::Common_Language::eType TestCommonLanguageFromString( + const std::string& language) { + hmi_apis::Common_Language::eType value; + if (StringToEnum(language.c_str(), value)) { + return value; + } + return hmi_apis::Common_Language::INVALID_ENUM; +} + +TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) { + const std::string hmi_capabilities_file = "hmi_capabilities.json"; + EXPECT_CALL(mock_application_manager_settings_, hmi_capabilities_file_name()) + .WillOnce(ReturnRef(hmi_capabilities_file)); + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CommonLanguageFromString(_)) + .WillRepeatedly(Invoke(TestCommonLanguageFromString)); + + if (file_system::FileExists("./app_info_data")) { + EXPECT_TRUE(::file_system::DeleteFile("./app_info_data")); + } + EXPECT_TRUE(hmi_capabilities_test->LoadCapabilitiesFromFile()); + + // Check active languages + EXPECT_EQ(hmi_apis::Common_Language::EN_US, + hmi_capabilities_test->active_ui_language()); + EXPECT_EQ(hmi_apis::Common_Language::ES_MX, + hmi_capabilities_test->active_vr_language()); + EXPECT_EQ(hmi_apis::Common_Language::DE_DE, + hmi_capabilities_test->active_tts_language()); + + // Check UI languages + const smart_objects::SmartObject ui_supported_languages = + *(hmi_capabilities_test->ui_supported_languages()); + + EXPECT_EQ(hmi_apis::Common_Language::EN_US, + static_cast<hmi_apis::Common_Language::eType>( + ui_supported_languages[0].asInt())); + EXPECT_EQ(hmi_apis::Common_Language::ES_MX, + static_cast<hmi_apis::Common_Language::eType>( + ui_supported_languages[1].asInt())); + EXPECT_EQ(hmi_apis::Common_Language::FR_CA, + static_cast<hmi_apis::Common_Language::eType>( + ui_supported_languages[2].asInt())); + + // Check VR languages + const smart_objects::SmartObject vr_supported_languages = + *(hmi_capabilities_test->vr_supported_languages()); + + EXPECT_EQ(hmi_apis::Common_Language::AR_SA, + static_cast<hmi_apis::Common_Language::eType>( + vr_supported_languages[0].asInt())); + EXPECT_EQ(hmi_apis::Common_Language::EN_US, + static_cast<hmi_apis::Common_Language::eType>( + vr_supported_languages[1].asInt())); + EXPECT_EQ(hmi_apis::Common_Language::ES_MX, + static_cast<hmi_apis::Common_Language::eType>( + vr_supported_languages[2].asInt())); + + // Check TTS languages + const smart_objects::SmartObject tts_supported_languages = + *(hmi_capabilities_test->tts_supported_languages()); + + EXPECT_EQ(hmi_apis::Common_Language::DA_DK, + static_cast<hmi_apis::Common_Language::eType>( + tts_supported_languages[0].asInt())); + EXPECT_EQ(hmi_apis::Common_Language::CS_CZ, + static_cast<hmi_apis::Common_Language::eType>( + tts_supported_languages[1].asInt())); + EXPECT_EQ(hmi_apis::Common_Language::KO_KR, + static_cast<hmi_apis::Common_Language::eType>( + tts_supported_languages[2].asInt())); + + // Check button capabilities + const smart_objects::SmartObject buttons_capabilities_so = + *(hmi_capabilities_test->button_capabilities()); + + // Count of buttons in json file + const uint32_t btn_length = buttons_capabilities_so.length(); + EXPECT_EQ(15u, btn_length); + for (uint32_t i = 0; i < btn_length; ++i) { + EXPECT_TRUE((buttons_capabilities_so[i]).keyExists(strings::name)); + EXPECT_TRUE((buttons_capabilities_so[i]).keyExists("shortPressAvailable")); + EXPECT_TRUE((buttons_capabilities_so[i]).keyExists("longPressAvailable")); + EXPECT_TRUE((buttons_capabilities_so[i]).keyExists("upDownAvailable")); + EXPECT_TRUE(buttons_capabilities_so[i]["shortPressAvailable"].asBool()); + EXPECT_TRUE(buttons_capabilities_so[i]["longPressAvailable"].asBool()); + EXPECT_TRUE(buttons_capabilities_so[i]["upDownAvailable"].asBool()); + } + const smart_objects::SmartObject display_capabilities_so = + *(hmi_capabilities_test->display_capabilities()); + + // Check display type + EXPECT_EQ(hmi_apis::Common_DisplayType::GEN2_8_DMA, + static_cast<hmi_apis::Common_DisplayType::eType>( + display_capabilities_so[hmi_response::display_type].asInt())); + + EXPECT_TRUE(display_capabilities_so["graphicSupported"].asBool()); + + // Check text fields + const uint32_t text_len = + display_capabilities_so[hmi_response::text_fields].length(); + EXPECT_NE(0u, text_len); + for (uint32_t i = 0; i < text_len; ++i) { + EXPECT_TRUE((display_capabilities_so[hmi_response::text_fields][i]) + .keyExists(strings::name)); + EXPECT_TRUE((display_capabilities_so[hmi_response::text_fields][i]) + .keyExists(strings::character_set)); + } + + // Check image fields + EXPECT_TRUE((display_capabilities_so).keyExists(hmi_response::image_fields)); + const uint32_t img_len = + display_capabilities_so[hmi_response::image_fields].length(); + EXPECT_NE(0u, img_len); + for (uint32_t i = 0; i < img_len; ++i) { + EXPECT_TRUE((display_capabilities_so[hmi_response::image_fields][i]) + .keyExists(strings::name)); + EXPECT_TRUE((display_capabilities_so[hmi_response::image_fields][i]) + .keyExists(strings::image_type_supported)); + if (display_capabilities_so[hmi_response::image_fields][i][strings::name] == + hmi_apis::Common_ImageFieldName::locationImage) { + EXPECT_EQ(hmi_apis::Common_FileType::GRAPHIC_PNG, + static_cast<hmi_apis::Common_FileType::eType>( + display_capabilities_so[hmi_response::image_fields][i] + [strings::image_type_supported][0] + .asInt())); + } + } + + // Check media clock formats + EXPECT_TRUE( + (display_capabilities_so).keyExists(hmi_response::media_clock_formats)); + const uint32_t media_length = + display_capabilities_so[hmi_response::media_clock_formats].length(); + EXPECT_NE(0u, media_length); + for (uint32_t i = 0; i < media_length; ++i) { + EXPECT_EQ( + i, + display_capabilities_so[hmi_response::media_clock_formats][i].asUInt()); + } + + EXPECT_TRUE( + (display_capabilities_so).keyExists(hmi_response::image_capabilities)); + EXPECT_EQ(hmi_apis::Common_ImageType::DYNAMIC, + static_cast<hmi_apis::Common_ImageType::eType>( + display_capabilities_so[hmi_response::image_capabilities][0] + .asInt())); + EXPECT_EQ(hmi_apis::Common_ImageType::STATIC, + static_cast<hmi_apis::Common_ImageType::eType>( + display_capabilities_so[hmi_response::image_capabilities][1] + .asInt())); + + // Check audio pass thru + const smart_objects::SmartObject audio_pass_thru_capabilities_so = + *(hmi_capabilities_test->audio_pass_thru_capabilities()); + EXPECT_EQ(hmi_apis::Common_SamplingRate::RATE_44KHZ, + static_cast<hmi_apis::Common_SamplingRate::eType>( + audio_pass_thru_capabilities_so["samplingRate"].asInt())); + EXPECT_EQ(hmi_apis::Common_BitsPerSample::RATE_8_BIT, + static_cast<hmi_apis::Common_BitsPerSample::eType>( + audio_pass_thru_capabilities_so["bitsPerSample"].asInt())); + EXPECT_EQ(hmi_apis::Common_AudioType::PCM, + static_cast<hmi_apis::Common_AudioType::eType>( + audio_pass_thru_capabilities_so["audioType"].asInt())); + + // Check hmi zone capabilities + const smart_objects::SmartObject hmi_zone_capabilities_so = + *(hmi_capabilities_test->hmi_zone_capabilities()); + EXPECT_EQ(hmi_apis::Common_HmiZoneCapabilities::FRONT, + static_cast<hmi_apis::Common_HmiZoneCapabilities::eType>( + hmi_zone_capabilities_so.asInt())); + + const smart_objects::SmartObject soft_button_capabilities_so = + *(hmi_capabilities_test->soft_button_capabilities()); + + EXPECT_TRUE(soft_button_capabilities_so[0]["shortPressAvailable"].asBool()); + EXPECT_TRUE(soft_button_capabilities_so[0]["longPressAvailable"].asBool()); + EXPECT_TRUE(soft_button_capabilities_so[0]["upDownAvailable"].asBool()); + EXPECT_TRUE(soft_button_capabilities_so[0]["imageSupported"].asBool()); + + const smart_objects::SmartObject preset_bank_so = + *(hmi_capabilities_test->preset_bank_capabilities()); + EXPECT_TRUE(preset_bank_so["onScreenPresetsAvailable"].asBool()); + + // Check vehicle type + const smart_objects::SmartObject vehicle_type_so = + *(hmi_capabilities_test->vehicle_type()); + EXPECT_TRUE(preset_bank_so["onScreenPresetsAvailable"].asBool()); + + EXPECT_EQ("Ford", vehicle_type_so["make"].asString()); + EXPECT_EQ("Fiesta", vehicle_type_so["model"].asString()); + EXPECT_EQ("2013", vehicle_type_so["modelYear"].asString()); + EXPECT_EQ("SE", vehicle_type_so["trim"].asString()); +} + +TEST_F(HMICapabilitiesTest, ConvertJsonLanguagesToObj) { + Json::Value json_languages(Json::arrayValue); + json_languages[0] = "EN_US"; + json_languages[1] = "ES_MX"; + smart_objects::SmartObject sm_obj = + smart_objects::SmartObject(smart_objects::SmartType_Array); + + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CommonLanguageFromString(json_languages[0].asString())) + .WillOnce(Return(hmi_apis::Common_Language::EN_US)); + + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CommonLanguageFromString(json_languages[1].asString())) + .WillOnce(Return(hmi_apis::Common_Language::ES_MX)); + + hmi_capabilities_test->ConvertJsonLanguagesToObj(json_languages, sm_obj); + + EXPECT_EQ(hmi_apis::Common_Language::EN_US, + static_cast<hmi_apis::Common_Language::eType>(sm_obj[0].asInt())); + EXPECT_EQ(hmi_apis::Common_Language::ES_MX, + static_cast<hmi_apis::Common_Language::eType>(sm_obj[1].asInt())); +} + +TEST_F(HMICapabilitiesTest, + HmiCapabilitiesInitialized_UiVrTtsIviNotCooperating) { + // Precondition + hmi_capabilities_test->set_is_vr_cooperating(false); + hmi_capabilities_test->set_is_tts_cooperating(false); + + hmi_capabilities_test->set_is_ui_cooperating(false); + hmi_capabilities_test->set_is_navi_cooperating(false); + hmi_capabilities_test->set_is_ivi_cooperating(false); + EXPECT_TRUE(hmi_capabilities_test->is_hmi_capabilities_initialized()); +} + +TEST_F(HMICapabilitiesTest, HmiCapabilitiesInitialized) { + // Precondition + SetCooperating(); + smart_objects::SmartObjectSPtr language( + new smart_objects::SmartObject(smart_objects::SmartType_Map)); + + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(_, _)).WillRepeatedly(Return(language)); + + hmi_capabilities_test->set_is_vr_cooperating(true); + smart_objects::SmartObject supported_languages; + supported_languages[0] = "EN_US"; + hmi_capabilities_test->set_vr_supported_languages(supported_languages); + hmi_capabilities_test->set_tts_supported_languages(supported_languages); + hmi_capabilities_test->set_ui_supported_languages(supported_languages); + hmi_capabilities_test->set_vehicle_type(supported_languages); + + hmi_capabilities_test->set_is_tts_cooperating(true); + hmi_capabilities_test->set_is_ui_cooperating(true); + hmi_capabilities_test->set_is_navi_cooperating(true); + hmi_capabilities_test->set_is_ivi_cooperating(true); + + hmi_capabilities_test->set_active_vr_language( + hmi_apis::Common_Language::EN_US); + SetCooperating(); + hmi_capabilities_test->set_active_tts_language( + hmi_apis::Common_Language::EN_US); + SetCooperating(); + hmi_capabilities_test->set_active_ui_language( + hmi_apis::Common_Language::EN_US); + + EXPECT_TRUE(hmi_capabilities_test->is_hmi_capabilities_initialized()); +} + +TEST_F(HMICapabilitiesTest, VerifyImageType) { + const int32_t image_type = 1; + smart_objects::SmartObject sm_obj; + sm_obj[hmi_response::image_capabilities][0] = image_type; + hmi_capabilities_test->set_display_capabilities(sm_obj); + + EXPECT_TRUE(hmi_capabilities_test->VerifyImageType(image_type)); + + const int32_t new_image_type = 2; + EXPECT_FALSE(hmi_capabilities_test->VerifyImageType(new_image_type)); +} + +void HMICapabilitiesTest::SetCooperating() { + smart_objects::SmartObjectSPtr test_so; + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(_, _)).WillRepeatedly(Return(test_so)); + EXPECT_CALL(app_mngr_, ManageHMICommand(_)).WillRepeatedly(Return(true)); +} + +TEST_F(HMICapabilitiesTest, SetVRCooperating) { + // Without sequence it is impossible to check correct call of ManageHMICommand + InSequence dummy; + smart_objects::SmartObjectSPtr language( + new smart_objects::SmartObject(smart_objects::SmartType_Map)); + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::VR_GetLanguage, _)) + .WillOnce(Return(language)); + EXPECT_CALL(app_mngr_, ManageHMICommand(language)); + + smart_objects::SmartObjectSPtr support_language; + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::VR_GetSupportedLanguages, + _)).WillOnce(Return(support_language)); + EXPECT_CALL(app_mngr_, ManageHMICommand(support_language)); + + smart_objects::SmartObjectSPtr capabilities; + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::VR_GetCapabilities, _)) + .WillOnce(Return(capabilities)); + EXPECT_CALL(app_mngr_, ManageHMICommand(capabilities)); + + hmi_capabilities_test->set_is_vr_cooperating(true); +} + +TEST_F(HMICapabilitiesTest, SetTTSCooperating) { + smart_objects::SmartObjectSPtr language( + new smart_objects::SmartObject(smart_objects::SmartType_Map)); + InSequence dummy; + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::TTS_GetLanguage, _)) + .WillOnce(Return(language)); + EXPECT_CALL(app_mngr_, ManageHMICommand(language)); + + smart_objects::SmartObjectSPtr support_language; + EXPECT_CALL( + *(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::TTS_GetSupportedLanguages, _)) + .WillOnce(Return(support_language)); + EXPECT_CALL(app_mngr_, ManageHMICommand(support_language)); + + smart_objects::SmartObjectSPtr capabilities; + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::TTS_GetCapabilities, _)) + .WillOnce(Return(capabilities)); + EXPECT_CALL(app_mngr_, ManageHMICommand(capabilities)); + + hmi_capabilities_test->set_is_tts_cooperating(true); +} + +TEST_F(HMICapabilitiesTest, SetUICooperating) { + InSequence dummy; + smart_objects::SmartObjectSPtr language( + new smart_objects::SmartObject(smart_objects::SmartType_Map)); + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::UI_GetLanguage, _)) + .WillOnce(Return(language)); + EXPECT_CALL(app_mngr_, ManageHMICommand(language)); + + smart_objects::SmartObjectSPtr support_language; + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::UI_GetSupportedLanguages, + _)).WillOnce(Return(support_language)); + EXPECT_CALL(app_mngr_, ManageHMICommand(support_language)); + + smart_objects::SmartObjectSPtr capabilities; + EXPECT_CALL(*(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::UI_GetCapabilities, _)) + .WillOnce(Return(capabilities)); + EXPECT_CALL(app_mngr_, ManageHMICommand(capabilities)); + + hmi_capabilities_test->set_is_ui_cooperating(true); +} + +TEST_F(HMICapabilitiesTest, SetIviCooperating) { + smart_objects::SmartObjectSPtr ivi_type; + EXPECT_CALL( + *(MockMessageHelper::message_helper_mock()), + CreateModuleInfoSO(hmi_apis::FunctionID::VehicleInfo_GetVehicleType, _)) + .WillOnce(Return(ivi_type)); + EXPECT_CALL(app_mngr_, ManageHMICommand(ivi_type)); + + hmi_capabilities_test->set_is_ivi_cooperating(true); +} + +} // namespace application_manager_test +} // namespace components +} // namespace test |