summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--src/components/application_manager/include/application_manager/commands/command_request_impl.h24
-rw-r--r--src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h46
-rw-r--r--src/components/application_manager/include/application_manager/message_helper.h2
-rw-r--r--src/components/application_manager/include/application_manager/smart_object_keys.h1
-rw-r--r--src/components/application_manager/src/commands/command_request_impl.cc37
-rw-r--r--src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc154
-rw-r--r--src/components/application_manager/src/message_helper/message_helper.cc3
-rw-r--r--src/components/application_manager/src/smart_object_keys.cc4
-rw-r--r--src/components/application_manager/test/CMakeLists.txt7
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_request.h70
-rw-r--r--src/components/application_manager/test/request_controller/request_controller_test.cc226
-rw-r--r--src/components/application_manager/test/request_info_test.cc25
-rw-r--r--src/components/application_manager/test/resumption/resume_ctrl_test.cc494
-rw-r--r--src/components/interfaces/HMI_API.xml16
-rw-r--r--src/components/interfaces/MOBILE_API.xml8
16 files changed, 598 insertions, 521 deletions
diff --git a/.travis.yml b/.travis.yml
index 55dfdc3b00..69db195531 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -27,7 +27,7 @@ addons:
- binutils
before_install:
- sudo apt-get -qq update
- - sudo apt-get -q -y install libavahi-client-dev bluez-tools sqlite3 libsqlite3-dev automake1.11
+ - sudo apt-get -q -y install bluez-tools sqlite3 libsqlite3-dev automake1.11
- wget http://archive.ubuntu.com/ubuntu/pool/main/l/lcov/lcov_1.11-3_all.deb
- sudo dpkg -i lcov_1.11-3_all.deb
script:
diff --git a/src/components/application_manager/include/application_manager/commands/command_request_impl.h b/src/components/application_manager/include/application_manager/commands/command_request_impl.h
index db9203a8fc..f585410e97 100644
--- a/src/components/application_manager/include/application_manager/commands/command_request_impl.h
+++ b/src/components/application_manager/include/application_manager/commands/command_request_impl.h
@@ -259,30 +259,6 @@ class CommandRequestImpl : public CommandImpl,
mobile_apis::Result::eType PrepareResultCodeForResponse(
const ResponseInfo& first, const ResponseInfo& second);
- /**
- * @brief Resolves if the return code must be
- * UNSUPPORTED_RESOURCE
- * @param first contains result_code from HMI response and
- * interface that returns response
- * @param second contains result_code from HMI response and
- * interface that returns response.
- * @return if the communication return code must be
- * UNSUPPORTED_RESOURCE, function returns true, else
- * false
- */
- bool IsResultCodeUnsupported(const ResponseInfo& first,
- const ResponseInfo& second) const;
- /**
- * @brief Checks result code from HMI for split RPC
- * and set flags to the info structures.
- * @param first contains result_code from HMI response and
- * interface that returns response
- * @param second contains result_code from HMI response and
- * interface that returns response
- */
- void SetResultCodeFlagsForHMIResponses(ResponseInfo& out_first,
- ResponseInfo& out_second) const;
-
protected:
/**
* @brief Returns policy parameters permissions
diff --git a/src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h b/src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h
index 2639651e1a..99f86ea1d5 100644
--- a/src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h
+++ b/src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h
@@ -133,57 +133,11 @@ class PerformAudioPassThruRequest : public CommandRequestImpl {
*/
bool IsWaitingHMIResponse();
- /**
- * @brief Validates audioPassThruIcon parameter and
- * removes it if is not valid
- * @param app Pointer to the application whose storage directory
- * must be accessed
- */
- void ProcessAudioPassThruIcon(ApplicationSharedPtr app);
-
- /**
- * @brief Checks if the audioPassThruIcon parameter value
- * contains special characters (\n,\t) or
- * contains only white spaces
- * @return If the audioPassthruIcon parameter value contains
- * above mentioned symbols, the function returns FALSE, else
- * the parameter value is valid and it returns TRUE
- */
- bool IsAudioPassThruIconParamValid();
-
- /**
- * @brief Checks result code from HMI for splitted RPC
- * and returns parameter for sending to mobile app in
- * audioPassThru communication.
- * @param ui_response contains result_code from UI
- * @param tts_response contains result_code from TTS
- * @return result code - 1) UI error code has precedence than TTS's
- * 2) error_code from TTS is turned to WARNINGS
- */
- mobile_apis::Result::eType PrepareAudioPassThruResultCodeForResponse(
- const ResponseInfo& ui_response, const ResponseInfo& tts_response);
-
- /**
- * @brief Checks if any of audioPassThru communication components
- * returned ABORTED code
- * @param ui contains result_code from UI
- * @param tts contains result_code from TTS
- * @return if TTS or UI responded with ABORTED function returns TRUE,
- * else is returns FALSE
- */
- bool IsAnyHMIComponentAborted(const ResponseInfo& ui,
- const ResponseInfo& tts);
-
/* flag display state of speak and ui perform audio
during perform audio pass thru*/
bool awaiting_tts_speak_response_;
bool awaiting_ui_response_;
- /* flag shows if last received audioPassThruIcon exists
- * in the file system
- */
- bool audio_pass_thru_icon_exists_;
-
hmi_apis::Common_Result::eType result_tts_speak_;
hmi_apis::Common_Result::eType result_ui_;
std::string ui_info_;
diff --git a/src/components/application_manager/include/application_manager/message_helper.h b/src/components/application_manager/include/application_manager/message_helper.h
index 891d5af335..0ea4fc8ca5 100644
--- a/src/components/application_manager/include/application_manager/message_helper.h
+++ b/src/components/application_manager/include/application_manager/message_helper.h
@@ -178,7 +178,7 @@ class MessageHelper {
* @param hmi_level Desired HMI Level
*/
static std::string StringifiedHMILevel(
- mobile_apis::HMILevel::eType hmi_level);
+ const mobile_apis::HMILevel::eType hmi_level);
/*
* @brief Used to obtain function name by its id
diff --git a/src/components/application_manager/include/application_manager/smart_object_keys.h b/src/components/application_manager/include/application_manager/smart_object_keys.h
index e73972d7b6..9a9e5933bf 100644
--- a/src/components/application_manager/include/application_manager/smart_object_keys.h
+++ b/src/components/application_manager/include/application_manager/smart_object_keys.h
@@ -164,7 +164,6 @@ extern const char* speech_capabilities;
extern const char* vr_capabilities;
extern const char* audio_pass_thru_capabilities;
extern const char* pcm_stream_capabilities;
-extern const char* audio_pass_thru_icon;
// PutFile
extern const char* sync_file_name;
diff --git a/src/components/application_manager/src/commands/command_request_impl.cc b/src/components/application_manager/src/commands/command_request_impl.cc
index 6fec7877d5..ab0a17f1fb 100644
--- a/src/components/application_manager/src/commands/command_request_impl.cc
+++ b/src/components/application_manager/src/commands/command_request_impl.cc
@@ -109,6 +109,15 @@ bool CheckResultCode(const ResponseInfo& first, const ResponseInfo& second) {
return false;
}
+bool IsResultCodeUnsupported(const ResponseInfo& first,
+ const ResponseInfo& second) {
+ return ((first.is_ok || first.is_invalid_enum) &&
+ second.is_unsupported_resource) ||
+ ((second.is_ok || second.is_invalid_enum) &&
+ first.is_unsupported_resource) ||
+ (first.is_unsupported_resource && second.is_unsupported_resource);
+}
+
struct DisallowedParamsInserter {
DisallowedParamsInserter(smart_objects::SmartObject& response,
mobile_apis::VehicleDataResultCode::eType code)
@@ -681,18 +690,6 @@ bool CommandRequestImpl::PrepareResultForMobileResponse(
bool CommandRequestImpl::PrepareResultForMobileResponse(
ResponseInfo& out_first, ResponseInfo& out_second) const {
- SetResultCodeFlagsForHMIResponses(out_first, out_second);
-
- bool result = (out_first.is_ok && out_second.is_ok) ||
- (out_second.is_invalid_enum && out_first.is_ok) ||
- (out_first.is_invalid_enum && out_second.is_ok);
- result = result || CheckResultCode(out_first, out_second);
- result = result || CheckResultCode(out_second, out_first);
- return result;
-}
-
-void CommandRequestImpl::SetResultCodeFlagsForHMIResponses(
- ResponseInfo& out_first, ResponseInfo& out_second) const {
using namespace helpers;
out_first.is_ok = Compare<hmi_apis::Common_Result::eType, EQ, ONE>(
@@ -729,6 +726,13 @@ void CommandRequestImpl::SetResultCodeFlagsForHMIResponses(
out_second.interface_state =
application_manager_.hmi_interfaces().GetInterfaceState(
out_second.interface);
+
+ bool result = (out_first.is_ok && out_second.is_ok) ||
+ (out_second.is_invalid_enum && out_first.is_ok) ||
+ (out_first.is_invalid_enum && out_second.is_ok);
+ result = result || CheckResultCode(out_first, out_second);
+ result = result || CheckResultCode(out_second, out_first);
+ return result;
}
void CommandRequestImpl::GetInfo(
@@ -771,15 +775,6 @@ const CommandParametersPermissions& CommandRequestImpl::parameters_permissions()
return parameters_permissions_;
}
-bool CommandRequestImpl::IsResultCodeUnsupported(
- const ResponseInfo& first, const ResponseInfo& second) const {
- return ((first.is_ok || first.is_invalid_enum) &&
- second.is_unsupported_resource) ||
- ((second.is_ok || second.is_invalid_enum) &&
- first.is_unsupported_resource) ||
- (first.is_unsupported_resource && second.is_unsupported_resource);
-}
-
} // namespace commands
} // namespace application_manager
diff --git a/src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc b/src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc
index 8a631ec393..9f5fd937f9 100644
--- a/src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc
+++ b/src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc
@@ -37,7 +37,6 @@
#include "application_manager/application_impl.h"
#include "application_manager/message_helper.h"
#include "utils/helpers.h"
-#include "utils/file_system.h"
namespace application_manager {
@@ -50,7 +49,6 @@ PerformAudioPassThruRequest::PerformAudioPassThruRequest(
: CommandRequestImpl(message, application_manager)
, awaiting_tts_speak_response_(false)
, awaiting_ui_response_(false)
- , audio_pass_thru_icon_exists_(true)
, result_tts_speak_(hmi_apis::Common_Result::INVALID_ENUM)
, result_ui_(hmi_apis::Common_Result::INVALID_ENUM) {
subscribe_on_event(hmi_apis::FunctionID::TTS_OnResetTimeout);
@@ -99,7 +97,6 @@ void PerformAudioPassThruRequest::Run() {
// According with new implementation processing of UNSUPPORTE_RESOURCE
// need set flag before sending to hmi
- ProcessAudioPassThruIcon(app);
awaiting_ui_response_ = true;
if ((*message_)[str::msg_params].keyExists(str::initial_prompt) &&
(0 < (*message_)[str::msg_params][str::initial_prompt].length())) {
@@ -196,34 +193,21 @@ bool PerformAudioPassThruRequest::PrepareResponseParameters(
mobile_apis::Result::eType& result_code, std::string& info) {
LOG4CXX_AUTO_TRACE(logger_);
- bool result = true;
ResponseInfo ui_perform_info(result_ui_, HmiInterfaces::HMI_INTERFACE_UI);
ResponseInfo tts_perform_info(result_tts_speak_,
HmiInterfaces::HMI_INTERFACE_TTS);
+ const bool result =
+ PrepareResultForMobileResponse(ui_perform_info, tts_perform_info);
- SetResultCodeFlagsForHMIResponses(ui_perform_info, tts_perform_info);
if (ui_perform_info.is_ok && tts_perform_info.is_unsupported_resource &&
HmiInterfaces::STATE_AVAILABLE == tts_perform_info.interface_state) {
result_code = mobile_apis::Result::WARNINGS;
tts_info_ = "Unsupported phoneme type sent in a prompt";
- } else if (IsResultCodeUnsupported(ui_perform_info, tts_perform_info)) {
- result_code = mobile_apis::Result::UNSUPPORTED_RESOURCE;
- } else if (IsAnyHMIComponentAborted(ui_perform_info, tts_perform_info)) {
- result_code = mobile_apis::Result::ABORTED;
- result = false;
- } else {
- result_code = PrepareAudioPassThruResultCodeForResponse(ui_perform_info,
- tts_perform_info);
- if (!ui_perform_info.is_ok) {
- result = false;
- }
+ info = MergeInfos(ui_perform_info, ui_info_, tts_perform_info, tts_info_);
+ return result;
}
-
+ result_code = PrepareResultCodeForResponse(ui_perform_info, tts_perform_info);
info = MergeInfos(ui_perform_info, ui_info_, tts_perform_info, tts_info_);
- if (!audio_pass_thru_icon_exists_) {
- info = MergeInfos("Reference image(s) not found", info);
- }
-
return result;
}
@@ -252,53 +236,45 @@ void PerformAudioPassThruRequest::SendSpeakRequest() {
void PerformAudioPassThruRequest::SendPerformAudioPassThruRequest() {
LOG4CXX_AUTO_TRACE(logger_);
- smart_objects::SmartObject msg_params_send =
+ smart_objects::SmartObject msg_params =
smart_objects::SmartObject(smart_objects::SmartType_Map);
- smart_objects::SmartObject msg_params_rcvd = (*message_)[str::msg_params];
- msg_params_send[str::app_id] = connection_key();
+ msg_params[str::app_id] = connection_key();
- msg_params_send[hmi_request::max_duration] =
- msg_params_rcvd[str::max_duration];
+ msg_params[hmi_request::max_duration] =
+ (*message_)[str::msg_params][str::max_duration];
- msg_params_send[hmi_request::audio_pass_display_texts] =
+ msg_params[hmi_request::audio_pass_display_texts] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
- if (msg_params_rcvd.keyExists(str::audio_pass_display_text1)) {
- msg_params_send
- [hmi_request::audio_pass_display_texts][0][hmi_request::field_name] =
- static_cast<int32_t>(
- hmi_apis::Common_TextFieldName::audioPassThruDisplayText1);
- msg_params_send[hmi_request::audio_pass_display_texts][0]
- [hmi_request::field_text] =
- msg_params_rcvd[str::audio_pass_display_text1];
+ if ((*message_)[str::msg_params].keyExists(str::audio_pass_display_text1)) {
+ msg_params[hmi_request::audio_pass_display_texts][0]
+ [hmi_request::field_name] = static_cast<int32_t>(
+ hmi_apis::Common_TextFieldName::audioPassThruDisplayText1);
+ msg_params[hmi_request::audio_pass_display_texts][0]
+ [hmi_request::field_text] =
+ (*message_)[str::msg_params][str::audio_pass_display_text1];
}
- if (msg_params_rcvd.keyExists(str::audio_pass_display_text2)) {
- msg_params_send
- [hmi_request::audio_pass_display_texts][1][hmi_request::field_name] =
- static_cast<int32_t>(
- hmi_apis::Common_TextFieldName::audioPassThruDisplayText2);
- msg_params_send[hmi_request::audio_pass_display_texts][1]
- [hmi_request::field_text] =
- msg_params_rcvd[str::audio_pass_display_text2];
+ if ((*message_)[str::msg_params].keyExists(str::audio_pass_display_text2)) {
+ msg_params[hmi_request::audio_pass_display_texts][1]
+ [hmi_request::field_name] = static_cast<int32_t>(
+ hmi_apis::Common_TextFieldName::audioPassThruDisplayText2);
+ msg_params[hmi_request::audio_pass_display_texts][1]
+ [hmi_request::field_text] =
+ (*message_)[str::msg_params][str::audio_pass_display_text2];
}
- if (msg_params_rcvd.keyExists(str::mute_audio)) {
- msg_params_send[str::mute_audio] =
- msg_params_rcvd[str::mute_audio].asBool();
+ if ((*message_)[str::msg_params].keyExists(str::mute_audio)) {
+ msg_params[str::mute_audio] =
+ (*message_)[str::msg_params][str::mute_audio].asBool();
} else {
// If omitted, the value is set to true
- msg_params_send[str::mute_audio] = true;
- }
-
- if (msg_params_rcvd.keyExists(str::audio_pass_thru_icon)) {
- msg_params_send[str::audio_pass_thru_icon] =
- msg_params_rcvd[str::audio_pass_thru_icon];
+ msg_params[str::mute_audio] = true;
}
SendHMIRequest(
- hmi_apis::FunctionID::UI_PerformAudioPassThru, &msg_params_send, true);
+ hmi_apis::FunctionID::UI_PerformAudioPassThru, &msg_params, true);
}
void PerformAudioPassThruRequest::SendRecordStartNotification() {
@@ -389,78 +365,6 @@ bool PerformAudioPassThruRequest::IsWaitingHMIResponse() {
return awaiting_tts_speak_response_ || awaiting_ui_response_;
}
-void PerformAudioPassThruRequest::ProcessAudioPassThruIcon(
- ApplicationSharedPtr app) {
- LOG4CXX_AUTO_TRACE(logger_);
- smart_objects::SmartObject msg_params = (*message_)[strings::msg_params];
-
- audio_pass_thru_icon_exists_ = true;
- if (msg_params.keyExists(strings::audio_pass_thru_icon)) {
- if (IsAudioPassThruIconParamValid()) {
- smart_objects::SmartObject icon =
- msg_params[strings::audio_pass_thru_icon];
- if (MessageHelper::VerifyImage(icon, app, application_manager_) !=
- mobile_apis::Result::SUCCESS) {
- LOG4CXX_WARN(
- logger_,
- "Invalid audio_pass_thru_icon doesn't exist in the file system");
- audio_pass_thru_icon_exists_ = false;
- }
- } else {
- LOG4CXX_WARN(logger_,
- "Invalid audio_pass_thru_icon validation check failed");
- msg_params.erase(strings::audio_pass_thru_icon);
- }
- }
-}
-
-mobile_apis::Result::eType
-PerformAudioPassThruRequest::PrepareAudioPassThruResultCodeForResponse(
- const ResponseInfo& ui_response, const ResponseInfo& tts_response) {
- mobile_apis::Result::eType result_code = mobile_apis::Result::INVALID_ENUM;
-
- hmi_apis::Common_Result::eType common_result =
- hmi_apis::Common_Result::INVALID_ENUM;
- const hmi_apis::Common_Result::eType ui_result = ui_response.result_code;
- const hmi_apis::Common_Result::eType tts_result = tts_response.result_code;
-
- if ((ui_result == hmi_apis::Common_Result::SUCCESS) &&
- (tts_result != hmi_apis::Common_Result::SUCCESS)) {
- common_result = hmi_apis::Common_Result::WARNINGS;
- } else if (ui_result == hmi_apis::Common_Result::INVALID_ENUM) {
- common_result = tts_result;
- } else {
- common_result = ui_result;
- }
-
- result_code = MessageHelper::HMIToMobileResult(common_result);
- return result_code;
-}
-
-bool PerformAudioPassThruRequest::IsAudioPassThruIconParamValid() {
- LOG4CXX_AUTO_TRACE(logger_);
-
- const std::string& value =
- (*message_)[strings::msg_params][strings::audio_pass_thru_icon]
- [strings::value].asString();
-
- if (!CheckSyntax(value, false)) {
- LOG4CXX_WARN(logger_,
- "Invalid audio_pass_thru_icon value syntax check failed");
- return false;
- }
-
- return true;
-}
-
-bool PerformAudioPassThruRequest::IsAnyHMIComponentAborted(
- const ResponseInfo& ui, const ResponseInfo& tts) {
- using namespace helpers;
-
- return ((ui.result_code == hmi_apis::Common_Result::ABORTED) ||
- (tts.result_code == hmi_apis::Common_Result::ABORTED));
-}
-
} // namespace commands
} // namespace application_manager
diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc
index 65d6574b41..bdae1459a8 100644
--- a/src/components/application_manager/src/message_helper/message_helper.cc
+++ b/src/components/application_manager/src/message_helper/message_helper.cc
@@ -387,8 +387,7 @@ mobile_apis::HMILevel::eType MessageHelper::StringToHMILevel(
return mobile_apis::HMILevel::INVALID_ENUM;
}
-std::string MessageHelper::StringifiedHMILevel(
- mobile_apis::HMILevel::eType hmi_level) {
+std::string MessageHelper::StringifiedHMILevel(const mobile_apis::HMILevel::eType hmi_level) {
using namespace NsSmartDeviceLink::NsSmartObjects;
const char* str = 0;
if (EnumConversionHelper<mobile_apis::HMILevel::eType>::EnumToCString(
diff --git a/src/components/application_manager/src/smart_object_keys.cc b/src/components/application_manager/src/smart_object_keys.cc
index 8bc8b570f9..5339546a24 100644
--- a/src/components/application_manager/src/smart_object_keys.cc
+++ b/src/components/application_manager/src/smart_object_keys.cc
@@ -131,7 +131,6 @@ const char* speech_capabilities = "speechCapabilities";
const char* vr_capabilities = "vrCapabilities";
const char* audio_pass_thru_capabilities = "audioPassThruCapabilities";
const char* pcm_stream_capabilities = "pcmStreamCapabilities";
-const char* audio_pass_thru_icon = "audioPassThruIcon";
// PutFile
const char* sync_file_name = "syncFileName";
const char* file_name = "fileName";
@@ -350,7 +349,6 @@ const char* file = "file";
const char* file_name = "fileName";
const char* retry = "retry";
const char* service = "service";
-const char* audio_pass_thru_icon = "audioPassThruIcon";
} // namespace hmi_request
namespace hmi_response {
@@ -409,4 +407,4 @@ const char* event_name = "eventName";
} // namespace hmi_notification
-} // namespace application_manager
+} // namespace application_manager \ No newline at end of file
diff --git a/src/components/application_manager/test/CMakeLists.txt b/src/components/application_manager/test/CMakeLists.txt
index bcc114dc0d..7f7e3e201a 100644
--- a/src/components/application_manager/test/CMakeLists.txt
+++ b/src/components/application_manager/test/CMakeLists.txt
@@ -64,9 +64,15 @@ set(testSources
${AM_TEST_DIR}/application_state_test.cc
${AM_TEST_DIR}/usage_statistics_test.cc
${AM_TEST_DIR}/policy_handler_test.cc
+ ${AM_TEST_DIR}/mock_message_helper.cc
${AM_TEST_DIR}/application_manager_impl_test.cc
)
+set (RequestController_SOURCES
+ ${AM_TEST_DIR}/request_controller/request_controller_test.cc
+ ${AM_TEST_DIR}/mock_message_helper.cc
+)
+
set(LIBRARIES
Utils
ApplicationManager
@@ -113,6 +119,7 @@ set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath=${CMAKE_CURRENT_BINARY_DIR}"
)
create_test("application_manager_test" "${testSources}" "${LIBRARIES}")
+create_test("request_controller_test" "${RequestController_SOURCES}" "${LIBRARIES}")
# TODO [AKozoriz] : Fix not buildable tests
set(ResumptionData_SOURCES
diff --git a/src/components/application_manager/test/include/application_manager/mock_request.h b/src/components/application_manager/test/include/application_manager/mock_request.h
new file mode 100644
index 0000000000..e4cfa84841
--- /dev/null
+++ b/src/components/application_manager/test/include/application_manager/mock_request.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2017, Ford Motor Company
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the Ford Motor Company nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SRC_COMPONENTS_APPLICATION_MANAGER_TEST_INCLUDE_APPLICATION_MANAGER_MOCK_REQUEST_H_
+#define SRC_COMPONENTS_APPLICATION_MANAGER_TEST_INCLUDE_APPLICATION_MANAGER_MOCK_REQUEST_H_
+
+#include "gmock/gmock.h"
+#include "application_manager/commands/command.h"
+
+namespace test {
+namespace components {
+namespace application_manager_test {
+
+using ::testing::Return;
+
+class MockRequest : public application_manager::commands::Command {
+ public:
+ MockRequest(uint32_t connection_key, uint32_t correlation_id) {
+ ON_CALL(*this, correlation_id()).WillByDefault(Return(correlation_id));
+ ON_CALL(*this, connection_key()).WillByDefault(Return(connection_key));
+ }
+
+ MOCK_METHOD0(CheckPermissions, bool());
+ MOCK_METHOD0(Init, bool());
+ MOCK_METHOD0(Run, void());
+ MOCK_METHOD0(CleanUp, bool());
+ MOCK_CONST_METHOD0(default_timeout, uint32_t());
+ MOCK_CONST_METHOD0(function_id, int32_t());
+ MOCK_METHOD0(onTimeOut, void());
+ MOCK_METHOD0(AllowedToTerminate, bool());
+ MOCK_METHOD1(SetAllowedToTerminate, void(bool is_allowed));
+
+ MOCK_CONST_METHOD0(connection_key, uint32_t());
+ MOCK_CONST_METHOD0(correlation_id, uint32_t());
+};
+
+} // namespace application_manager_test
+} // namespace components
+} // namespace test
+
+#endif // SRC_COMPONENTS_APPLICATION_MANAGER_TEST_INCLUDE_APPLICATION_MANAGER_MOCK_REQUEST_H_
diff --git a/src/components/application_manager/test/request_controller/request_controller_test.cc b/src/components/application_manager/test/request_controller/request_controller_test.cc
index d820921981..f93240aeae 100644
--- a/src/components/application_manager/test/request_controller/request_controller_test.cc
+++ b/src/components/application_manager/test/request_controller/request_controller_test.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Ford Motor Company
+ * Copyright (c) 2017, Ford Motor Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,8 +30,11 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <stdint.h>
+
#include "gtest/gtest.h"
#include "application_manager/request_controller.h"
+#include "application_manager/request_info.h"
#include "application_manager/mock_request.h"
#include "utils/shared_ptr.h"
#include "smart_objects/smart_object.h"
@@ -52,91 +55,147 @@ namespace test {
namespace components {
namespace request_controller_test {
-using application_manager::request_controller::RequestController;
-using application_manager::request_controller::RequestInfo;
+using ::application_manager::request_controller::RequestController;
+using ::application_manager::request_controller::RequestInfo;
using ::testing::Return;
using ::testing::ReturnRef;
+using ::testing::NiceMock;
-typedef utils::SharedPtr<application_manager_test::MockRequest> RequestPtr;
+typedef NiceMock<application_manager_test::MockRequest> MRequest;
+typedef utils::SharedPtr<MRequest> RequestPtr;
typedef utils::SharedPtr<RequestController> RequestControllerSPtr;
+namespace {
+const size_t kNumberOfRequests = 10u;
+const uint32_t kTimeScale = 5000u; // 5 seconds
+const uint32_t kMaxRequestAmount = 2u;
+const uint32_t kDefaultCorrelationID = 1u;
+const uint32_t kDefaultConnectionKey = 0u;
+const uint32_t kDefaultTimeout = 100u;
+const uint32_t kThreadPoolSize = 1u;
+} // namespace
+
class RequestControllerTestClass : public ::testing::Test {
public:
- RequestControllerTestClass()
- : request_ctrl_(utils::MakeShared<RequestController>(
- mock_request_controller_settings_)) {
- register_request_ = GetMockRequest();
+ struct TestSettings {
+ uint32_t app_hmi_level_none_requests_time_scale_;
+ uint32_t app_hmi_level_none_time_scale_max_requests_;
+ uint32_t app_time_scale_max_requests_;
+ uint32_t app_requests_time_scale_;
+ uint32_t pending_requests_amount_;
+
+ TestSettings(const uint32_t app_hmi_level_none_requests_time_scale = 0u,
+ const uint32_t app_hmi_level_none_time_scale_max_requests = 0u,
+ const uint32_t app_time_scale_max_requests = 0u,
+ const uint32_t app_requests_time_scale = 0u,
+ const uint32_t pending_requests_amount = 0u)
+ : app_hmi_level_none_requests_time_scale_(
+ app_hmi_level_none_requests_time_scale)
+ , app_hmi_level_none_time_scale_max_requests_(
+ app_hmi_level_none_time_scale_max_requests)
+ , app_time_scale_max_requests_(app_time_scale_max_requests)
+ , app_requests_time_scale_(app_requests_time_scale)
+ , pending_requests_amount_(pending_requests_amount) {}
+ };
+
+ RequestControllerTestClass() {
+ ON_CALL(mock_request_controller_settings_, thread_pool_size())
+ .WillByDefault(Return(kThreadPoolSize));
+ request_ctrl_ =
+ utils::MakeShared<RequestController>(mock_request_controller_settings_);
+ }
+
+ RequestPtr GetMockRequest(
+ const uint32_t correlation_id = kDefaultCorrelationID,
+ const uint32_t connection_key = kDefaultConnectionKey,
+ const uint32_t default_timeout = kDefaultTimeout) {
+ RequestPtr output =
+ utils::MakeShared<MRequest>(connection_key, correlation_id);
+ ON_CALL(*output, default_timeout()).WillByDefault(Return(default_timeout));
+ return output;
}
RequestController::TResult AddRequest(
- const RequestInfo::RequestType request_type,
- const bool RegisterRequest = false,
+ const TestSettings& settings,
+ RequestPtr request,
+ const RequestInfo::RequestType request_type =
+ RequestInfo::RequestType::HMIRequest,
const mobile_apis::HMILevel::eType& hmi_level =
mobile_apis::HMILevel::INVALID_ENUM) {
- RequestPtr request;
- if (RegisterRequest) {
- request = register_request_;
- EXPECT_CALL(*register_request_, default_timeout()).WillOnce(Return(0));
- } else {
- request = empty_register_request_;
- }
if (RequestInfo::RequestType::HMIRequest == request_type) {
return request_ctrl_->addHMIRequest(request);
}
+ CallSettings(settings);
return request_ctrl_->addMobileRequest(request, hmi_level);
}
- RequestPtr GetMockRequest(const uint32_t id = 1,
- const uint32_t connection_key = 0) {
- return utils::MakeShared<application_manager_test::MockRequest>(
- connection_key, id);
- }
- void CallSettings() {
- EXPECT_CALL(mock_request_controller_settings_,
- app_hmi_level_none_time_scale())
- .WillOnce(ReturnRef(kDefaultAppHmiLevelNoneRequestsTimeScale));
- EXPECT_CALL(mock_request_controller_settings_,
- app_hmi_level_none_time_scale_max_requests())
- .WillOnce(ReturnRef(kDefaultAppHmiLevelNoneTimeScaleMaxRequests));
-
- EXPECT_CALL(mock_request_controller_settings_, app_time_scale())
- .WillOnce(ReturnRef(kDefaultAppRequestsTimeScale));
- EXPECT_CALL(mock_request_controller_settings_,
- app_time_scale_max_requests())
- .WillOnce(ReturnRef(kDefaultAppTimeScaleMaxRequests));
-
- EXPECT_CALL(mock_request_controller_settings_, pending_requests_amount())
- .WillOnce(ReturnRef(kDefaultPendingRequestsAmount));
+ void CallSettings(const TestSettings& settings) const {
+ ON_CALL(mock_request_controller_settings_, app_hmi_level_none_time_scale())
+ .WillByDefault(
+ ReturnRef(settings.app_hmi_level_none_requests_time_scale_));
+
+ ON_CALL(mock_request_controller_settings_,
+ app_hmi_level_none_time_scale_max_requests())
+ .WillByDefault(
+ ReturnRef(settings.app_hmi_level_none_time_scale_max_requests_));
+
+ ON_CALL(mock_request_controller_settings_, app_time_scale())
+ .WillByDefault(ReturnRef(settings.app_requests_time_scale_));
+
+ ON_CALL(mock_request_controller_settings_, app_time_scale_max_requests())
+ .WillByDefault(ReturnRef(settings.app_time_scale_max_requests_));
+
+ ON_CALL(mock_request_controller_settings_, pending_requests_amount())
+ .WillByDefault(ReturnRef(settings.pending_requests_amount_));
}
- application_manager_test::MockRequestControlerSettings
+ NiceMock<application_manager_test::MockRequestControlerSettings>
mock_request_controller_settings_;
- RequestPtr register_request_;
- RequestPtr empty_register_request_;
RequestControllerSPtr request_ctrl_;
-
- const uint32_t kDefaultAppHmiLevelNoneRequestsTimeScale = 10;
- const uint32_t kDefaultAppHmiLevelNoneTimeScaleMaxRequests = 100u;
- const uint32_t kDefaultAppTimeScaleMaxRequests = 0;
- const uint32_t kDefaultAppRequestsTimeScale = 0;
- const uint32_t kDefaultPendingRequestsAmount = 0;
+ RequestPtr empty_mock_request_;
+ const TestSettings default_settings_;
};
-TEST_F(RequestControllerTestClass, CheckPosibilitytoAdd_HMI_FULL_SUCCESS) {
- CallSettings();
- EXPECT_EQ(RequestController::TResult::SUCCESS,
- AddRequest(RequestInfo::RequestType::MobileRequest,
- true,
- mobile_apis::HMILevel::HMI_FULL));
+TEST_F(RequestControllerTestClass,
+ CheckPosibilitytoAdd_ZeroValueLimiters_SUCCESS) {
+ // Test case than pending_requests_amount,
+ // app_time_scale_max_requests_ and
+ // app_hmi_level_none_time_scale_max_requests_ equals 0
+ // (in the default settings they setted to 0)
+ for (size_t i = 0; i < kMaxRequestAmount; ++i) {
+ EXPECT_EQ(RequestController::SUCCESS,
+ AddRequest(default_settings_,
+ GetMockRequest(i),
+ RequestInfo::RequestType::MobileRequest,
+ mobile_apis::HMILevel::HMI_FULL));
+ }
}
-TEST_F(RequestControllerTestClass, CheckPosibilitytoAdd_HMI_NONE_SUCCESS) {
- CallSettings();
- EXPECT_EQ(RequestController::TResult::SUCCESS,
- AddRequest(RequestInfo::RequestType::MobileRequest,
- true,
- mobile_apis::HMILevel::HMI_NONE));
+TEST_F(
+ RequestControllerTestClass,
+ CheckPosibilitytoAdd_ExcessPendingRequestsAmount_TooManyPendingRequests) {
+ TestSettings settings;
+ settings.pending_requests_amount_ = kNumberOfRequests;
+
+ request_ctrl_->DestroyThreadpool();
+
+ // Adding requests to fit in pending_requests_amount_
+ for (size_t i = 0; i < kNumberOfRequests; ++i) {
+ EXPECT_EQ(RequestController::TResult::SUCCESS,
+ AddRequest(settings,
+ GetMockRequest(),
+ RequestInfo::RequestType::MobileRequest,
+ mobile_apis::HMILevel::HMI_FULL));
+ }
+
+ // Trying to add one more extra request
+ // Expect overflow and TOO_MANY_PENDING_REQUESTS result
+ EXPECT_EQ(RequestController::TResult::TOO_MANY_PENDING_REQUESTS,
+ AddRequest(settings,
+ GetMockRequest(),
+ RequestInfo::RequestType::MobileRequest,
+ mobile_apis::HMILevel::HMI_FULL));
}
TEST_F(RequestControllerTestClass, IsLowVoltage_SetOnLowVoltage_TRUE) {
@@ -151,34 +210,51 @@ TEST_F(RequestControllerTestClass, IsLowVoltage_SetOnWakeUp_FALSE) {
EXPECT_EQ(result, request_ctrl_->IsLowVoltage());
}
+TEST_F(RequestControllerTestClass, AddMobileRequest_SetValidData_SUCCESS) {
+ EXPECT_EQ(RequestController::SUCCESS,
+ AddRequest(default_settings_,
+ GetMockRequest(),
+ RequestInfo::RequestType::MobileRequest,
+ mobile_apis::HMILevel::HMI_FULL));
+}
+
TEST_F(RequestControllerTestClass,
AddMobileRequest_SetInvalidData_INVALID_DATA) {
EXPECT_EQ(RequestController::INVALID_DATA,
- AddRequest(RequestInfo::RequestType::MobileRequest,
- false,
+ AddRequest(default_settings_,
+ empty_mock_request_,
+ RequestInfo::RequestType::MobileRequest,
mobile_apis::HMILevel::HMI_NONE));
}
-TEST_F(RequestControllerTestClass, addHMIRequest_AddRequest_SUCCESS) {
+TEST_F(RequestControllerTestClass, AddHMIRequest_AddRequest_SUCCESS) {
EXPECT_EQ(RequestController::SUCCESS,
- AddRequest(RequestInfo::RequestType::HMIRequest, true));
+ AddRequest(default_settings_,
+ GetMockRequest(),
+ RequestInfo::RequestType::HMIRequest));
}
-TEST_F(RequestControllerTestClass, addHMIRequest_AddInvalidData_INVALID_DATA) {
+TEST_F(RequestControllerTestClass, AddHMIRequest_AddInvalidData_INVALID_DATA) {
EXPECT_EQ(RequestController::INVALID_DATA,
- AddRequest(RequestInfo::RequestType::HMIRequest));
+ AddRequest(default_settings_,
+ empty_mock_request_,
+ RequestInfo::RequestType::HMIRequest));
}
-TEST_F(RequestControllerTestClass, ZeroValuePendingRequestsAmount) {
- // Bigger than pending_requests_amount count
- const uint32_t big_count_of_requests_for_test_ = 10;
- for (uint32_t i = 0; i < big_count_of_requests_for_test_; ++i) {
- CallSettings();
- EXPECT_EQ(RequestController::SUCCESS,
- AddRequest(RequestInfo::RequestType::MobileRequest,
- true,
- mobile_apis::HMILevel::HMI_FULL));
- }
+TEST_F(RequestControllerTestClass, OnTimer_SUCCESS) {
+ const uint32_t request_timeout = 1u;
+ RequestPtr mock_request = GetMockRequest(
+ kDefaultCorrelationID, kDefaultConnectionKey, request_timeout);
+
+ EXPECT_EQ(RequestController::SUCCESS,
+ AddRequest(default_settings_,
+ mock_request,
+ RequestInfo::RequestType::MobileRequest));
+
+ EXPECT_CALL(*mock_request, onTimeOut());
+
+ // Waiting for call of `onTimeOut` for `kTimeScale` seconds
+ testing::Mock::AsyncVerifyAndClearExpectations(kTimeScale);
}
} // namespace request_controller_test
diff --git a/src/components/application_manager/test/request_info_test.cc b/src/components/application_manager/test/request_info_test.cc
index 62d9897a18..11b2d2f259 100644
--- a/src/components/application_manager/test/request_info_test.cc
+++ b/src/components/application_manager/test/request_info_test.cc
@@ -31,6 +31,7 @@
*/
#include "application_manager/request_info.h"
+#include "application_manager/mock_request.h"
#include <iostream>
#include <vector>
#include <limits>
@@ -44,30 +45,6 @@ namespace test {
namespace components {
namespace application_manager_test {
-class MockRequest : public application_manager::commands::Command {
- public:
- MockRequest(uint32_t connection_key, uint32_t correlation_id)
- : connection_key_(connection_key), correlation_id_(correlation_id) {}
- MOCK_METHOD0(CheckPermissions, bool());
- MOCK_METHOD0(Init, bool());
- MOCK_METHOD0(Run, void());
- MOCK_METHOD0(CleanUp, bool());
- MOCK_CONST_METHOD0(default_timeout, uint32_t());
- MOCK_CONST_METHOD0(function_id, int32_t());
- MOCK_METHOD0(onTimeOut, void());
- MOCK_METHOD0(AllowedToTerminate, bool());
- MOCK_METHOD1(SetAllowedToTerminate, void(bool));
-
- uint32_t connection_key_;
- uint32_t correlation_id_;
- virtual uint32_t connection_key() const {
- return connection_key_;
- }
- virtual uint32_t correlation_id() const {
- return correlation_id_;
- }
-};
-
class TestRequestInfo : public request_info::RequestInfo {
public:
TestRequestInfo(request_info::RequestPtr request,
diff --git a/src/components/application_manager/test/resumption/resume_ctrl_test.cc b/src/components/application_manager/test/resumption/resume_ctrl_test.cc
index 14f6cf58cd..386e81d4ba 100644
--- a/src/components/application_manager/test/resumption/resume_ctrl_test.cc
+++ b/src/components/application_manager/test/resumption/resume_ctrl_test.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Ford Motor Company
+ * Copyright (c) 2017, Ford Motor Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -61,6 +61,7 @@ using ::testing::SetArgReferee;
using ::testing::Mock;
using ::testing::NiceMock;
using ::testing::AtLeast;
+using ::testing::Eq;
using namespace application_manager_test;
using namespace resumption;
@@ -77,17 +78,21 @@ class ResumeCtrlTest : public ::testing::Test {
, kTestDevId_(5u)
, kTestGrammarId_(10)
, kHash_("saved_hash")
- , kAppResumingTimeout_(30000000u) {}
+ , kAppResumingTimeout_(30000u) // miliseconds
+ , kTestTimeStamp_(1452074434u) {}
virtual void SetUp() OVERRIDE {
+ Mock::VerifyAndClearExpectations(&app_mngr_);
ON_CALL(app_mngr_, event_dispatcher())
.WillByDefault(ReturnRef(mock_event_dispatcher_));
- mock_storage =
+ mock_storage_ =
::utils::MakeShared<NiceMock<resumption_test::MockResumptionData> >(
app_mngr_);
- app_mock = utils::MakeShared<NiceMock<MockApplication> >();
- res_ctrl = utils::MakeShared<ResumeCtrlImpl>(app_mngr_);
- res_ctrl->set_resumption_storage(mock_storage);
+ app_mock_ = utils::MakeShared<NiceMock<MockApplication> >();
+ const_app_ =
+ static_cast<application_manager::ApplicationConstSharedPtr>(app_mock_);
+ res_ctrl_ = utils::MakeShared<ResumeCtrlImpl>(app_mngr_);
+ res_ctrl_->set_resumption_storage(mock_storage_);
ON_CALL(app_mngr_, state_controller())
.WillByDefault(ReturnRef(state_controller_));
@@ -99,12 +104,15 @@ class ResumeCtrlTest : public ::testing::Test {
ON_CALL(mock_application_manager_settings_, app_resuming_timeout())
.WillByDefault(ReturnRef(kAppResumingTimeout_));
}
+ void TearDown() OVERRIDE {
+ Mock::VerifyAndClearExpectations(&app_mngr_);
+ }
void GetInfoFromApp() {
- ON_CALL(*app_mock, policy_app_id())
+ ON_CALL(*app_mock_, policy_app_id())
.WillByDefault(Return(kTestPolicyAppId_));
- ON_CALL(*app_mock, mac_address()).WillByDefault(ReturnRef(kMacAddress_));
- ON_CALL(*app_mock, device()).WillByDefault(Return(kTestDevId_));
- ON_CALL(*app_mock, app_id()).WillByDefault(Return(kTestAppId_));
+ ON_CALL(*app_mock_, mac_address()).WillByDefault(ReturnRef(kMacAddress_));
+ ON_CALL(*app_mock_, device()).WillByDefault(Return(kTestDevId_));
+ ON_CALL(*app_mock_, app_id()).WillByDefault(Return(kTestAppId_));
}
NiceMock<event_engine_test::MockEventDispatcher> mock_event_dispatcher_;
@@ -112,20 +120,22 @@ class ResumeCtrlTest : public ::testing::Test {
mock_application_manager_settings_;
application_manager_test::MockApplicationManager app_mngr_;
MockStateController state_controller_;
- utils::SharedPtr<ResumeCtrl> res_ctrl;
- utils::SharedPtr<NiceMock<resumption_test::MockResumptionData> > mock_storage;
- utils::SharedPtr<NiceMock<MockApplication> > app_mock;
- // app_mock.app_id() will return this value
+ utils::SharedPtr<ResumeCtrl> res_ctrl_;
+ utils::SharedPtr<NiceMock<resumption_test::MockResumptionData> >
+ mock_storage_;
+ utils::SharedPtr<NiceMock<MockApplication> > app_mock_;
+ application_manager::ApplicationConstSharedPtr const_app_;
const uint32_t kTestAppId_;
const std::string kTestPolicyAppId_;
const std::string kMacAddress_;
const mobile_apis::HMILevel::eType kDefaultTestLevel_;
const uint32_t kCorId_;
- // app_mock.Device() will return this value
const uint32_t kTestDevId_;
const uint32_t kTestGrammarId_;
const std::string kHash_;
const uint32_t kAppResumingTimeout_;
+ const uint32_t kTestTimeStamp_;
+ sync_primitives::Lock app_set_lock_;
};
/**
@@ -139,15 +149,16 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGrammarId) {
// Check RestoreApplicationData
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
- EXPECT_CALL(*mock_storage,
- GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, UpdateHash());
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
-
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ EXPECT_CALL(*app_mock_, UpdateHash());
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
+
+ const bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_TRUE(res);
}
@@ -163,15 +174,16 @@ TEST_F(ResumeCtrlTest, StartResumption_WithoutGrammarId) {
saved_app[application_manager::strings::hash_id] = kHash_;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
// Check RestoreApplicationData
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, UpdateHash());
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_)).Times(0);
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ EXPECT_CALL(*app_mock_, UpdateHash());
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_)).Times(0);
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_FALSE(res);
}
@@ -210,14 +222,15 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithFiles) {
test_application_files;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, UpdateHash());
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ EXPECT_CALL(*app_mock_, UpdateHash());
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
for (uint32_t i = 0; i < count_of_files; ++i) {
- EXPECT_CALL(*app_mock,
+ EXPECT_CALL(*app_mock_,
AddFile(CheckAppFile(
true,
true,
@@ -225,7 +238,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithFiles) {
static_cast<mobile_apis::FileType::eType>(file_types[i]))));
}
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ const bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_TRUE(res);
}
@@ -247,15 +260,16 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubmenues) {
test_application_submenues;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
for (uint32_t i = 0; i < count_of_submenues; ++i) {
- EXPECT_CALL(*app_mock, AddSubMenu(i, test_application_submenues[i]));
+ EXPECT_CALL(*app_mock_, AddSubMenu(i, test_application_submenues[i]));
}
smart_objects::SmartObjectList requests;
@@ -265,8 +279,8 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubmenues) {
CreateAddSubMenuRequestToHMI(_, kCorId_))
.WillRepeatedly(Return(requests));
- EXPECT_CALL(*app_mock, UpdateHash());
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ EXPECT_CALL(*app_mock_, UpdateHash());
+ const bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_TRUE(res);
}
@@ -287,16 +301,17 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithCommands) {
saved_app[application_manager::strings::application_commands] =
test_application_commands;
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
// Check RestoreApplicationData
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, UpdateHash());
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ EXPECT_CALL(*app_mock_, UpdateHash());
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
for (uint32_t i = 0; i < count_of_commands; ++i) {
- EXPECT_CALL(*app_mock, AddCommand(i, test_application_commands[i]));
+ EXPECT_CALL(*app_mock_, AddCommand(i, test_application_commands[i]));
}
smart_objects::SmartObjectList requests;
@@ -304,7 +319,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithCommands) {
CreateAddCommandRequestToHMI(_, _))
.WillRepeatedly(Return(requests));
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ const bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_TRUE(res);
}
@@ -338,16 +353,17 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithChoiceSet) {
application_choice_sets;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, UpdateHash());
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ EXPECT_CALL(*app_mock_, UpdateHash());
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
for (uint32_t i = 0; i < count_of_choice_sets; ++i) {
- EXPECT_CALL(*app_mock, AddChoiceSet(i, application_choice_sets[i]));
+ EXPECT_CALL(*app_mock_, AddChoiceSet(i, application_choice_sets[i]));
}
smart_objects::SmartObjectList requests;
@@ -355,7 +371,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithChoiceSet) {
CreateAddVRCommandRequestFromChoiceToHMI(_))
.WillRepeatedly(Return(requests));
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ const bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_TRUE(res);
}
@@ -369,21 +385,22 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGlobalProperties) {
test_global_properties;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
EXPECT_CALL(*application_manager::MockMessageHelper::message_helper_mock(),
SendGlobalPropertiesToHMI(_));
- EXPECT_CALL(*app_mock, load_global_properties(test_global_properties));
+ EXPECT_CALL(*app_mock_, load_global_properties(test_global_properties));
- EXPECT_CALL(*app_mock, UpdateHash());
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ EXPECT_CALL(*app_mock_, UpdateHash());
+ const bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_TRUE(res);
}
@@ -407,25 +424,26 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscribeOnButtons) {
test_subscriptions;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
for (uint32_t i = 0; i < count_of_buttons; ++i) {
EXPECT_CALL(
- *app_mock,
+ *app_mock_,
SubscribeToButton(static_cast<mobile_apis::ButtonName::eType>(i)));
}
- EXPECT_CALL(*app_mock, UpdateHash());
+ EXPECT_CALL(*app_mock_, UpdateHash());
EXPECT_CALL(*application_manager::MockMessageHelper::message_helper_mock(),
SendAllOnButtonSubscriptionNotificationsForApp(_, _)).Times(2);
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ const bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_TRUE(res);
}
@@ -451,17 +469,18 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscriptionToIVI) {
test_subscriptions;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
for (size_t i = 0; i < app_vi.length(); ++i) {
EXPECT_CALL(
- *app_mock,
+ *app_mock_,
SubscribeToIVI(static_cast<application_manager::VehicleDataType>(i)));
}
@@ -469,20 +488,44 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscriptionToIVI) {
EXPECT_CALL(*application_manager::MockMessageHelper::message_helper_mock(),
GetIVISubscriptionRequests(_)).WillRepeatedly(Return(requests));
- EXPECT_CALL(*app_mock, UpdateHash());
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ EXPECT_CALL(*app_mock_, UpdateHash());
+ const bool res = res_ctrl_->StartResumption(app_mock_, kHash_);
EXPECT_TRUE(res);
}
+TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscriptionToWayPoints) {
+ smart_objects::SmartObject saved_app;
+ saved_app[application_manager::strings::hash_id] = kHash_;
+ saved_app[application_manager::strings::grammar_id] = kTestGrammarId_;
+ saved_app[application_manager::strings::subscribed_for_way_points] = true;
+ saved_app[application_manager::strings::time_stamp] = kTestTimeStamp_;
+
+ GetInfoFromApp();
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ EXPECT_CALL(*app_mock_, set_grammar_id(kTestGrammarId_));
+ EXPECT_CALL(app_mngr_, SubscribeAppForWayPoints(_));
+ const mobile_apis::HMILevel::eType hmi_test_level =
+ mobile_apis::HMILevel::HMI_FULL;
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(hmi_test_level));
+ EXPECT_CALL(state_controller_, SetRegularState(_, hmi_test_level));
+
+ const bool result = res_ctrl_->StartResumption(app_mock_, kHash_);
+ EXPECT_TRUE(result);
+}
+
TEST_F(ResumeCtrlTest, StartResumptionOnlyHMILevel) {
smart_objects::SmartObject saved_app;
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillOnce(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
- .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- bool res = res_ctrl->StartResumptionOnlyHMILevel(app_mock);
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool res = res_ctrl_->StartResumptionOnlyHMILevel(app_mock_);
EXPECT_TRUE(res);
}
@@ -496,15 +539,17 @@ TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInFull) {
EXPECT_CALL(state_controller_, SetRegularState(_, restored_test_type))
.Times(AtLeast(1));
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(*mock_storage, RemoveApplicationFromSaved(_, _))
+ EXPECT_CALL(*mock_storage_,
+ RemoveApplicationFromSaved(kTestPolicyAppId_, kMacAddress_))
.WillOnce(Return(true));
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345"))
- .WillRepeatedly(Return(policy::kDeviceAllowed));
- res_ctrl->StartAppHmiStateResumption(app_mock);
+ ON_CALL(app_mngr_, GetUserConsentForDevice("12345"))
+ .WillByDefault(Return(policy::kDeviceAllowed));
+ res_ctrl_->StartAppHmiStateResumption(app_mock_);
}
TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInBackground) {
@@ -517,10 +562,11 @@ TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInBackground) {
EXPECT_CALL(app_mngr_, state_controller()).Times(0);
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- res_ctrl->StartAppHmiStateResumption(app_mock);
+ res_ctrl_->StartAppHmiStateResumption(app_mock_);
}
/**
@@ -538,14 +584,15 @@ TEST_F(ResumeCtrlTest, RestoreAppHMIState_RestoreHMILevelFull) {
EXPECT_CALL(state_controller_, SetRegularState(_, restored_test_type))
.Times(AtLeast(1));
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345"))
- .WillOnce(Return(policy::kDeviceAllowed));
- EXPECT_CALL(*app_mock, set_is_resuming(true));
+ ON_CALL(app_mngr_, GetUserConsentForDevice("12345"))
+ .WillByDefault(Return(policy::kDeviceAllowed));
+ EXPECT_CALL(*app_mock_, set_is_resuming(true));
- bool res = res_ctrl->RestoreAppHMIState(app_mock);
+ const bool res = res_ctrl_->RestoreAppHMIState(app_mock_);
EXPECT_TRUE(res);
}
@@ -554,18 +601,46 @@ TEST_F(ResumeCtrlTest, SetupDefaultHMILevel) {
saved_app[application_manager::strings::hmi_level] = kDefaultTestLevel_;
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillRepeatedly(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
GetInfoFromApp();
EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0);
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillOnce(Return(kDefaultTestLevel_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
EXPECT_CALL(state_controller_, SetRegularState(_, kDefaultTestLevel_))
.Times(AtLeast(1));
- res_ctrl->SetupDefaultHMILevel(app_mock);
+ res_ctrl_->SetupDefaultHMILevel(app_mock_);
+}
+
+TEST_F(ResumeCtrlTest, ApplicationResumptiOnTimer_AppInFull) {
+ ON_CALL(app_mngr_, application(kTestAppId_)).WillByDefault(Return(app_mock_));
+
+ mobile_apis::HMILevel::eType restored_test_type = eType::HMI_FULL;
+ const uint32_t ign_off_count = 0u;
+ smart_objects::SmartObject saved_app;
+ saved_app[application_manager::strings::ign_off_count] = ign_off_count;
+ saved_app[application_manager::strings::hmi_level] = restored_test_type;
+
+ MockStateController state_controller;
+ EXPECT_CALL(app_mngr_, state_controller())
+ .WillOnce(ReturnRef(state_controller));
+ EXPECT_CALL(state_controller, SetRegularState(_, restored_test_type))
+ .Times(AtLeast(1));
+ GetInfoFromApp();
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+
+ EXPECT_CALL(*mock_storage_,
+ RemoveApplicationFromSaved(kTestPolicyAppId_, kMacAddress_))
+ .WillOnce(Return(true));
+
+ ON_CALL(app_mngr_, GetUserConsentForDevice(kMacAddress_))
+ .WillByDefault(Return(policy::kDeviceAllowed));
+ res_ctrl_->StartAppHmiStateResumption(app_mock_);
}
/**
@@ -577,10 +652,10 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMINone_WithoutCheckPolicy) {
EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0);
- EXPECT_CALL(*app_mock, set_is_resuming(true));
+ EXPECT_CALL(*app_mock_, set_is_resuming(true));
EXPECT_CALL(state_controller_, SetRegularState(_, kDefaultTestLevel_))
.Times(AtLeast(1));
- bool res = res_ctrl->SetAppHMIState(app_mock, kDefaultTestLevel_, false);
+ const bool res = res_ctrl_->SetAppHMIState(app_mock_, kDefaultTestLevel_, false);
EXPECT_TRUE(res);
}
@@ -589,10 +664,10 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMILimited_WithoutCheckPolicy) {
GetInfoFromApp();
EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0);
- EXPECT_CALL(*app_mock, set_is_resuming(true));
+ EXPECT_CALL(*app_mock_, set_is_resuming(true));
EXPECT_CALL(state_controller_, SetRegularState(_, test_type))
.Times(AtLeast(1));
- bool res = res_ctrl->SetAppHMIState(app_mock, test_type, false);
+ const bool res = res_ctrl_->SetAppHMIState(app_mock_, test_type, false);
EXPECT_TRUE(res);
}
@@ -600,14 +675,14 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMIFull_WithoutCheckPolicy) {
mobile_apis::HMILevel::eType test_type = eType::HMI_FULL;
GetInfoFromApp();
// GetDefaultHmiLevel should not be called
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_)).Times(0);
+ EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(const_app_)).Times(0);
EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0);
- EXPECT_CALL(*app_mock, set_is_resuming(true));
+ EXPECT_CALL(*app_mock_, set_is_resuming(true));
EXPECT_CALL(state_controller_, SetRegularState(_, test_type))
.Times(AtLeast(1));
- bool res = res_ctrl->SetAppHMIState(app_mock, test_type, false);
+ const bool res = res_ctrl_->SetAppHMIState(app_mock_, test_type, false);
EXPECT_TRUE(res);
}
@@ -615,14 +690,14 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMIFull_WithPolicy_DevAllowed) {
mobile_apis::HMILevel::eType test_type = eType::HMI_FULL;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345"))
- .WillOnce(Return(policy::kDeviceAllowed));
+ ON_CALL(app_mngr_, GetUserConsentForDevice("12345"))
+ .WillByDefault(Return(policy::kDeviceAllowed));
- EXPECT_CALL(*app_mock, set_is_resuming(true));
+ EXPECT_CALL(*app_mock_, set_is_resuming(true));
EXPECT_CALL(state_controller_, SetRegularState(_, test_type))
.Times(AtLeast(1));
- bool res = res_ctrl->SetAppHMIState(app_mock, test_type, true);
+ const bool res = res_ctrl_->SetAppHMIState(app_mock_, test_type, true);
EXPECT_TRUE(res);
}
@@ -630,78 +705,124 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMIFull_WithPolicy_DevDisallowed) {
mobile_apis::HMILevel::eType test_type = eType::HMI_FULL;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345"))
- .WillOnce(Return(policy::kDeviceDisallowed));
+ ON_CALL(app_mngr_, GetUserConsentForDevice("12345"))
+ .WillByDefault(Return(policy::kDeviceDisallowed));
- EXPECT_CALL(*app_mock, set_is_resuming(true));
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillOnce(Return(kDefaultTestLevel_));
+ EXPECT_CALL(*app_mock_, set_is_resuming(true));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
EXPECT_CALL(state_controller_, SetRegularState(_, kDefaultTestLevel_))
.Times(AtLeast(1));
- bool res = res_ctrl->SetAppHMIState(app_mock, test_type, true);
+ const bool res = res_ctrl_->SetAppHMIState(app_mock_, test_type, true);
EXPECT_FALSE(res);
}
+TEST_F(ResumeCtrlTest, SaveAllApplications) {
+ utils::SharedPtr<application_manager_test::MockApplication> test_app =
+ ::utils::MakeShared<application_manager_test::MockApplication>();
+ EXPECT_CALL(*test_app, app_id()).WillRepeatedly(Return(kTestAppId_));
+
+ application_manager::ApplicationSet app_set;
+ app_set.insert(test_app);
+
+ DataAccessor<application_manager::ApplicationSet> accessor(app_set,
+ app_set_lock_);
+
+ ON_CALL(app_mngr_, applications()).WillByDefault(Return(accessor));
+ EXPECT_CALL(*mock_storage_, SaveApplication(Eq(test_app)));
+ res_ctrl_->SaveAllApplications();
+}
+
+TEST_F(ResumeCtrlTest, SaveAllApplications_EmptyApplicationlist) {
+ utils::SharedPtr<application_manager::Application> mock_app =
+ ::utils::MakeShared<application_manager_test::MockApplication>();
+
+ application_manager::ApplicationSet app_set;
+
+ DataAccessor<application_manager::ApplicationSet> accessor(app_set,
+ app_set_lock_);
+
+ ON_CALL(app_mngr_, applications()).WillByDefault(Return(accessor));
+ EXPECT_CALL(*mock_storage_, SaveApplication(mock_app)).Times(0);
+ res_ctrl_->SaveAllApplications();
+}
+
TEST_F(ResumeCtrlTest, SaveApplication) {
utils::SharedPtr<application_manager::Application> app_sh_mock =
::utils::MakeShared<application_manager_test::MockApplication>();
- EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock));
- res_ctrl->SaveApplication(app_sh_mock);
+ EXPECT_CALL(*mock_storage_, SaveApplication(app_sh_mock));
+ res_ctrl_->SaveApplication(app_sh_mock);
}
TEST_F(ResumeCtrlTest, OnAppActivated_ResumptionHasStarted) {
smart_objects::SmartObject saved_app;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
- .WillOnce(Return(kDefaultTestLevel_));
- EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
- .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- ON_CALL(*app_mock, app_id()).WillByDefault(Return(kTestAppId_));
+ ON_CALL(app_mngr_, GetDefaultHmiLevel(const_app_))
+ .WillByDefault(Return(kDefaultTestLevel_));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*app_mock_, app_id()).WillByDefault(Return(kTestAppId_));
- bool res = res_ctrl->StartResumptionOnlyHMILevel(app_mock);
+ const bool res = res_ctrl_->StartResumptionOnlyHMILevel(app_mock_);
EXPECT_TRUE(res);
utils::SharedPtr<application_manager_test::MockApplication> app_sh_mock =
::utils::MakeShared<application_manager_test::MockApplication>();
EXPECT_CALL(*app_sh_mock, app_id()).WillOnce(Return(kTestAppId_));
- res_ctrl->OnAppActivated(app_sh_mock);
+ res_ctrl_->OnAppActivated(app_sh_mock);
}
TEST_F(ResumeCtrlTest, OnAppActivated_ResumptionNotActive) {
utils::SharedPtr<application_manager_test::MockApplication> app_sh_mock =
::utils::MakeShared<application_manager_test::MockApplication>();
EXPECT_CALL(*app_sh_mock, app_id()).Times(0);
- res_ctrl->OnAppActivated(app_sh_mock);
+ res_ctrl_->OnAppActivated(app_sh_mock);
}
TEST_F(ResumeCtrlTest, IsHMIApplicationIdExist) {
uint32_t hmi_app_id = 10;
- EXPECT_CALL(*mock_storage, IsHMIApplicationIdExist(hmi_app_id))
+ EXPECT_CALL(*mock_storage_, IsHMIApplicationIdExist(hmi_app_id))
.WillOnce(Return(true));
- EXPECT_TRUE(res_ctrl->IsHMIApplicationIdExist(hmi_app_id));
+ EXPECT_TRUE(res_ctrl_->IsHMIApplicationIdExist(hmi_app_id));
}
TEST_F(ResumeCtrlTest, GetHMIApplicationID) {
uint32_t hmi_app_id = 10;
std::string device_id = "test_device_id";
- EXPECT_CALL(*mock_storage, GetHMIApplicationID(kTestPolicyAppId_, device_id))
+ EXPECT_CALL(*mock_storage_, GetHMIApplicationID(kTestPolicyAppId_, device_id))
.WillOnce(Return(hmi_app_id));
EXPECT_EQ(hmi_app_id,
- res_ctrl->GetHMIApplicationID(kTestPolicyAppId_, device_id));
+ res_ctrl_->GetHMIApplicationID(kTestPolicyAppId_, device_id));
}
TEST_F(ResumeCtrlTest, IsApplicationSaved) {
- std::string policy_app_id = "policy_app_id";
- std::string device_id = "device_id";
+ const bool is_app_saved = true;
+ EXPECT_CALL(*mock_storage_,
+ IsApplicationSaved(kTestPolicyAppId_, kMacAddress_))
+ .WillOnce(Return(is_app_saved));
+ EXPECT_TRUE(res_ctrl_->IsApplicationSaved(kTestPolicyAppId_, kMacAddress_));
+}
- EXPECT_CALL(*mock_storage, IsApplicationSaved(policy_app_id, device_id))
- .WillOnce(Return(true));
- EXPECT_TRUE(res_ctrl->IsApplicationSaved(policy_app_id, device_id));
+TEST_F(ResumeCtrlTest, OnAppRegistrationStart) {
+ const bool is_app_saved = false;
+ EXPECT_CALL(*mock_storage_,
+ IsApplicationSaved(kTestPolicyAppId_, kMacAddress_))
+ .WillOnce(Return(is_app_saved));
+ res_ctrl_->OnAppRegistrationStart(kTestPolicyAppId_, kMacAddress_);
+}
+
+TEST_F(ResumeCtrlTest, OnAppRegistrationEnd) {
+ const uint32_t timeout = 1000u;
+ EXPECT_CALL(mock_application_manager_settings_,
+ app_resumption_save_persistent_data_timeout())
+ .WillOnce(ReturnRef(timeout));
+ res_ctrl_->OnAppRegistrationEnd();
}
TEST_F(ResumeCtrlTest, CheckPersistenceFiles_WithoutCommandAndChoiceSets) {
@@ -711,10 +832,11 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFiles_WithoutCommandAndChoiceSets) {
saved_app[application_manager::strings::hmi_level] = HMI_FULL;
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_TRUE(res_ctrl->CheckPersistenceFilesForResumption(app_mock));
+ EXPECT_TRUE(res_ctrl_->CheckPersistenceFilesForResumption(app_mock_));
}
TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithCommands) {
@@ -727,14 +849,15 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithCommands) {
test_application_commands;
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
EXPECT_CALL(*application_manager::MockMessageHelper::message_helper_mock(),
VerifyImageFiles(_, _, _))
.WillRepeatedly(Return(mobile_apis::Result::SUCCESS));
- EXPECT_TRUE(res_ctrl->CheckPersistenceFilesForResumption(app_mock));
+ EXPECT_TRUE(res_ctrl_->CheckPersistenceFilesForResumption(app_mock_));
}
TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithChoiceSet) {
@@ -747,16 +870,34 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithChoiceSet) {
test_choice_sets;
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
- .WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_TRUE(res_ctrl->CheckPersistenceFilesForResumption(app_mock));
+ EXPECT_TRUE(res_ctrl_->CheckPersistenceFilesForResumption(app_mock_));
}
// TODO (VVeremjova) APPLINK-16718
TEST_F(ResumeCtrlTest, DISABLED_OnSuspend) {
- EXPECT_CALL(*mock_storage, OnSuspend());
- res_ctrl->OnSuspend();
+ EXPECT_CALL(*mock_storage_, OnSuspend());
+ res_ctrl_->OnSuspend();
+}
+
+TEST_F(ResumeCtrlTest, OnSuspend_EmptyApplicationlist) {
+ utils::SharedPtr<application_manager::Application> mock_app =
+ ::utils::MakeShared<application_manager_test::MockApplication>();
+
+ application_manager::ApplicationSet app_set;
+
+ DataAccessor<application_manager::ApplicationSet> accessor(app_set,
+ app_set_lock_);
+
+ ON_CALL(app_mngr_, applications()).WillByDefault(Return(accessor));
+ EXPECT_CALL(*mock_storage_, SaveApplication(mock_app)).Times(0);
+
+ EXPECT_CALL(*mock_storage_, OnSuspend());
+ EXPECT_CALL(*mock_storage_, Persist());
+ res_ctrl_->OnSuspend();
}
TEST_F(ResumeCtrlTest, OnAwake) {
@@ -764,15 +905,16 @@ TEST_F(ResumeCtrlTest, OnAwake) {
EXPECT_CALL(mock_application_manager_settings_,
app_resumption_save_persistent_data_timeout())
.WillOnce(ReturnRef(timeout));
- EXPECT_CALL(*mock_storage, OnAwake());
- res_ctrl->OnAwake();
+ EXPECT_CALL(*mock_storage_, OnAwake());
+ res_ctrl_->OnAwake();
}
TEST_F(ResumeCtrlTest, RemoveApplicationFromSaved) {
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, RemoveApplicationFromSaved(_, _))
+ EXPECT_CALL(*mock_storage_,
+ RemoveApplicationFromSaved(kTestPolicyAppId_, kMacAddress_))
.WillOnce(Return(true));
- EXPECT_TRUE(res_ctrl->RemoveApplicationFromSaved(app_mock));
+ EXPECT_TRUE(res_ctrl_->RemoveApplicationFromSaved(app_mock_));
}
TEST_F(ResumeCtrlTest, CheckApplicationkHash_) {
@@ -780,18 +922,18 @@ TEST_F(ResumeCtrlTest, CheckApplicationkHash_) {
saved_app[application_manager::strings::hash_id] = kHash_;
GetInfoFromApp();
- EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
- .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_TRUE(res_ctrl->CheckApplicationHash(app_mock, kHash_));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ EXPECT_TRUE(res_ctrl_->CheckApplicationHash(app_mock_, kHash_));
}
TEST_F(ResumeCtrlTest, GetSavedAppHmiLevel_NoAskedApp_INVALID_ENUM) {
- const std::string app_id = "test_app_id";
- const std::string device_id = "test_device_id";
- EXPECT_CALL(*mock_storage, GetSavedApplication(app_id, device_id, _))
- .WillOnce(Return(false));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(Return(false));
EXPECT_EQ(mobile_apis::HMILevel::INVALID_ENUM,
- res_ctrl->GetSavedAppHmiLevel(app_id, device_id));
+ res_ctrl_->GetSavedAppHmiLevel(kTestPolicyAppId_, kMacAddress_));
}
ACTION_P(SetHmiLevel, hmi_level) {
@@ -799,14 +941,14 @@ ACTION_P(SetHmiLevel, hmi_level) {
}
TEST_F(ResumeCtrlTest, GetSavedAppHmiLevel_AskedAppFound_INVALID_ENUM) {
- const std::string app_id = "test_app_id";
- const std::string device_id = "test_device_id";
const mobile_apis::HMILevel::eType hmi_level =
mobile_apis::HMILevel::HMI_FULL;
- EXPECT_CALL(*mock_storage, GetSavedApplication(app_id, device_id, _))
- .WillOnce(DoAll(SetHmiLevel(hmi_level), Return(true)));
- EXPECT_EQ(hmi_level, res_ctrl->GetSavedAppHmiLevel(app_id, device_id));
+ ON_CALL(*mock_storage_,
+ GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
+ .WillByDefault(DoAll(SetHmiLevel(hmi_level), Return(true)));
+ EXPECT_EQ(hmi_level,
+ res_ctrl_->GetSavedAppHmiLevel(kTestPolicyAppId_, kMacAddress_));
}
} // namespace resumption_test
diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml
index 3cabb07d0f..2182496760 100644
--- a/src/components/interfaces/HMI_API.xml
+++ b/src/components/interfaces/HMI_API.xml
@@ -34,7 +34,7 @@
<interfaces name="SmartDeviceLink HMI API">
-<interface name="Common" version="1.5" date="2017-01-16">
+<interface name="Common" version="1.4" date="2016-05-11">
<enum name="Result">
<element name="SUCCESS" value="0"/>
@@ -497,9 +497,6 @@
<element name="phoneNumber">
<description> Optional hone number of intended location / establishment (if applicable) for SendLocation.</description>
</element>
- <element name="audioPassThruIcon">
- <description>The optional image field for AudioPassThru</description>
- </element>
<element name="timeToDestination"/>
<!-- TO DO to be removed -->
<element name="turnText"/>
@@ -542,9 +539,6 @@
<element name="locationImage">
<description>The optional image of a destination / location</description>
</element>
- <element name="audiPassThruIcon">
- <description>The optional image for AudioPassThru</description>
- </element>
</enum>
<enum name="TextAlignment">
@@ -2742,7 +2736,7 @@
</function>
</interface>
-<interface name="UI" version="1.1" date="2017-01-16">
+<interface name="UI" version="1.0" date="2013-04-16">
<function name="Alert" messagetype="request">
<description>Request from SDL to show an alert message on the display.</description>
<param name="alertStrings" type="Common.TextFieldStruct" mandatory="true" array="true" minsize="0" maxsize="3">
@@ -3193,12 +3187,6 @@
If omitted, the value is set to true.
</description>
</param>
- <param name="audioPassThruIcon" type="Common.Image" mandatory="false">
- <description>
- Image struct determinig wheter static or dynamic icon.
- If omitted on supported displays, no (or the default if applicable) icon shall be displayed.
- </description>
- </param>
</function>
<function name="PerformAudioPassThru" messagetype="response">
</function>
diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml
index 4912514fea..3bf347b605 100644
--- a/src/components/interfaces/MOBILE_API.xml
+++ b/src/components/interfaces/MOBILE_API.xml
@@ -747,10 +747,6 @@
<description>The optional image of a destination / location</description>
</element>
- <element name="audioPassThruIcon">
- <description>The optional image field for AudioPassThru</description>
- </element>
-
</enum>
<enum name="CharacterSet">
@@ -3398,10 +3394,6 @@
If omitted, the value is set to true.
</description>
</param>
- <param name="audioPassThruIcon" type="Image" mandatory="false">
- <description>Image struct determinig wheter static or dynamic icon.
- If omitted on supported displays, no (or the default if applicable) icon shall be displayed.</description>
- </param>
</function>
<function name="PerformAudioPassThru" functionID="PerformAudioPassThruID" messagetype="response">