summaryrefslogtreecommitdiff
path: root/src/components/application_manager/test/hmi_capabilities_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/test/hmi_capabilities_test.cc')
-rw-r--r--src/components/application_manager/test/hmi_capabilities_test.cc1629
1 files changed, 1302 insertions, 327 deletions
diff --git a/src/components/application_manager/test/hmi_capabilities_test.cc b/src/components/application_manager/test/hmi_capabilities_test.cc
index 6234830f50..73e86fc7a7 100644
--- a/src/components/application_manager/test/hmi_capabilities_test.cc
+++ b/src/components/application_manager/test/hmi_capabilities_test.cc
@@ -33,7 +33,12 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include "application_manager/hmi_capabilities_impl.h"
+
+#include <algorithm>
+#include <memory>
#include <string>
+#include <vector>
#include "application_manager/hmi_capabilities.h"
#include "application_manager/mock_message_helper.h"
@@ -42,81 +47,57 @@
#include "smart_objects/enum_schema_item.h"
#include "smart_objects/smart_object.h"
-#include "application_manager/hmi_capabilities_for_testing.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/mock_rpc_service.h"
#include "application_manager/resumption/resume_ctrl.h"
#include "application_manager/state_controller.h"
+#include "rc_rpc_plugin/rc_module_constants.h"
#include "resumption/last_state_impl.h"
#include "resumption/last_state_wrapper_impl.h"
#include "utils/file_system.h"
+#include "utils/jsoncpp_reader_wrapper.h"
namespace test {
namespace components {
namespace application_manager_test {
+namespace {
+const std::string kAppInfoDataFile = "./app_info_data";
+const std::string kAppStorageFolder = "app_storage_folder";
+const std::string kAppInfoStorage = "app_info_storage";
+const std::string kHmiCapabilitiesDefaultFile = "hmi_capabilities.json";
+const std::string kHmiCapabilitiesCacheFile = "hmi_capabilities_cache.json";
+const uint32_t kEqualizerMaxChanelId = 10;
+} // namespace
+
using ::testing::_;
-using ::testing::AtLeast;
-using ::testing::InSequence;
using ::testing::Invoke;
+using ::testing::NiceMock;
using ::testing::Return;
using ::testing::ReturnRef;
using namespace application_manager;
-class HMICapabilitiesTest : public ::testing::Test {
- protected:
- HMICapabilitiesTest()
- : last_state_wrapper_(std::make_shared<resumption::LastStateWrapperImpl>(
- std::make_shared<resumption::LastStateImpl>("app_storage_folder",
- "app_info_storage")))
- , file_name_("hmi_capabilities.json") {}
- 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(file_name_));
- 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 =
- std::make_shared<HMICapabilitiesForTesting>(app_mngr_);
- hmi_capabilities_test->Init(last_state_wrapper_);
- }
+typedef std::map<std::string, hmi_apis::Common_Language::eType>
+ LanguageCStringToEnumMap;
- 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"));
- }
- }
+typedef std::map<std::string, hmi_apis::Common_LightName::eType>
+ LightNameCStringToEnumMap;
- void SetCooperating();
- MockApplicationManager app_mngr_;
- event_engine_test::MockEventDispatcher mock_event_dispatcher;
- resumption::LastStateWrapperPtr last_state_wrapper_;
- MockApplicationManagerSettings mock_application_manager_settings_;
- std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities_test;
- const std::string file_name_;
- application_manager_test::MockRPCService mock_rpc_service_;
-};
+static LanguageCStringToEnumMap languages_map;
+static LightNameCStringToEnumMap light_names_map;
-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", "EN_IN", "TH_TH", "EN_SA",
- "HE_IL", "RO_RO", "UK_UA", "ID_ID", "VI_VN", "MS_MY", "HI_IN"};
+const std::vector<std::string> language_string_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"}, {"EN-IN"}, {"TH-TH"}, {"EN-SA"}, {"HE-IL"}, {"RO-RO"}, {"UK-UA"},
+ {"ID-ID"}, {"VI-VN"}, {"MS-MY"}, {"HI-IN"}};
-const hmi_apis::Common_Language::eType enum_values_[] = {
+const std::vector<hmi_apis::Common_Language::eType> language_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,
@@ -138,142 +119,338 @@ const hmi_apis::Common_Language::eType enum_values_[] = {
hmi_apis::Common_Language::VI_VN, hmi_apis::Common_Language::MS_MY,
hmi_apis::Common_Language::HI_IN};
-struct CStringComparator {
- bool operator()(const char* a, const char* b) {
- return strcmp(a, b) < 0;
+const std::vector<hmi_apis::Common_LightName::eType> light_name_enum_values{
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_HIGH_BEAM,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_HIGH_BEAM,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_LOW_BEAM,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_LOW_BEAM,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_PARKING_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_PARKING_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_FOG_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_FOG_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_DAYTIME_RUNNING_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_DAYTIME_RUNNING_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_TURN_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_TURN_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_LEFT_FOG_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_RIGHT_FOG_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_LEFT_TAIL_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_RIGHT_TAIL_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_LEFT_BRAKE_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_RIGHT_BRAKE_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_LEFT_TURN_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_RIGHT_TURN_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_REGISTRATION_PLATE_LIGHT,
+ hmi_apis::Common_LightName::eType::HIGH_BEAMS,
+ hmi_apis::Common_LightName::eType::LOW_BEAMS,
+ hmi_apis::Common_LightName::eType::FOG_LIGHTS,
+ hmi_apis::Common_LightName::eType::RUNNING_LIGHTS,
+ hmi_apis::Common_LightName::eType::PARKING_LIGHTS,
+ hmi_apis::Common_LightName::eType::BRAKE_LIGHTS,
+ hmi_apis::Common_LightName::eType::REAR_REVERSING_LIGHTS,
+ hmi_apis::Common_LightName::eType::SIDE_MARKER_LIGHTS,
+ hmi_apis::Common_LightName::eType::LEFT_TURN_LIGHTS,
+ hmi_apis::Common_LightName::eType::RIGHT_TURN_LIGHTS,
+ hmi_apis::Common_LightName::eType::HAZARD_LIGHTS,
+ hmi_apis::Common_LightName::eType::REAR_CARGO_LIGHTS,
+ hmi_apis::Common_LightName::eType::REAR_TRUCK_BED_LIGHTS,
+ hmi_apis::Common_LightName::eType::REAR_TRAILER_LIGHTS,
+ hmi_apis::Common_LightName::eType::LEFT_SPOT_LIGHTS,
+ hmi_apis::Common_LightName::eType::RIGHT_SPOT_LIGHTS,
+ hmi_apis::Common_LightName::eType::LEFT_PUDDLE_LIGHTS,
+ hmi_apis::Common_LightName::eType::RIGHT_PUDDLE_LIGHTS,
+ hmi_apis::Common_LightName::eType::AMBIENT_LIGHTS,
+ hmi_apis::Common_LightName::eType::OVERHEAD_LIGHTS,
+ hmi_apis::Common_LightName::eType::READING_LIGHTS,
+ hmi_apis::Common_LightName::eType::TRUNK_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_FRONT_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_REAR_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_LEFT_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_RIGHT_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_ALL_LIGHTS};
+
+const std::vector<std::string> light_name_string_values{
+ {"FRONT_LEFT_HIGH_BEAM"},
+ {"FRONT_RIGHT_HIGH_BEAM"},
+ {"FRONT_LEFT_LOW_BEAM"},
+ {"FRONT_RIGHT_LOW_BEAM"},
+ {"FRONT_LEFT_PARKING_LIGHT"},
+ {"FRONT_RIGHT_PARKING_LIGHT"},
+ {"FRONT_LEFT_FOG_LIGHT"},
+ {"FRONT_RIGHT_FOG_LIGHT"},
+ {"FRONT_LEFT_DAYTIME_RUNNING_LIGHT"},
+ {"FRONT_RIGHT_DAYTIME_RUNNING_LIGHT"},
+ {"FRONT_LEFT_TURN_LIGHT"},
+ {"FRONT_RIGHT_TURN_LIGHT"},
+ {"REAR_LEFT_FOG_LIGHT"},
+ {"REAR_RIGHT_FOG_LIGHT"},
+ {"REAR_LEFT_TAIL_LIGHT"},
+ {"REAR_RIGHT_TAIL_LIGHT"},
+ {"REAR_LEFT_BRAKE_LIGHT"},
+ {"REAR_RIGHT_BRAKE_LIGHT"},
+ {"REAR_LEFT_TURN_LIGHT"},
+ {"REAR_RIGHT_TURN_LIGHT"},
+ {"REAR_REGISTRATION_PLATE_LIGHT"},
+ {"HIGH_BEAMS"},
+ {"LOW_BEAMS"},
+ {"FOG_LIGHTS"},
+ {"RUNNING_LIGHTS"},
+ {"PARKING_LIGHTS"},
+ {"BRAKE_LIGHTS"},
+ {"REAR_REVERSING_LIGHTS"},
+ {"SIDE_MARKER_LIGHTS"},
+ {"LEFT_TURN_LIGHTS"},
+ {"RIGHT_TURN_LIGHTS"},
+ {"HAZARD_LIGHTS"},
+ {"REAR_CARGO_LIGHTS"},
+ {"REAR_TRUCK_BED_LIGHTS"},
+ {"REAR_TRAILER_LIGHTS"},
+ {"LEFT_SPOT_LIGHTS"},
+ {"RIGHT_SPOT_LIGHTS"},
+ {"LEFT_PUDDLE_LIGHTS"},
+ {"RIGHT_PUDDLE_LIGHTS"},
+ {"AMBIENT_LIGHTS"},
+ {"OVERHEAD_LIGHTS"},
+ {"READING_LIGHTS"},
+ {"TRUNK_LIGHTS"},
+ {"EXTERIOR_FRONT_LIGHTS"},
+ {"EXTERIOR_REAR_LIGHTS"},
+ {"EXTERIOR_LEFT_LIGHTS"},
+ {"EXTERIOR_RIGHT_LIGHTS"},
+ {"EXTERIOR_ALL_LIGHTS"}};
+
+void InitLightNameStringToEnumMap(
+ LightNameCStringToEnumMap& out_light_names_map) {
+ for (size_t i = 0; i < light_name_string_values.size(); ++i) {
+ out_light_names_map[light_name_string_values[i]] =
+ light_name_enum_values[i];
}
-};
-
-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];
+bool LightNameStringToEnum(const std::string& light_name_str,
+ hmi_apis::Common_LightName::eType& out_value) {
+ auto it = light_names_map.find(light_name_str);
+ if (it == light_names_map.end()) {
+ return false;
}
- return result;
+ out_value = it->second;
+ return true;
}
-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];
+void InitLanguageStringToEnumMap(LanguageCStringToEnumMap& out_languages_map) {
+ for (size_t i = 0; i < language_string_values.size(); ++i) {
+ out_languages_map[language_string_values[i]] = language_enum_values[i];
}
+}
- CStringToEnumMap::const_iterator it = result.find(str);
- if (it == result.end()) {
+bool LanguageStringToEnum(const std::string& language_str,
+ hmi_apis::Common_Language::eType& out_value) {
+ LanguageCStringToEnumMap::const_iterator it =
+ languages_map.find(language_str);
+ if (it == languages_map.end()) {
return false;
}
- value = it->second;
+ out_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)) {
+ if (LanguageStringToEnum(language, 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));
+hmi_apis::Common_LightName::eType TestCommonLightNameFromString(
+ const std::string& light_name_str) {
+ hmi_apis::Common_LightName::eType value;
+ if (LightNameStringToEnum(light_name_str, value)) {
+ return value;
+ }
+ return hmi_apis::Common_LightName::INVALID_ENUM;
+}
+
+bool IsLightNameExists(const hmi_apis::Common_LightName::eType& light_name) {
+ auto it = std::find(
+ light_name_enum_values.begin(), light_name_enum_values.end(), light_name);
+ return !(it == light_name_enum_values.end());
+}
+
+class HMICapabilitiesTest : public ::testing::Test {
+ protected:
+ HMICapabilitiesTest()
+ : last_state_wrapper_(std::make_shared<resumption::LastStateWrapperImpl>(
+ std::make_shared<resumption::LastStateImpl>(kAppStorageFolder,
+ kAppInfoStorage))) {
+ if (languages_map.empty()) {
+ InitLanguageStringToEnumMap(languages_map);
+ }
+ if (light_names_map.empty()) {
+ InitLightNameStringToEnumMap(light_names_map);
+ }
+ }
+
+ void SetUp() OVERRIDE {
+ ON_CALL(mock_app_mngr_, event_dispatcher())
+ .WillByDefault(ReturnRef(mock_event_dispatcher_));
+ ON_CALL(mock_app_mngr_, get_settings())
+ .WillByDefault(ReturnRef(mock_application_manager_settings_));
+ ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
+ .WillByDefault(ReturnRef(kHmiCapabilitiesDefaultFile));
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(kHmiCapabilitiesCacheFile));
+
+ hmi_capabilities_ = std::make_shared<HMICapabilitiesImpl>(mock_app_mngr_);
+ }
- if (file_system::FileExists("./app_info_data")) {
- EXPECT_TRUE(::file_system::DeleteFile("./app_info_data"));
+ void TearDown() OVERRIDE {
+ DeleteFileIfExists(kHmiCapabilitiesCacheFile);
+ DeleteFileIfExists(kAppInfoDataFile);
+ hmi_capabilities_.reset();
+ }
+
+ void CreateFile(const std::string& file_name) {
+ file_system::CreateFile(file_name);
+ ASSERT_TRUE(file_system::FileExists(file_name));
+ }
+
+ void DeleteFileIfExists(const std::string& file_path) {
+ if (file_system::FileExists(file_path)) {
+ EXPECT_TRUE(::file_system::DeleteFile(file_path));
+ }
}
- EXPECT_CALL(app_mngr_, IsSOStructValid(_, _)).WillOnce(Return(true));
- EXPECT_TRUE(hmi_capabilities_test->LoadCapabilitiesFromFile());
+ void SetUpLanguageAndLightCapabilitiesExpectation() {
+ ON_CALL(mock_app_mngr_, IsSOStructValid(_, _)).WillByDefault(Return(true));
+
+ EXPECT_CALL(*(MockMessageHelper::message_helper_mock()),
+ CommonLanguageFromString(_))
+ .WillRepeatedly(Invoke(TestCommonLanguageFromString));
+ EXPECT_CALL(*(MockMessageHelper::message_helper_mock()),
+ CommonLightNameFromString(_))
+ .WillRepeatedly(Invoke(TestCommonLightNameFromString));
+ }
+
+ std::shared_ptr<HMICapabilitiesImpl> hmi_capabilities_;
+ NiceMock<MockApplicationManager> mock_app_mngr_;
+ NiceMock<event_engine_test::MockEventDispatcher> mock_event_dispatcher_;
+ NiceMock<MockApplicationManagerSettings> mock_application_manager_settings_;
+ resumption::LastStateWrapperPtr last_state_wrapper_;
+ smart_objects::CSmartSchema schema_;
+};
+
+TEST_F(HMICapabilitiesTest,
+ Init_CheckActiveLanguages_SuccesSetupDefaultLanguages) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+ hmi_capabilities_->Init(last_state_wrapper_);
- // 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());
+ hmi_capabilities_->active_ui_language());
+ EXPECT_EQ(hmi_apis::Common_Language::EN_US,
+ hmi_capabilities_->active_vr_language());
+ EXPECT_EQ(hmi_apis::Common_Language::EN_US,
+ hmi_capabilities_->active_tts_language());
+}
- // Check UI languages
- const smart_objects::SmartObject ui_supported_languages =
- *(hmi_capabilities_test->ui_supported_languages());
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckUILanguages_SuccessLoadAndConvert) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto ui_supported_languages_so =
+ *(hmi_capabilities_->ui_supported_languages());
EXPECT_EQ(hmi_apis::Common_Language::EN_US,
static_cast<hmi_apis::Common_Language::eType>(
- ui_supported_languages[0].asInt()));
+ ui_supported_languages_so[0].asInt()));
EXPECT_EQ(hmi_apis::Common_Language::ES_MX,
static_cast<hmi_apis::Common_Language::eType>(
- ui_supported_languages[1].asInt()));
+ ui_supported_languages_so[1].asInt()));
EXPECT_EQ(hmi_apis::Common_Language::FR_CA,
static_cast<hmi_apis::Common_Language::eType>(
- ui_supported_languages[2].asInt()));
+ ui_supported_languages_so[2].asInt()));
+}
- // Check VR languages
- const smart_objects::SmartObject vr_supported_languages =
- *(hmi_capabilities_test->vr_supported_languages());
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckVRLanguages_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto vr_supported_languages_so =
+ *(hmi_capabilities_->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()));
+ vr_supported_languages_so[0].asInt()));
EXPECT_EQ(hmi_apis::Common_Language::ES_MX,
static_cast<hmi_apis::Common_Language::eType>(
- vr_supported_languages[2].asInt()));
+ vr_supported_languages_so[1].asInt()));
+ EXPECT_EQ(hmi_apis::Common_Language::FR_CA,
+ static_cast<hmi_apis::Common_Language::eType>(
+ vr_supported_languages_so[2].asInt()));
+}
- // Check TTS languages
- const smart_objects::SmartObject tts_supported_languages =
- *(hmi_capabilities_test->tts_supported_languages());
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckTTSSupportedLanguages_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto tts_supported_languages_so =
+ *(hmi_capabilities_->tts_supported_languages());
- EXPECT_EQ(hmi_apis::Common_Language::DA_DK,
+ EXPECT_EQ(hmi_apis::Common_Language::EN_US,
static_cast<hmi_apis::Common_Language::eType>(
- tts_supported_languages[0].asInt()));
- EXPECT_EQ(hmi_apis::Common_Language::CS_CZ,
+ tts_supported_languages_so[0].asInt()));
+ EXPECT_EQ(hmi_apis::Common_Language::ES_MX,
static_cast<hmi_apis::Common_Language::eType>(
- tts_supported_languages[1].asInt()));
- EXPECT_EQ(hmi_apis::Common_Language::KO_KR,
+ tts_supported_languages_so[1].asInt()));
+ EXPECT_EQ(hmi_apis::Common_Language::FR_CA,
static_cast<hmi_apis::Common_Language::eType>(
- tts_supported_languages[2].asInt()));
+ tts_supported_languages_so[2].asInt()));
+}
+
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckSpeechCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto tts_capabilities_so = *(hmi_capabilities_->speech_capabilities());
- // Check TTS capabilities
- const smart_objects::SmartObject tts_capabilities =
- *(hmi_capabilities_test->speech_capabilities());
EXPECT_EQ(hmi_apis::Common_SpeechCapabilities::SC_TEXT,
static_cast<hmi_apis::Common_SpeechCapabilities::eType>(
- tts_capabilities[0].asInt()));
+ tts_capabilities_so[0].asInt()));
+}
- // Check button capabilities
- const smart_objects::SmartObject buttons_capabilities_so =
- *(hmi_capabilities_test->button_capabilities());
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckUIButtonCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto buttons_capabilities_so =
+ *(hmi_capabilities_->button_capabilities());
// Count of buttons in json file
- const uint32_t btn_length = buttons_capabilities_so.length();
- EXPECT_EQ(16u, 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 size_t btn_length = buttons_capabilities_so.length();
+ EXPECT_EQ(16ull, btn_length);
+ for (size_t index = 0; index < btn_length; ++index) {
+ EXPECT_TRUE(buttons_capabilities_so
+ [index][rc_rpc_plugin::enums_value::kShortPressAvailable]
+ .asBool());
+ EXPECT_TRUE(
+ buttons_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kLongPressAvailable]
+ .asBool());
+ EXPECT_TRUE(
+ buttons_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kUpDownAvailable]
+ .asBool());
}
- const smart_objects::SmartObject display_capabilities_so =
- *(hmi_capabilities_test->display_capabilities());
+}
+
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckDisplayType_SuccessLoadAndConvert) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto display_capabilities_so =
+ *(hmi_capabilities_->display_capabilities());
- // Check display type
- EXPECT_EQ(hmi_apis::Common_DisplayType::GEN2_8_DMA,
+ EXPECT_EQ(hmi_apis::Common_DisplayType::SDL_GENERIC,
static_cast<hmi_apis::Common_DisplayType::eType>(
display_capabilities_so[hmi_response::display_type].asInt()));
@@ -281,51 +458,79 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
display_capabilities_so[hmi_response::display_name].asString());
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 =
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckImageFields_SuccessLoadAndConvert) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto display_capabilities_so =
+ *(hmi_capabilities_->display_capabilities());
+
+ ASSERT_TRUE((display_capabilities_so).keyExists(hmi_response::image_fields));
+ const size_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])
+ EXPECT_NE(0ull, img_len);
+ for (size_t index = 0; index < img_len; ++index) {
+ EXPECT_TRUE((display_capabilities_so[hmi_response::image_fields][index])
.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) {
+
+ const hmi_apis::Common_ImageFieldName::eType field_name =
+ static_cast<hmi_apis::Common_ImageFieldName::eType>(
+ display_capabilities_so[hmi_response::image_fields][index]
+ [strings::name]
+ .asInt());
+
+ if ((field_name == hmi_apis::Common_ImageFieldName::locationImage) ||
+ (field_name == hmi_apis::Common_ImageFieldName::alertIcon)) {
+ EXPECT_TRUE((display_capabilities_so[hmi_response::image_fields][index])
+ .keyExists(strings::image_type_supported));
EXPECT_EQ(hmi_apis::Common_FileType::GRAPHIC_PNG,
static_cast<hmi_apis::Common_FileType::eType>(
- display_capabilities_so[hmi_response::image_fields][i]
+ display_capabilities_so[hmi_response::image_fields][index]
[strings::image_type_supported][0]
.asInt()));
}
}
+}
+
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckTextFields_SuccessLoadAndConvert) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto display_capabilities_so =
+ *(hmi_capabilities_->display_capabilities());
+
+ const size_t text_len =
+ display_capabilities_so[hmi_response::text_fields].length();
+ EXPECT_NE(0ull, text_len);
+ for (size_t index = 0; index < text_len; ++index) {
+ EXPECT_TRUE((display_capabilities_so[hmi_response::text_fields][index])
+ .keyExists(strings::name));
+ EXPECT_TRUE((display_capabilities_so[hmi_response::text_fields][index])
+ .keyExists(strings::character_set));
+ }
+}
+
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckMediaClockFormats_SuccessLoadAndConvert) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto display_capabilities_so =
+ *(hmi_capabilities_->display_capabilities());
- // Check media clock formats
EXPECT_TRUE(
(display_capabilities_so).keyExists(hmi_response::media_clock_formats));
- const uint32_t media_length =
+ const size_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_NE(0ull, media_length);
+ for (size_t i = 0; i < media_length; ++i) {
EXPECT_EQ(
i,
display_capabilities_so[hmi_response::media_clock_formats][i].asUInt());
}
- EXPECT_TRUE(
+ ASSERT_TRUE(
(display_capabilities_so).keyExists(hmi_response::image_capabilities));
EXPECT_EQ(hmi_apis::Common_ImageType::DYNAMIC,
static_cast<hmi_apis::Common_ImageType::eType>(
@@ -336,9 +541,17 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
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());
+ // TemplatesAvailable parameter could be as empty array
+ ASSERT_TRUE(
+ display_capabilities_so.keyExists(hmi_response::templates_available));
+}
+
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckAudioPassThru_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto audio_pass_thru_capabilities_so =
+ *(hmi_capabilities_->audio_pass_thru_capabilities());
+
EXPECT_EQ(smart_objects::SmartType_Array,
audio_pass_thru_capabilities_so.getType());
EXPECT_EQ(1u, audio_pass_thru_capabilities_so.length());
@@ -351,57 +564,118 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
EXPECT_EQ(hmi_apis::Common_AudioType::PCM,
static_cast<hmi_apis::Common_AudioType::eType>(
audio_pass_thru_capabilities_so[0]["audioType"].asInt()));
+}
+
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckHmiZoneCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto hmi_zone_capabilities_so =
+ *(hmi_capabilities_->hmi_zone_capabilities());
- // 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());
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckSoftButtonCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto& soft_button_capabilities_so =
+ *(hmi_capabilities_->soft_button_capabilities());
+
+ const size_t soft_butons_length = soft_button_capabilities_so.length();
+
+ ASSERT_TRUE(soft_butons_length > 0);
+
+ for (size_t index = 0; index < soft_butons_length; ++index) {
+ EXPECT_TRUE(soft_button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kShortPressAvailable));
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Boolean,
+ soft_button_capabilities_so
+ [index][rc_rpc_plugin::enums_value::kShortPressAvailable]
+ .getType());
+
+ EXPECT_TRUE(soft_button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kLongPressAvailable));
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Boolean,
+ soft_button_capabilities_so
+ [index][rc_rpc_plugin::enums_value::kLongPressAvailable]
+ .getType());
+
+ EXPECT_TRUE(soft_button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kUpDownAvailable));
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Boolean,
+ soft_button_capabilities_so
+ [index][rc_rpc_plugin::enums_value::kUpDownAvailable]
+ .getType());
+
+ EXPECT_TRUE(soft_button_capabilities_so[index].keyExists(
+ hmi_response::image_supported));
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Boolean,
+ soft_button_capabilities_so[index][hmi_response::image_supported]
+ .getType());
+ }
+}
- 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());
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckPresetBankCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto preset_bank_so = *(hmi_capabilities_->preset_bank_capabilities());
- const smart_objects::SmartObject preset_bank_so =
- *(hmi_capabilities_test->preset_bank_capabilities());
- EXPECT_TRUE(preset_bank_so["onScreenPresetsAvailable"].asBool());
+ EXPECT_TRUE(
+ preset_bank_so.keyExists(hmi_response::on_screen_presets_available));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Boolean,
+ preset_bank_so[hmi_response::on_screen_presets_available].getType());
+}
- // Check vehicle type
- const smart_objects::SmartObject vehicle_type_so =
- *(hmi_capabilities_test->vehicle_type());
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckVehicleType_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto vehicle_type_so = *(hmi_capabilities_->vehicle_type());
- 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("SDL", vehicle_type_so["make"].asString());
+ EXPECT_EQ("Generic", vehicle_type_so["model"].asString());
+ EXPECT_EQ("2019", vehicle_type_so["modelYear"].asString());
EXPECT_EQ("SE", vehicle_type_so["trim"].asString());
+}
- // Check system capabilities
- smart_objects::SmartObject navigation_capability_so =
- *(hmi_capabilities_test->navigation_capability());
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckNavigationCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto navigation_capability_so =
+ *(hmi_capabilities_->navigation_capability());
EXPECT_TRUE(navigation_capability_so.keyExists("sendLocationEnabled"));
EXPECT_TRUE(navigation_capability_so.keyExists("getWayPointsEnabled"));
EXPECT_TRUE(navigation_capability_so["sendLocationEnabled"].asBool());
EXPECT_TRUE(navigation_capability_so["getWayPointsEnabled"].asBool());
- // since we have navigation capabilities, the feature should be supported
- EXPECT_TRUE(hmi_capabilities_test->navigation_supported());
+ // Since we have navigation capabilities, the feature should be supported
+ EXPECT_TRUE(hmi_capabilities_->navigation_supported());
+}
- const smart_objects::SmartObject phone_capability_so =
- *(hmi_capabilities_test->phone_capability());
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckPhoneCapability_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto phone_capability_so = *(hmi_capabilities_->phone_capability());
EXPECT_TRUE(phone_capability_so.keyExists("dialNumberEnabled"));
EXPECT_TRUE(phone_capability_so["dialNumberEnabled"].asBool());
- EXPECT_TRUE(hmi_capabilities_test->phone_call_supported());
+ EXPECT_TRUE(hmi_capabilities_->phone_call_supported());
+}
- const smart_objects::SmartObject vs_capability_so =
- *(hmi_capabilities_test->video_streaming_capability());
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckVideoStreamingCapability_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto vs_capability_so =
+ *(hmi_capabilities_->video_streaming_capability());
EXPECT_TRUE(vs_capability_so.keyExists(strings::preferred_resolution));
EXPECT_TRUE(vs_capability_so[strings::preferred_resolution].keyExists(
@@ -419,156 +693,312 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
EXPECT_TRUE(vs_capability_so.keyExists(strings::max_bitrate));
EXPECT_EQ(10000, vs_capability_so[strings::max_bitrate].asInt());
EXPECT_TRUE(vs_capability_so.keyExists(strings::supported_formats));
- const uint32_t supported_formats_len =
+ const size_t supported_formats_len =
vs_capability_so[strings::supported_formats].length();
- EXPECT_EQ(2u, supported_formats_len);
+ EXPECT_EQ(1ull, supported_formats_len);
+
EXPECT_TRUE(vs_capability_so[strings::supported_formats][0].keyExists(
strings::protocol));
EXPECT_TRUE(vs_capability_so[strings::supported_formats][0].keyExists(
strings::codec));
- EXPECT_EQ(0,
+ EXPECT_EQ(hmi_apis::Common_VideoStreamingProtocol::RAW,
vs_capability_so[strings::supported_formats][0][strings::protocol]
.asInt());
EXPECT_EQ(
- 0,
+ hmi_apis::Common_VideoStreamingCodec::H264,
vs_capability_so[strings::supported_formats][0][strings::codec].asInt());
- EXPECT_TRUE(vs_capability_so[strings::supported_formats][1].keyExists(
- strings::protocol));
- EXPECT_TRUE(vs_capability_so[strings::supported_formats][1].keyExists(
- strings::codec));
- EXPECT_EQ(1,
- vs_capability_so[strings::supported_formats][1][strings::protocol]
- .asInt());
- EXPECT_EQ(
- 2,
- vs_capability_so[strings::supported_formats][1][strings::codec].asInt());
EXPECT_TRUE(
vs_capability_so.keyExists(strings::haptic_spatial_data_supported));
- EXPECT_TRUE(
+ EXPECT_FALSE(
vs_capability_so[strings::haptic_spatial_data_supported].asBool());
- EXPECT_TRUE(hmi_capabilities_test->video_streaming_supported());
-
- // Check remote control capabilites
- const smart_objects::SmartObject rc_capability_so =
- *(hmi_capabilities_test->rc_capability());
+ EXPECT_TRUE(hmi_capabilities_->video_streaming_supported());
+}
- EXPECT_TRUE(rc_capability_so.keyExists("climateControlCapabilities"));
- EXPECT_TRUE(rc_capability_so.keyExists("radioControlCapabilities"));
- EXPECT_TRUE(rc_capability_so.keyExists("buttonCapabilities"));
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckRemoteControlCapabilites_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto rc_capability_so = *(hmi_capabilities_->rc_capability());
+
+ ASSERT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::kclimateControlCapabilities));
+ const auto& climate_control_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kclimateControlCapabilities][0];
+
+ EXPECT_TRUE(climate_control_capabilities_so
+ [rc_rpc_plugin::strings::kFanSpeedAvailable]
+ .asBool());
+ EXPECT_TRUE(climate_control_capabilities_so
+ [rc_rpc_plugin::strings::kDesiredTemperatureAvailable]
+ .asBool());
+ EXPECT_TRUE(climate_control_capabilities_so
+ [rc_rpc_plugin::strings::kAcEnableAvailable]
+ .asBool());
+ EXPECT_TRUE(climate_control_capabilities_so
+ [rc_rpc_plugin::strings::kAcMaxEnableAvailable]
+ .asBool());
+}
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckRadioControlCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto rc_capability_so = *(hmi_capabilities_->rc_capability());
+
+ ASSERT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::kradioControlCapabilities));
+ const auto& radio_control_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kradioControlCapabilities][0];
+
+ EXPECT_EQ("radio", radio_control_capabilities_so["moduleName"].asString());
+
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::message_params::kAvailableHdChannelsAvailable]
+ .asBool());
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kSignalChangeThresholdAvailable]
+ .asBool());
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kSignalStrengthAvailable]
+ .asBool());
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kHdRadioEnableAvailable]
+ .asBool());
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kSiriusxmRadioAvailable]
+ .asBool());
EXPECT_TRUE(
- rc_capability_so["climateControlCapabilities"][0]["fanSpeedAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kSisDataAvailable]
.asBool());
- EXPECT_TRUE(rc_capability_so["climateControlCapabilities"][0]
- ["desiredTemperatureAvailable"]
- .asBool());
EXPECT_TRUE(
- rc_capability_so["climateControlCapabilities"][0]["acEnableAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kStateAvailable]
.asBool());
EXPECT_TRUE(
- rc_capability_so["climateControlCapabilities"][0]["acMaxEnableAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kRadioBandAvailable]
.asBool());
-
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kRadioFrequencyAvailable]
+ .asBool());
EXPECT_TRUE(
- rc_capability_so["radioControlCapabilities"][0]["radioBandAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kHdChannelAvailable]
.asBool());
EXPECT_TRUE(
- rc_capability_so["radioControlCapabilities"][0]["radioFrequencyAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kRdsDataAvailable]
.asBool());
+
+ ASSERT_TRUE(radio_control_capabilities_so.keyExists(
+ rc_rpc_plugin::message_params::kModuleInfo));
+ ASSERT_TRUE(
+ radio_control_capabilities_so[rc_rpc_plugin::message_params::kModuleInfo]
+ .keyExists(rc_rpc_plugin::message_params::kModuleId));
+}
+
+TEST_F(
+ HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckRCButtonCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto rc_capability_so = *(hmi_capabilities_->rc_capability());
+
+ ASSERT_TRUE(
+ rc_capability_so.keyExists(rc_rpc_plugin::strings::kbuttonCapabilities));
+ const auto& button_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kbuttonCapabilities];
+
+ const size_t button_capabilities_length = button_capabilities_so.length();
+
+ for (size_t index = 0; index < button_capabilities_length; ++index) {
+ ASSERT_TRUE(button_capabilities_so[index].keyExists("name"));
+
+ ASSERT_TRUE(button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kLongPressAvailable));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Boolean,
+ button_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kLongPressAvailable]
+ .getType());
+ ASSERT_TRUE(button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kShortPressAvailable));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Boolean,
+ button_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kShortPressAvailable]
+ .getType());
+
+ ASSERT_TRUE(button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kUpDownAvailable));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Boolean,
+ button_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kUpDownAvailable]
+ .getType());
+ }
+}
+
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckAudioCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto rc_capability_so = *(hmi_capabilities_->rc_capability());
+
+ EXPECT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::kaudioControlCapabilities));
+
+ const auto& audio_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kaudioControlCapabilities][0];
+
+ EXPECT_TRUE(audio_capabilities_so.keyExists(
+ rc_rpc_plugin::message_params::kModuleInfo));
+
+ const auto& audio_cap_module_info =
+ audio_capabilities_so[rc_rpc_plugin::message_params::kModuleInfo];
+ EXPECT_TRUE(audio_cap_module_info.keyExists(
+ rc_rpc_plugin::message_params::kModuleId));
+ EXPECT_TRUE(audio_cap_module_info.keyExists(
+ rc_rpc_plugin::strings::kAllowMultipleAccess));
EXPECT_TRUE(
- rc_capability_so["radioControlCapabilities"][0]["hdChannelAvailable"]
+ audio_cap_module_info[rc_rpc_plugin::strings::kAllowMultipleAccess]
.asBool());
+
+ EXPECT_TRUE(
+ audio_capabilities_so[rc_rpc_plugin::strings::kSourceAvailable].asBool());
+ EXPECT_TRUE(
+ audio_capabilities_so[rc_rpc_plugin::strings::kVolumeAvailable].asBool());
+ EXPECT_TRUE(audio_capabilities_so[rc_rpc_plugin::strings::kEqualizerAvailable]
+ .asBool());
EXPECT_TRUE(
- rc_capability_so["radioControlCapabilities"][0]["rdsDataAvailable"]
+ audio_capabilities_so[rc_rpc_plugin::strings::kKeepContextAvailable]
.asBool());
+ EXPECT_EQ(
+ kEqualizerMaxChanelId,
+ audio_capabilities_so[rc_rpc_plugin::strings::kEqualizerMaxChannelId]
+ .asInt());
+}
- EXPECT_TRUE(rc_capability_so["buttonCapabilities"][0]["shortPressAvailable"]
- .asBool());
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFile_CheckSeatCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto rc_capability_so = *(hmi_capabilities_->rc_capability());
+
+ EXPECT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::kseatControlCapabilities));
+ const auto& seat_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kseatControlCapabilities][0];
+
+ EXPECT_TRUE(seat_capabilities_so.keyExists(
+ rc_rpc_plugin::message_params::kModuleInfo));
+ const auto& seat_cap_module_info =
+ seat_capabilities_so[rc_rpc_plugin::message_params::kModuleInfo];
EXPECT_TRUE(
- rc_capability_so["buttonCapabilities"][0]["longPressAvailable"].asBool());
+ seat_cap_module_info.keyExists(rc_rpc_plugin::message_params::kModuleId));
+ EXPECT_TRUE(seat_cap_module_info.keyExists(
+ rc_rpc_plugin::strings::kAllowMultipleAccess));
EXPECT_FALSE(
- rc_capability_so["buttonCapabilities"][0]["upDownAvailable"].asBool());
+ seat_cap_module_info[rc_rpc_plugin::strings::kAllowMultipleAccess]
+ .asBool());
}
TEST_F(HMICapabilitiesTest,
- LoadCapabilitiesFromFileAndVerifyUnsupportedSystemCapabilities) {
- MockApplicationManager mock_app_mngr;
- event_engine_test::MockEventDispatcher mock_dispatcher;
- MockApplicationManagerSettings mock_application_manager_settings;
+ LoadCapabilitiesFromFile_CheckLightCapabilities_SuccessLoadAndConvert) {
+ hmi_capabilities_->Init(last_state_wrapper_);
+ const auto rc_capability_so = *(hmi_capabilities_->rc_capability());
+
+ EXPECT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::klightControlCapabilities));
+ const auto& light_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::klightControlCapabilities];
+
+ EXPECT_TRUE(light_capabilities_so.keyExists(
+ rc_rpc_plugin::message_params::kModuleInfo));
+ const auto& light_cap_module_info =
+ light_capabilities_so[rc_rpc_plugin::message_params::kModuleInfo];
+ EXPECT_TRUE(light_cap_module_info.keyExists(
+ rc_rpc_plugin::message_params::kModuleId));
+ EXPECT_FALSE(
+ light_cap_module_info[rc_rpc_plugin::strings::kAllowMultipleAccess]
+ .asBool());
- const std::string hmi_capabilities_file = "hmi_capabilities_sc1.json";
+ EXPECT_TRUE(light_capabilities_so.keyExists(
+ rc_rpc_plugin::strings::kSupportedLights));
+
+ const auto& supported_lights =
+ light_capabilities_so[rc_rpc_plugin::strings::kSupportedLights];
+
+ const size_t supported_lights_length = supported_lights.length();
+ for (size_t index = 0; index < supported_lights_length; ++index) {
+ EXPECT_TRUE(
+ IsLightNameExists(static_cast<hmi_apis::Common_LightName::eType>(
+ supported_lights[index]["name"].asInt())));
+ EXPECT_TRUE(supported_lights[index].keyExists(
+ rc_rpc_plugin::strings::kStatusAvailable));
+ EXPECT_TRUE(supported_lights[index].keyExists(
+ rc_rpc_plugin::strings::kDensityAvailable));
+ EXPECT_TRUE(supported_lights[index].keyExists(
+ rc_rpc_plugin::strings::kRGBColorSpaceAvailable));
+ }
+
+ EXPECT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::klightControlCapabilities));
+ const auto& light_ctrl_cap_so =
+ rc_capability_so[rc_rpc_plugin::strings::klightControlCapabilities];
+
+ EXPECT_TRUE(light_ctrl_cap_so.keyExists("moduleName"));
+ EXPECT_TRUE(
+ light_ctrl_cap_so.keyExists(rc_rpc_plugin::strings::kSupportedLights));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Array,
+ light_ctrl_cap_so[rc_rpc_plugin::strings::kSupportedLights].getType());
+
+ const auto& supported_light_so =
+ light_ctrl_cap_so[rc_rpc_plugin::strings::kSupportedLights];
- EXPECT_CALL(mock_app_mngr, event_dispatcher())
- .WillOnce(ReturnRef(mock_dispatcher));
- EXPECT_CALL(mock_app_mngr, get_settings())
- .WillRepeatedly(ReturnRef(mock_application_manager_settings));
- EXPECT_CALL(mock_application_manager_settings, hmi_capabilities_file_name())
- .WillOnce(ReturnRef(hmi_capabilities_file));
- EXPECT_CALL(mock_dispatcher, add_observer(_, _, _)).Times(1);
- EXPECT_CALL(mock_dispatcher, remove_observer(_)).Times(1);
- EXPECT_CALL(mock_application_manager_settings, launch_hmi())
- .WillOnce(Return(false));
-
- if (file_system::FileExists("./app_info_data")) {
- EXPECT_TRUE(::file_system::DeleteFile("./app_info_data"));
+ const size_t sup_lights_length = supported_light_so.length();
+
+ for (size_t index = 0; index < sup_lights_length; ++index) {
+ EXPECT_TRUE(
+ supported_light_so[index].keyExists(rc_rpc_plugin::strings::kName));
}
+}
+
+TEST_F(HMICapabilitiesTest,
+ LoadCapabilitiesFromFileAndVerifyUnsupportedSystemCapabilities) {
+ const std::string hmi_capabilities_file = "hmi_capabilities_sc1.json";
+ ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_file));
- std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities =
- std::make_shared<HMICapabilitiesForTesting>(mock_app_mngr);
- hmi_capabilities->Init(last_state_wrapper_);
+ hmi_capabilities_->Init(last_state_wrapper_);
// Check system capabilities; only phone capability is available
- EXPECT_FALSE(hmi_capabilities->navigation_supported());
- EXPECT_TRUE(hmi_capabilities->phone_call_supported());
- EXPECT_FALSE(hmi_capabilities->video_streaming_supported());
- EXPECT_FALSE(hmi_capabilities->rc_supported());
+ EXPECT_FALSE(hmi_capabilities_->navigation_supported());
+ EXPECT_TRUE(hmi_capabilities_->phone_call_supported());
+ EXPECT_FALSE(hmi_capabilities_->video_streaming_supported());
+ EXPECT_FALSE(hmi_capabilities_->rc_supported());
// verify phone capability
const smart_objects::SmartObject phone_capability_so =
- *(hmi_capabilities->phone_capability());
+ *(hmi_capabilities_->phone_capability());
EXPECT_TRUE(phone_capability_so.keyExists("dialNumberEnabled"));
EXPECT_TRUE(phone_capability_so["dialNumberEnabled"].asBool());
}
TEST_F(HMICapabilitiesTest,
LoadCapabilitiesFromFileAndVerifyEmptySystemCapabilities) {
- MockApplicationManager mock_app_mngr;
- event_engine_test::MockEventDispatcher mock_dispatcher;
- MockApplicationManagerSettings mock_application_manager_settings;
-
const std::string hmi_capabilities_file = "hmi_capabilities_sc2.json";
+ ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_file));
- EXPECT_CALL(mock_app_mngr, event_dispatcher())
- .WillOnce(ReturnRef(mock_dispatcher));
- EXPECT_CALL(mock_app_mngr, get_settings())
- .WillRepeatedly(ReturnRef(mock_application_manager_settings));
- EXPECT_CALL(mock_application_manager_settings, hmi_capabilities_file_name())
- .WillOnce(ReturnRef(hmi_capabilities_file));
- EXPECT_CALL(mock_dispatcher, add_observer(_, _, _)).Times(1);
- EXPECT_CALL(mock_dispatcher, remove_observer(_)).Times(1);
- EXPECT_CALL(mock_application_manager_settings, launch_hmi())
- .WillOnce(Return(false));
-
- if (file_system::FileExists("./app_info_data")) {
- EXPECT_TRUE(::file_system::DeleteFile("./app_info_data"));
- }
-
- std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities =
- std::make_shared<HMICapabilitiesForTesting>(mock_app_mngr);
- hmi_capabilities->Init(last_state_wrapper_);
+ hmi_capabilities_->Init(last_state_wrapper_);
// Check system capabilities; only navigation capability is valid, the other
// two are empty
- EXPECT_TRUE(hmi_capabilities->navigation_supported());
- EXPECT_FALSE(hmi_capabilities->phone_call_supported());
- EXPECT_FALSE(hmi_capabilities->video_streaming_supported());
- EXPECT_FALSE(hmi_capabilities->rc_supported());
+ EXPECT_TRUE(hmi_capabilities_->navigation_supported());
+ EXPECT_FALSE(hmi_capabilities_->phone_call_supported());
+ EXPECT_FALSE(hmi_capabilities_->video_streaming_supported());
+ EXPECT_FALSE(hmi_capabilities_->rc_supported());
// verify navigation capabilities
smart_objects::SmartObject navigation_capability_so =
- *(hmi_capabilities->navigation_capability());
+ *(hmi_capabilities_->navigation_capability());
EXPECT_TRUE(navigation_capability_so.keyExists("sendLocationEnabled"));
EXPECT_TRUE(navigation_capability_so.keyExists("getWayPointsEnabled"));
EXPECT_TRUE(navigation_capability_so["sendLocationEnabled"].asBool());
@@ -577,41 +1007,23 @@ TEST_F(HMICapabilitiesTest,
TEST_F(HMICapabilitiesTest,
LoadCapabilitiesFromFileAndVerifyOldAudioPassThruCapabilities) {
- MockApplicationManager mock_app_mngr;
- event_engine_test::MockEventDispatcher mock_dispatcher;
- MockApplicationManagerSettings mock_application_manager_settings;
-
const std::string hmi_capabilities_file = "hmi_capabilities_old_apt.json";
+ ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_file));
- EXPECT_CALL(mock_app_mngr, event_dispatcher())
- .WillOnce(ReturnRef(mock_dispatcher));
- EXPECT_CALL(mock_app_mngr, get_settings())
- .WillRepeatedly(ReturnRef(mock_application_manager_settings));
- EXPECT_CALL(mock_application_manager_settings, hmi_capabilities_file_name())
- .WillOnce(ReturnRef(hmi_capabilities_file));
- EXPECT_CALL(mock_dispatcher, add_observer(_, _, _)).Times(1);
- EXPECT_CALL(mock_dispatcher, remove_observer(_)).Times(1);
- EXPECT_CALL(mock_application_manager_settings, launch_hmi())
- .WillOnce(Return(false));
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"));
- }
-
- std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities =
- std::make_shared<HMICapabilitiesForTesting>(mock_app_mngr);
- hmi_capabilities->Init(last_state_wrapper_);
+ hmi_capabilities_->Init(last_state_wrapper_);
// with old audio pass thru format, the object is an array containing a single
// object
smart_objects::SmartObjectSPtr audio_pass_thru_capabilities_so =
- hmi_capabilities->audio_pass_thru_capabilities();
+ hmi_capabilities_->audio_pass_thru_capabilities();
EXPECT_EQ(smart_objects::SmartType_Array,
audio_pass_thru_capabilities_so->getType());
- EXPECT_EQ(1u, audio_pass_thru_capabilities_so->length());
+ EXPECT_EQ(1ull, audio_pass_thru_capabilities_so->length());
smart_objects::SmartObject& first_element =
(*audio_pass_thru_capabilities_so)[0];
EXPECT_TRUE(first_element.keyExists("samplingRate"));
@@ -629,45 +1041,608 @@ TEST_F(HMICapabilitiesTest,
}
TEST_F(HMICapabilitiesTest, VerifyImageType) {
+ ON_CALL(mock_app_mngr_, IsSOStructValid(_, _)).WillByDefault(Return(true));
+
const int32_t image_type = 1;
smart_objects::SmartObject sm_obj;
- EXPECT_CALL(app_mngr_, IsSOStructValid(_, _)).WillOnce(Return(true));
sm_obj[hmi_response::image_capabilities][0] = image_type;
- hmi_capabilities_test->set_display_capabilities(sm_obj);
+ hmi_capabilities_->set_display_capabilities(sm_obj);
- EXPECT_TRUE(hmi_capabilities_test->VerifyImageType(image_type));
+ EXPECT_TRUE(hmi_capabilities_->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(mock_rpc_service_, ManageHMICommand(_, _))
- .WillRepeatedly(Return(true));
+ EXPECT_FALSE(hmi_capabilities_->VerifyImageType(new_image_type));
}
TEST_F(HMICapabilitiesTest, SetVRCooperating) {
- hmi_capabilities_test->set_is_vr_cooperating(true);
- EXPECT_EQ(true, hmi_capabilities_test->is_vr_cooperating());
+ hmi_capabilities_->set_is_vr_cooperating(true);
+ EXPECT_TRUE(hmi_capabilities_->is_vr_cooperating());
}
TEST_F(HMICapabilitiesTest, SetTTSCooperating) {
- hmi_capabilities_test->set_is_tts_cooperating(true);
- EXPECT_EQ(true, hmi_capabilities_test->is_tts_cooperating());
+ hmi_capabilities_->set_is_tts_cooperating(true);
+ EXPECT_TRUE(hmi_capabilities_->is_tts_cooperating());
}
TEST_F(HMICapabilitiesTest, SetUICooperating) {
- hmi_capabilities_test->set_is_ui_cooperating(true);
- EXPECT_EQ(true, hmi_capabilities_test->is_ui_cooperating());
+ hmi_capabilities_->set_is_ui_cooperating(true);
+ EXPECT_TRUE(hmi_capabilities_->is_ui_cooperating());
}
TEST_F(HMICapabilitiesTest, SetIviCooperating) {
- hmi_capabilities_test->set_is_ivi_cooperating(true);
- EXPECT_EQ(true, hmi_capabilities_test->is_ivi_cooperating());
+ hmi_capabilities_->set_is_ivi_cooperating(true);
+ EXPECT_TRUE(hmi_capabilities_->is_ivi_cooperating());
+}
+
+TEST_F(
+ HMICapabilitiesTest,
+ UpdateCapabilitiesDependingOn_ccpuVersion_FromCacheForOld_RequestForNew) {
+ const std::string ccpu_version = "4.1.3.B_EB355B";
+ const std::string ccpu_version_new = "5.1.3.B_EB355B";
+ const std::string hmi_capabilities_invalid_file =
+ "hmi_capabilities_invalid_file.json";
+
+ ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_invalid_file));
+
+ EXPECT_CALL(mock_app_mngr_, SetHMICooperating(true));
+ EXPECT_CALL(mock_app_mngr_, RequestForInterfacesAvailability()).Times(2);
+
+ hmi_capabilities_->set_ccpu_version(ccpu_version);
+ hmi_capabilities_->OnSoftwareVersionReceived(ccpu_version);
+
+ EXPECT_EQ(ccpu_version, hmi_capabilities_->ccpu_version());
+
+ hmi_capabilities_->OnSoftwareVersionReceived(ccpu_version_new);
+ EXPECT_EQ(ccpu_version_new, hmi_capabilities_->ccpu_version());
+}
+
+TEST_F(HMICapabilitiesTest,
+ UpdateCapabilitiesForNew_ccpuVersion_DeleteCacheFile) {
+ MockApplicationManagerSettings mock_application_manager_settings;
+ const std::string ccpu_version = "4.1.3.B_EB355B";
+ const std::string ccpu_version_new = "5.1.3.B_EB355B";
+ const std::string hmi_capabilities_invalid_file =
+ "hmi_capabilities_invalid_file.json";
+
+ CreateFile(kHmiCapabilitiesCacheFile);
+
+ ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_invalid_file));
+
+ hmi_capabilities_->set_ccpu_version(ccpu_version);
+ hmi_capabilities_->OnSoftwareVersionReceived(ccpu_version_new);
+ EXPECT_EQ(ccpu_version_new, hmi_capabilities_->ccpu_version());
+
+ EXPECT_FALSE(file_system::FileExists(kHmiCapabilitiesCacheFile));
+}
+
+TEST_F(
+ HMICapabilitiesTest,
+ OnSoftwareVersionReceived_CcpuMatchNoPendingRequestsForCapability_SetHMICooperatingToTrue) {
+ // If local ccpu_version matches with the received ccpu_version from the HMI,
+ // and cache exists, SDL Core should check if hmi_cooperating is set to true
+ // if yes - SDL should respond to all pending RAI requests, if they exist.
+ // hmi_cooperting is set to true when no pending capability requests exist
+ const std::string ccpu_version = "4.1.3.B_EB355B";
+
+ hmi_capabilities_->set_ccpu_version(ccpu_version);
+
+ EXPECT_CALL(mock_app_mngr_, SetHMICooperating(true));
+
+ hmi_capabilities_->OnSoftwareVersionReceived(ccpu_version);
+}
+
+TEST_F(
+ HMICapabilitiesTest,
+ OnSoftwareVersionReceived_CcpuMatchHavePendingRequestsForCapability_NoSetHMICooperatingToTrue) {
+ // If local ccpu_version matches with the received ccpu_version from the HMI,
+ // and there is no cache, SDL Core should check if hmi_cooperating is set to
+ // true if no - SDL should suspend all RAI responses (if any) and wait for HMI
+ // responses with all required capabilities. The RAI responses (if any) could
+ // be handled only after hmi_cooperating is set to true, it is set when all
+ // capabilities responses are received from the HMI
+ const std::string ccpu_version = "4.1.3.B_EB355B";
+
+ // Init() is required to set pending capabilities requests to the HMI
+ hmi_capabilities_->Init(last_state_wrapper_);
+ hmi_capabilities_->set_ccpu_version(ccpu_version);
+
+ EXPECT_CALL(mock_app_mngr_, SetHMICooperating(true)).Times(0);
+
+ hmi_capabilities_->OnSoftwareVersionReceived(ccpu_version);
+}
+
+TEST_F(HMICapabilitiesTest,
+ CacheFileNameNotSpecified_NoNeedToSave_ReturnSuccess) {
+ const std::string hmi_capabilities_empty_file_name = "";
+ const std::vector<std::string> sections_to_update{hmi_response::language};
+
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_empty_file_name));
+
+ EXPECT_TRUE(hmi_capabilities_->SaveCachedCapabilitiesToFile(
+ hmi_interface::tts, sections_to_update, schema_));
+}
+
+TEST_F(HMICapabilitiesTest, SaveCachedCapabilitiesToFile_ParseFile_Failed) {
+ const std::vector<std::string> sections_to_update{hmi_response::language};
+
+ file_system::CreateFile(kHmiCapabilitiesCacheFile);
+ EXPECT_TRUE(file_system::FileExists(kHmiCapabilitiesCacheFile));
+
+ EXPECT_FALSE(hmi_capabilities_->SaveCachedCapabilitiesToFile(
+ hmi_interface::tts, sections_to_update, schema_));
+}
+
+TEST_F(HMICapabilitiesTest,
+ SaveCachedCapabilitiesToFile_ParsedFieldsSave_Success) {
+ const std::vector<std::string> sections_to_update{
+ hmi_response::display_capabilities};
+ const std::string content_to_save = "{\"field\" : \"value\" }";
+
+ CreateFile(kHmiCapabilitiesCacheFile);
+
+ const std::vector<uint8_t> binary_data_to_save(content_to_save.begin(),
+ content_to_save.end());
+ file_system::Write(kHmiCapabilitiesCacheFile, binary_data_to_save);
+
+ EXPECT_TRUE(hmi_capabilities_->SaveCachedCapabilitiesToFile(
+ hmi_interface::tts, sections_to_update, schema_));
+
+ std::string content_after_update;
+ EXPECT_TRUE(
+ file_system::ReadFile(kHmiCapabilitiesCacheFile, content_after_update));
+ EXPECT_NE(content_to_save, content_after_update);
+}
+
+TEST_F(
+ HMICapabilitiesTest,
+ SaveCachedCapabilitiesToFile_LanguageIsNotTheSameAsPersisted_SaveNewLanguageToCache) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+ const std::string new_language = "RU_RU";
+ ON_CALL(*(MockMessageHelper::message_helper_mock()),
+ CommonLanguageToString(_))
+ .WillByDefault(Return(new_language));
+
+ hmi_capabilities_->Init(last_state_wrapper_);
+ hmi_capabilities_->set_active_tts_language(hmi_apis::Common_Language::RU_RU);
+ const std::vector<std::string> sections_to_update{hmi_response::language};
+ const std::string content_to_save = "{\"TTS\": {\"language\":\"EN_US\"}}";
+
+ CreateFile(kHmiCapabilitiesCacheFile);
+ const std::vector<uint8_t> binary_data_to_save(content_to_save.begin(),
+ content_to_save.end());
+ file_system::Write(kHmiCapabilitiesCacheFile, binary_data_to_save);
+
+ EXPECT_TRUE(hmi_capabilities_->SaveCachedCapabilitiesToFile(
+ hmi_interface::tts, sections_to_update, schema_));
+
+ std::string content_after_update;
+ ASSERT_TRUE(
+ file_system::ReadFile(kHmiCapabilitiesCacheFile, content_after_update));
+ EXPECT_TRUE(content_after_update.find(new_language) != std::string::npos);
+}
+
+TEST_F(
+ HMICapabilitiesTest,
+ SaveCachedCapabilitiesToFile_SectionToUpdateIsEmpty_SkipSaving_ReturnTrue) {
+ const std::vector<std::string> sections_to_update;
+ EXPECT_TRUE(hmi_capabilities_->SaveCachedCapabilitiesToFile(
+ "", sections_to_update, schema_));
+}
+
+TEST_F(HMICapabilitiesTest, PrepareJsonValueForSaving_Success) {
+ const std::vector<std::string> sections_to_update{
+ hmi_response::display_capabilities,
+ hmi_response::hmi_zone_capabilities,
+ hmi_response::soft_button_capabilities,
+ strings::audio_pass_thru_capabilities,
+ strings::hmi_capabilities,
+ strings::system_capabilities,
+ hmi_response::languages};
+
+ const std::vector<std::string> interfaces_name{
+ hmi_interface::tts,
+ hmi_interface::vr,
+ hmi_interface::ui,
+ hmi_interface::buttons,
+ hmi_interface::vehicle_info,
+ hmi_interface::rc,
+ hmi_response::speech_capabilities,
+ hmi_response::prerecorded_speech_capabilities,
+ hmi_response::button_capabilities,
+ hmi_response::preset_bank_capabilities};
+
+ smart_objects::SmartObject audio_capabilities_so(
+ smart_objects::SmartType_Array);
+ audio_capabilities_so[0][strings::sampling_rate] =
+ hmi_apis::Common_SamplingRate::RATE_44KHZ;
+ audio_capabilities_so[0][strings::bits_per_sample] =
+ hmi_apis::Common_BitsPerSample::RATE_8_BIT;
+ audio_capabilities_so[0][strings::audio_type] =
+ hmi_apis::Common_AudioType::PCM;
+
+ const std::string content_to_save = "{\"field\" : \"value\" }";
+ const std::vector<uint8_t> binary_data_to_save(content_to_save.begin(),
+ content_to_save.end());
+
+ hmi_capabilities_->set_audio_pass_thru_capabilities(audio_capabilities_so);
+
+ CreateFile(kHmiCapabilitiesCacheFile);
+ file_system::Write(kHmiCapabilitiesCacheFile, binary_data_to_save);
+
+ for (size_t i = 0; i < interfaces_name.size(); ++i) {
+ EXPECT_TRUE(hmi_capabilities_->SaveCachedCapabilitiesToFile(
+ interfaces_name[i], sections_to_update, schema_));
+ }
+
+ std::string content_after_update;
+ EXPECT_TRUE(
+ file_system::ReadFile(kHmiCapabilitiesCacheFile, content_after_update));
+
+ Json::Value root_node;
+ utils::JsonReader reader;
+ ASSERT_TRUE(reader.parse(content_after_update, &root_node));
+
+ for (size_t i = 0; i < interfaces_name.size(); ++i) {
+ EXPECT_TRUE(static_cast<bool>(root_node[interfaces_name[i]]));
+ }
+ EXPECT_TRUE(
+ root_node[hmi_interface::ui][strings::audio_pass_thru_capabilities]
+ .isArray());
+}
+
+TEST_F(HMICapabilitiesTest,
+ OnCapabilityInitialized_RespondToAllPendingRAIRequestsIfTheyHold) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+
+ std::vector<hmi_apis::FunctionID::eType> requests_required{
+ hmi_apis::FunctionID::RC_GetCapabilities,
+ hmi_apis::FunctionID::VR_GetLanguage,
+ hmi_apis::FunctionID::VR_GetSupportedLanguages,
+ hmi_apis::FunctionID::VR_GetCapabilities,
+ hmi_apis::FunctionID::TTS_GetLanguage,
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages,
+ hmi_apis::FunctionID::TTS_GetCapabilities,
+ hmi_apis::FunctionID::Buttons_GetCapabilities,
+ hmi_apis::FunctionID::VehicleInfo_GetVehicleType,
+ hmi_apis::FunctionID::UI_GetCapabilities,
+ hmi_apis::FunctionID::UI_GetLanguage,
+ hmi_apis::FunctionID::UI_GetSupportedLanguages};
+
+ // Contains only UI capabilities
+ const std::string hmi_capabilities_file = "hmi_capabilities_sc2.json";
+ ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_file));
+
+ // Initializes the UI capabilities with the default values
+ // Other interfaces are absent and appropriate requests should be sent
+ hmi_capabilities_->Init(last_state_wrapper_);
+
+ ON_CALL(mock_app_mngr_, IsHMICooperating()).WillByDefault(Return(false));
+
+ // Sets isHMICooperating flag to true after all required capabilities are
+ // received from HMI
+ EXPECT_CALL(mock_app_mngr_, SetHMICooperating(true));
+
+ for (const auto& request_id : requests_required) {
+ hmi_capabilities_->UpdateRequestsRequiredForCapabilities(request_id);
+ }
+}
+
+TEST_F(HMICapabilitiesTest,
+ OnlyUICapabilitiesInCacheFile_RequestRequiredForOtherInterfaces) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+
+ std::vector<hmi_apis::FunctionID::eType> requests_required{
+ hmi_apis::FunctionID::RC_GetCapabilities,
+ hmi_apis::FunctionID::VR_GetLanguage,
+ hmi_apis::FunctionID::VR_GetSupportedLanguages,
+ hmi_apis::FunctionID::VR_GetCapabilities,
+ hmi_apis::FunctionID::TTS_GetLanguage,
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages,
+ hmi_apis::FunctionID::TTS_GetCapabilities,
+ hmi_apis::FunctionID::Buttons_GetCapabilities,
+ hmi_apis::FunctionID::VehicleInfo_GetVehicleType};
+
+ const std::string hmi_capabilities_cache_file =
+ "hmi_capabilities_cache_test.json";
+ CreateFile(hmi_capabilities_cache_file);
+ const std::string predefined_ui_capabilities =
+ "{\"UI\" : {\"language\" : "
+ "\"EN-US\",\"languages\":[],\"displayCapabilities\" : "
+ "{},\"audioPassThruCapabilities\":[],\"pcmStreamCapabilities\" : "
+ "{},\"hmiZoneCapabilities\": \"\",\"softButtonCapabilities\" : "
+ "[],\"systemCapabilities\" : {}}}";
+
+ const std::vector<uint8_t> binary_data_to_save(
+ predefined_ui_capabilities.begin(), predefined_ui_capabilities.end());
+
+ file_system::Write(hmi_capabilities_cache_file, binary_data_to_save);
+
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_cache_file));
+
+ hmi_capabilities_->Init(last_state_wrapper_);
+
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetLanguage));
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetSupportedLanguages));
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetCapabilities));
+
+ for (const auto& item : requests_required) {
+ EXPECT_TRUE(hmi_capabilities_->IsRequestsRequiredForCapabilities(item));
+ }
+
+ DeleteFileIfExists(hmi_capabilities_cache_file);
+}
+
+TEST_F(HMICapabilitiesTest,
+ OnlyRCCapabilitiesInCacheFile_RequestRequiredForOtherInterfaces) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+
+ std::vector<hmi_apis::FunctionID::eType> requests_required{
+ hmi_apis::FunctionID::UI_GetLanguage,
+ hmi_apis::FunctionID::UI_GetSupportedLanguages,
+ hmi_apis::FunctionID::UI_GetCapabilities,
+ hmi_apis::FunctionID::VR_GetLanguage,
+ hmi_apis::FunctionID::VR_GetSupportedLanguages,
+ hmi_apis::FunctionID::VR_GetCapabilities,
+ hmi_apis::FunctionID::TTS_GetLanguage,
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages,
+ hmi_apis::FunctionID::TTS_GetCapabilities,
+ hmi_apis::FunctionID::Buttons_GetCapabilities,
+ hmi_apis::FunctionID::VehicleInfo_GetVehicleType};
+
+ const std::string hmi_capabilities_cache_file =
+ "hmi_capabilities_cache_test.json";
+ CreateFile(hmi_capabilities_cache_file);
+ const std::string predefined_rc_capabilities =
+ "{\"RC\" : {\"remoteControlCapability\" : {\"buttonCapabilities\": "
+ "[],\"climateControlCapabilities\": [],\"radioControlCapabilities\": "
+ "[],\"audioControlCapabilities\": [],\"seatControlCapabilities\": "
+ "[],\"lightControlCapabilities\": {},\"hmiSettingsControlCapabilities\": "
+ "{}},\"seatLocationCapability\": {}}}}";
+
+ const std::vector<uint8_t> binary_data_to_save(
+ predefined_rc_capabilities.begin(), predefined_rc_capabilities.end());
+
+ file_system::Write(hmi_capabilities_cache_file, binary_data_to_save);
+
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_cache_file));
+
+ hmi_capabilities_->Init(last_state_wrapper_);
+
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::RC_GetCapabilities));
+
+ for (const auto& item : requests_required) {
+ EXPECT_TRUE(hmi_capabilities_->IsRequestsRequiredForCapabilities(item));
+ }
+}
+
+TEST_F(HMICapabilitiesTest,
+ OnlyVRCapabilitiesInCacheFile_RequestRequiredForOtherInterfaces) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+
+ std::vector<hmi_apis::FunctionID::eType> requests_required{
+ hmi_apis::FunctionID::UI_GetLanguage,
+ hmi_apis::FunctionID::UI_GetSupportedLanguages,
+ hmi_apis::FunctionID::RC_GetCapabilities,
+ hmi_apis::FunctionID::UI_GetCapabilities,
+ hmi_apis::FunctionID::TTS_GetLanguage,
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages,
+ hmi_apis::FunctionID::TTS_GetCapabilities,
+ hmi_apis::FunctionID::Buttons_GetCapabilities,
+ hmi_apis::FunctionID::VehicleInfo_GetVehicleType};
+
+ const std::string hmi_capabilities_cache_file =
+ "hmi_capabilities_cache_test.json";
+ CreateFile(hmi_capabilities_cache_file);
+ const std::string predefined_vr_capabilities =
+ "{\"VR\": {\"vrCapabilities\": [],\"language\": \"\",\"languages\": []}}";
+
+ const std::vector<uint8_t> binary_data_to_save(
+ predefined_vr_capabilities.begin(), predefined_vr_capabilities.end());
+
+ file_system::Write(hmi_capabilities_cache_file, binary_data_to_save);
+
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_cache_file));
+
+ hmi_capabilities_->Init(last_state_wrapper_);
+
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetLanguage));
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetSupportedLanguages));
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetCapabilities));
+
+ for (const auto& item : requests_required) {
+ EXPECT_TRUE(hmi_capabilities_->IsRequestsRequiredForCapabilities(item));
+ }
+}
+
+TEST_F(HMICapabilitiesTest,
+ OnlyTTSCapabilitiesInCacheFile_RequestRequiredForOtherInterfaces) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+
+ std::vector<hmi_apis::FunctionID::eType> requests_required{
+ hmi_apis::FunctionID::UI_GetLanguage,
+ hmi_apis::FunctionID::UI_GetSupportedLanguages,
+ hmi_apis::FunctionID::UI_GetCapabilities,
+ hmi_apis::FunctionID::RC_GetCapabilities,
+ hmi_apis::FunctionID::VR_GetLanguage,
+ hmi_apis::FunctionID::VR_GetSupportedLanguages,
+ hmi_apis::FunctionID::VR_GetCapabilities,
+ hmi_apis::FunctionID::Buttons_GetCapabilities,
+ hmi_apis::FunctionID::VehicleInfo_GetVehicleType};
+
+ const std::string hmi_capabilities_cache_file =
+ "hmi_capabilities_cache_test.json";
+ CreateFile(hmi_capabilities_cache_file);
+ const std::string predefined_tts_capabilities =
+ "{\"TTS\": {\"speechCapabilities\": [],\"prerecordedSpeechCapabilities\" "
+ ": [],\"language\": \"\",\"languages\": "
+ "[]}}";
+
+ const std::vector<uint8_t> binary_data_to_save(
+ predefined_tts_capabilities.begin(), predefined_tts_capabilities.end());
+
+ file_system::Write(hmi_capabilities_cache_file, binary_data_to_save);
+
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_cache_file));
+
+ hmi_capabilities_->Init(last_state_wrapper_);
+
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_GetLanguage));
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages));
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_GetCapabilities));
+
+ for (const auto& item : requests_required) {
+ EXPECT_TRUE(hmi_capabilities_->IsRequestsRequiredForCapabilities(item));
+ }
+}
+
+TEST_F(HMICapabilitiesTest,
+ OnlyButtonsSCapabilitiesInCacheFile_RequestRequiredForOtherInterfaces) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+
+ std::vector<hmi_apis::FunctionID::eType> requests_required{
+ hmi_apis::FunctionID::UI_GetLanguage,
+ hmi_apis::FunctionID::UI_GetSupportedLanguages,
+ hmi_apis::FunctionID::UI_GetCapabilities,
+ hmi_apis::FunctionID::RC_GetCapabilities,
+ hmi_apis::FunctionID::TTS_GetLanguage,
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages,
+ hmi_apis::FunctionID::TTS_GetCapabilities,
+ hmi_apis::FunctionID::VR_GetLanguage,
+ hmi_apis::FunctionID::VR_GetSupportedLanguages,
+ hmi_apis::FunctionID::VR_GetCapabilities,
+ hmi_apis::FunctionID::VehicleInfo_GetVehicleType};
+
+ const std::string hmi_capabilities_cache_file =
+ "hmi_capabilities_cache_test.json";
+ CreateFile(hmi_capabilities_cache_file);
+ const std::string predefined_buttons_capabilities =
+ "{\"Buttons\": {\"capabilities\": [],\"presetBankCapabilities\": {}}}";
+
+ const std::vector<uint8_t> binary_data_to_save(
+ predefined_buttons_capabilities.begin(),
+ predefined_buttons_capabilities.end());
+
+ file_system::Write(hmi_capabilities_cache_file, binary_data_to_save);
+
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_cache_file));
+
+ hmi_capabilities_->Init(last_state_wrapper_);
+
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::Buttons_GetCapabilities));
+
+ for (const auto& item : requests_required) {
+ EXPECT_TRUE(hmi_capabilities_->IsRequestsRequiredForCapabilities(item));
+ }
+}
+
+TEST_F(HMICapabilitiesTest,
+ OnlyVehicleInfoInCacheFile_RequestRequiredForOtherInterfaces) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+
+ std::vector<hmi_apis::FunctionID::eType> requests_required{
+ hmi_apis::FunctionID::UI_GetLanguage,
+ hmi_apis::FunctionID::UI_GetSupportedLanguages,
+ hmi_apis::FunctionID::UI_GetCapabilities,
+ hmi_apis::FunctionID::RC_GetCapabilities,
+ hmi_apis::FunctionID::TTS_GetLanguage,
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages,
+ hmi_apis::FunctionID::TTS_GetCapabilities,
+ hmi_apis::FunctionID::VR_GetLanguage,
+ hmi_apis::FunctionID::VR_GetSupportedLanguages,
+ hmi_apis::FunctionID::VR_GetCapabilities,
+ hmi_apis::FunctionID::Buttons_GetCapabilities};
+
+ const std::string hmi_capabilities_cache_file =
+ "hmi_capabilities_cache_test.json";
+ CreateFile(hmi_capabilities_cache_file);
+ const std::string predefined_vi_capabilities =
+ "{\"VehicleInfo\": { \"vehicleType\" : {} }}";
+
+ const std::vector<uint8_t> binary_data_to_save(
+ predefined_vi_capabilities.begin(), predefined_vi_capabilities.end());
+
+ file_system::Write(hmi_capabilities_cache_file, binary_data_to_save);
+
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(hmi_capabilities_cache_file));
+
+ hmi_capabilities_->Init(last_state_wrapper_);
+
+ EXPECT_FALSE(hmi_capabilities_->IsRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VehicleInfo_GetVehicleType));
+
+ for (const auto& item : requests_required) {
+ EXPECT_TRUE(hmi_capabilities_->IsRequestsRequiredForCapabilities(item));
+ }
+}
+
+TEST_F(
+ HMICapabilitiesTest,
+ ConvertJsonArrayToSoArray_ConvertPrerecordedSpeech_SuccessConvertFromStringToEnum) {
+ SetUpLanguageAndLightCapabilitiesExpectation();
+
+ CreateFile(kHmiCapabilitiesCacheFile);
+ const std::string prerecordedSpeechCapabilities =
+ "{ \"TTS\" :{"
+ "\"prerecordedSpeechCapabilities\" :["
+ "\"HELP_JINGLE\","
+ "\"INITIAL_JINGLE\","
+ "\"LISTEN_JINGLE\","
+ "\"POSITIVE_JINGLE\","
+ "\"NEGATIVE_JINGLE\"]}"
+ "}";
+
+ const std::vector<uint8_t> binary_data_to_save(
+ prerecordedSpeechCapabilities.begin(),
+ prerecordedSpeechCapabilities.end());
+ file_system::Write(kHmiCapabilitiesCacheFile, binary_data_to_save);
+
+ hmi_capabilities_->Init(last_state_wrapper_);
+
+ const auto tts_capabilities_so = *(hmi_capabilities_->prerecorded_speech());
+
+ EXPECT_EQ(hmi_apis::Common_PrerecordedSpeech::HELP_JINGLE,
+ static_cast<hmi_apis::Common_PrerecordedSpeech::eType>(
+ tts_capabilities_so[0].asInt()));
+ EXPECT_EQ(hmi_apis::Common_PrerecordedSpeech::INITIAL_JINGLE,
+ static_cast<hmi_apis::Common_PrerecordedSpeech::eType>(
+ tts_capabilities_so[1].asInt()));
+ EXPECT_EQ(hmi_apis::Common_PrerecordedSpeech::LISTEN_JINGLE,
+ static_cast<hmi_apis::Common_PrerecordedSpeech::eType>(
+ tts_capabilities_so[2].asInt()));
+ EXPECT_EQ(hmi_apis::Common_PrerecordedSpeech::POSITIVE_JINGLE,
+ static_cast<hmi_apis::Common_PrerecordedSpeech::eType>(
+ tts_capabilities_so[3].asInt()));
+ EXPECT_EQ(hmi_apis::Common_PrerecordedSpeech::NEGATIVE_JINGLE,
+ static_cast<hmi_apis::Common_PrerecordedSpeech::eType>(
+ tts_capabilities_so[4].asInt()));
}
} // namespace application_manager_test