summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAGaliuzov <AGaliuzov@luxoft.com>2016-06-23 05:30:34 -0700
committerGitHub <noreply@github.com>2016-06-23 05:30:34 -0700
commit833cac1b1de464f53d5709904a4ee24634be2936 (patch)
treeeceabb5046166e9b3d3a02fcd76496f88a177390
parent405c303a9ef5238c659374785c4bbdc1140ca564 (diff)
parent48692790e4819261878eed1525d391bdde149ff4 (diff)
downloadsdl_core-833cac1b1de464f53d5709904a4ee24634be2936.tar.gz
Merge pull request #618 from Kozoriz/feature/Cover_resumption_with_unit_tests
Cover resumption with unit tests
-rw-r--r--src/components/application_manager/include/application_manager/resumption/resumption_data_db.h62
-rw-r--r--src/components/application_manager/include/application_manager/resumption/resumption_data_json.h9
-rw-r--r--src/components/application_manager/src/resumption/resumption_data.cc2
-rw-r--r--src/components/application_manager/src/resumption/resumption_data_db.cc60
-rw-r--r--src/components/application_manager/src/resumption/resumption_data_json.cc29
-rw-r--r--src/components/application_manager/test/CMakeLists.txt8
-rw-r--r--src/components/application_manager/test/include/application_manager/resumption_data_test.h4
-rw-r--r--src/components/application_manager/test/include/application_manager/test_resumption_data_db.h2
-rw-r--r--src/components/application_manager/test/resumption/resume_ctrl_test.cc267
-rw-r--r--src/components/application_manager/test/resumption/resumption_data_db_test.cc474
-rw-r--r--src/components/application_manager/test/resumption/resumption_data_json_test.cc31
-rw-r--r--src/components/application_manager/test/resumption_sql_queries_test.cc6
-rw-r--r--src/components/include/test/utils/mock_sql_database.h68
-rw-r--r--src/components/include/utils/sql_database.h128
-rw-r--r--src/components/policy/include/policy/sql_pt_representation.h3
-rw-r--r--src/components/policy/include/policy/sql_wrapper.h44
-rw-r--r--src/components/policy/src/sql_pt_ext_representation.cc2
-rw-r--r--src/components/policy/src/sql_pt_representation.cc34
-rw-r--r--src/components/policy/test/policy_manager_impl_test.cc2
-rw-r--r--src/components/utils/include/utils/json_utils.h2
-rw-r--r--src/components/utils/include/utils/qdb_wrapper/sql_database_impl.h (renamed from src/components/utils/include/utils/qdb_wrapper/sql_database.h)32
-rw-r--r--src/components/utils/include/utils/sql_qt_wrapper/sql_database_impl.h (renamed from src/components/utils/include/utils/sql_qt_wrapper/sql_database.h)17
-rw-r--r--src/components/utils/include/utils/sql_wrapper.h18
-rw-r--r--src/components/utils/include/utils/sqlite_wrapper/sql_database_impl.h (renamed from src/components/utils/include/utils/sqlite_wrapper/sql_database.h)56
-rw-r--r--src/components/utils/src/json_utils.cc4
-rw-r--r--src/components/utils/src/qdb_wrapper/CMakeLists.txt2
-rw-r--r--src/components/utils/src/qdb_wrapper/sql_database_impl.cc (renamed from src/components/utils/src/qdb_wrapper/sql_database.cc)28
-rw-r--r--src/components/utils/src/qdb_wrapper/sql_query.cc2
-rw-r--r--src/components/utils/src/sql_qt_wrapper/CMakeLists.txt2
-rw-r--r--src/components/utils/src/sql_qt_wrapper/sql_database_impl.cc (renamed from src/components/utils/src/sql_qt_wrapper/sql_database.cc)32
-rw-r--r--src/components/utils/src/sql_qt_wrapper/sql_query.cc2
-rw-r--r--src/components/utils/src/sqlite_wrapper/CMakeLists.txt2
-rw-r--r--src/components/utils/src/sqlite_wrapper/sql_database_impl.cc (renamed from src/components/utils/src/sqlite_wrapper/sql_database.cc)52
-rw-r--r--src/components/utils/src/sqlite_wrapper/sql_query.cc2
-rw-r--r--src/components/utils/test/generated_code_with_sqlite_test.cc8
-rw-r--r--src/components/utils/test/include/utils/generated_code_with_sqlite_test.h2
-rw-r--r--src/components/utils/test/qdb_wrapper/sql_database_test.cc4
-rw-r--r--src/components/utils/test/qdb_wrapper/sql_query_test.cc6
-rw-r--r--src/components/utils/test/sqlite_wrapper/sql_database_test.cc50
-rw-r--r--src/components/utils/test/sqlite_wrapper/sql_query_test.cc22
40 files changed, 1126 insertions, 454 deletions
diff --git a/src/components/application_manager/include/application_manager/resumption/resumption_data_db.h b/src/components/application_manager/include/application_manager/resumption/resumption_data_db.h
index 6c10b2e013..ab2a5725c4 100644
--- a/src/components/application_manager/include/application_manager/resumption/resumption_data_db.h
+++ b/src/components/application_manager/include/application_manager/resumption/resumption_data_db.h
@@ -75,6 +75,12 @@ class ResumptionDataDB : public ResumptionData {
DbStorage db_storage,
const application_manager::ApplicationManager& application_manager);
+#ifdef BUILD_TESTS
+ ResumptionDataDB(utils::dbms::SQLDatabase* db,
+ const application_manager::ApplicationManager&
+ application_manager_settings);
+#endif // BUILD_TESTS
+
/**
* @brief allows to destroy ResumptionDataDB object
*/
@@ -85,7 +91,7 @@ class ResumptionDataDB : public ResumptionData {
* @return false if DB doesn't initialize
* otherwise returns true
*/
- virtual bool Init();
+ bool Init() OVERRIDE;
/**
* @brief Save application persistent info for future resuming to db
@@ -97,7 +103,7 @@ class ResumptionDataDB : public ResumptionData {
* @param hmi_app_id - hmi application id
* @return true if exist, otherwise false
*/
- virtual bool IsHMIApplicationIdExist(uint32_t hmi_app_id) const;
+ bool IsHMIApplicationIdExist(uint32_t hmi_app_id) const OVERRIDE;
/**
* @brief Retrieves HMI app ID for the given mobile app ID
* and device ID from stored data.
@@ -105,14 +111,14 @@ class ResumptionDataDB : public ResumptionData {
* @param device_id - contains id of device on which is running application
* @return HMI app ID
*/
- virtual uint32_t GetHMIApplicationID(const std::string& policy_app_id,
- const std::string& device_id) const;
+ uint32_t GetHMIApplicationID(const std::string& policy_app_id,
+ const std::string& device_id) const OVERRIDE;
/**
* @brief Increments ignition counter for all registered applications
* and remember ign_off time stamp
*/
- virtual void OnSuspend();
+ void OnSuspend() OVERRIDE;
/**
* @brief Retrieves hash ID for the given mobile app ID
@@ -124,15 +130,15 @@ class ResumptionDataDB : public ResumptionData {
* @return TRUE if application will be found in saved data otherwise
* returns FALSE
*/
- virtual bool GetHashId(const std::string& policy_app_id,
- const std::string& device_id,
- std::string& hash_id) const;
+ bool GetHashId(const std::string& policy_app_id,
+ const std::string& device_id,
+ std::string& hash_id) const OVERRIDE;
/**
* @brief Decrements ignition counter for all registered applications
* and remember ign_off time stamp
*/
- virtual void OnAwake();
+ void OnAwake() OVERRIDE;
/**
* @brief Retrieves data of saved application for the given mobile app ID
@@ -143,9 +149,10 @@ class ResumptionDataDB : public ResumptionData {
* @return TRUE if application will be found in saved data otherwise
* returns FALSE
*/
- virtual bool GetSavedApplication(const std::string& policy_app_id,
- const std::string& device_id,
- smart_objects::SmartObject& saved_app) const;
+ bool GetSavedApplication(
+ const std::string& policy_app_id,
+ const std::string& device_id,
+ smart_objects::SmartObject& saved_app) const OVERRIDE;
/**
* @brief Remove application from list of saved applications
@@ -153,14 +160,14 @@ class ResumptionDataDB : public ResumptionData {
* @param device_id - contains id of device on which is running application
* @return return true, if success, otherwise return false
*/
- virtual bool RemoveApplicationFromSaved(const std::string& policy_app_id,
- const std::string& device_id);
+ bool RemoveApplicationFromSaved(const std::string& policy_app_id,
+ const std::string& device_id) OVERRIDE;
/**
* @brief Get the last ignition off time from LastState
* @return the last ignition off time from LastState
*/
- virtual uint32_t GetIgnOffTime() const;
+ uint32_t GetIgnOffTime() const OVERRIDE;
/**
* @brief Checks if saved data have application
@@ -168,15 +175,15 @@ class ResumptionDataDB : public ResumptionData {
* @param device_id - contains id of device on which is running application
* @return 0 if saved data contains application otherwise returns -1
*/
- virtual ssize_t IsApplicationSaved(const std::string& policy_app_id,
- const std::string& device_id) const;
+ ssize_t IsApplicationSaved(const std::string& policy_app_id,
+ const std::string& device_id) const OVERRIDE;
/**
* @brief Retrieves data from saved application
* @param will contain data for resume_ctrl
*/
- virtual void GetDataForLoadResumeData(
- smart_objects::SmartObject& saved_data) const;
+ void GetDataForLoadResumeData(
+ smart_objects::SmartObject& saved_data) const OVERRIDE;
/**
* @brief Updates HMI level of saved application
@@ -184,9 +191,9 @@ class ResumptionDataDB : public ResumptionData {
* @param device_id - contains id of device on which is running application
* @param hmi_level - contains hmi level for saved application
*/
- virtual void UpdateHmiLevel(const std::string& policy_app_id,
- const std::string& device_id,
- mobile_apis::HMILevel::eType hmi_level);
+ void UpdateHmiLevel(const std::string& policy_app_id,
+ const std::string& device_id,
+ mobile_apis::HMILevel::eType hmi_level) OVERRIDE;
/**
* @brief Re-creates and re-init DB
@@ -241,17 +248,6 @@ class ResumptionDataDB : public ResumptionData {
const int32_t GetDBVersion() const;
/**
- * @brief Retrieves hmi level from db
- * @param policy_app_id - mobile application id
- * @param device_id - contains id of device on which is running application
- * @param hmi_level - will contains hmi level for saved application
- * @return true if application with mobile id and device id has hmi level
- * otherwise returns false
- */
- bool SelectHMILevel(const std::string& policy_app_id,
- const std::string& device_id,
- int& hmi_level) const;
- /**
* @brief Checks existence HMI id in DB
* @param hmi_app_id - HMI id
* return true if hmiID is same with saved hmiID otherwise returns false
diff --git a/src/components/application_manager/include/application_manager/resumption/resumption_data_json.h b/src/components/application_manager/include/application_manager/resumption/resumption_data_json.h
index b521fe4fc8..a9e8ad7d08 100644
--- a/src/components/application_manager/include/application_manager/resumption/resumption_data_json.h
+++ b/src/components/application_manager/include/application_manager/resumption/resumption_data_json.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Ford Motor Company
+ * Copyright (c) 2016, Ford Motor Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -219,13 +219,6 @@ class ResumptionDataJson : public ResumptionData {
*/
void SetLastIgnOffTime(time_t ign_off_time);
- /*
- * @brief Return true if application resumption data is valid,
- * otherwise false
- * @param index application index in the resumption list
- */
- bool IsResumptionDataValid(uint32_t index) const;
-
LastState& last_state_;
DISALLOW_COPY_AND_ASSIGN(ResumptionDataJson);
};
diff --git a/src/components/application_manager/src/resumption/resumption_data.cc b/src/components/application_manager/src/resumption/resumption_data.cc
index 8e6282fc50..d148f856a6 100644
--- a/src/components/application_manager/src/resumption/resumption_data.cc
+++ b/src/components/application_manager/src/resumption/resumption_data.cc
@@ -191,7 +191,7 @@ smart_objects::SmartObject ResumptionData::GetApplicationFiles(
int i = 0;
for (AppFilesMap::const_iterator file_it = app_files.begin();
file_it != app_files.end();
- file_it++) {
+ ++file_it) {
const AppFile& file = file_it->second;
if (file.is_persistent) {
smart_objects::SmartObject file_data =
diff --git a/src/components/application_manager/src/resumption/resumption_data_db.cc b/src/components/application_manager/src/resumption/resumption_data_db.cc
index 8c9fe7d57f..92e886f5e5 100644
--- a/src/components/application_manager/src/resumption/resumption_data_db.cc
+++ b/src/components/application_manager/src/resumption/resumption_data_db.cc
@@ -61,21 +61,26 @@ ResumptionDataDB::ResumptionDataDB(
: ResumptionData(application_manager) {
if (db_storage == In_File_Storage) {
#ifndef __QNX__
- db_ = new utils::dbms::SQLDatabase(
- file_system::ConcatPath(
- application_manager_.get_settings().app_storage_folder(),
- kDatabaseName),
- "ResumptionDatabase");
+ db_ = new utils::dbms::SQLDatabaseImpl(file_system::ConcatPath(
+ application_manager_.get_settings().app_storage_folder(),
+ kDatabaseName));
#else
- db_ = new utils::dbms::SQLDatabase(kDatabaseName);
+ db_ = new utils::dbms::SQLDatabaseImpl(kDatabaseName);
#endif
} else if (db_storage == In_Memory_Storage) {
- db_ = new utils::dbms::SQLDatabase();
+ db_ = new utils::dbms::SQLDatabaseImpl();
} else {
SDL_ERROR("Get not existed type of database storage");
}
}
+#ifdef BUILD_TESTS
+ResumptionDataDB::ResumptionDataDB(
+ utils::dbms::SQLDatabase* db,
+ const application_manager::ApplicationManager& application_manager)
+ : ResumptionData(application_manager), db_(db) {}
+#endif // BUILD_TESTS
+
ResumptionDataDB::~ResumptionDataDB() {
db_->Close();
delete db_;
@@ -361,15 +366,13 @@ bool ResumptionDataDB::GetSavedApplication(
bool ResumptionDataDB::RemoveApplicationFromSaved(
const std::string& policy_app_id, const std::string& device_id) {
SDL_AUTO_TRACE();
+ bool result = false;
bool application_exist = false;
if (!CheckExistenceApplication(policy_app_id, device_id, application_exist) ||
!application_exist) {
- SDL_ERROR(
- "Problem with access to DB or application does not"
- " exist");
- return false;
+ SDL_ERROR("Problem with access to DB or application does not exist");
+ return result;
}
- bool result = false;
if (DeleteSavedApplication(policy_app_id, device_id)) {
WriteDb();
result = true;
@@ -401,32 +404,6 @@ void ResumptionDataDB::GetDataForLoadResumeData(
SelectDataForLoadResumeData(saved_data);
}
-bool ResumptionDataDB::SelectHMILevel(const std::string& policy_app_id,
- const std::string& device_id,
- int& hmi_level) const {
- SDL_AUTO_TRACE();
- utils::dbms::SQLQuery query_count(db());
- utils::dbms::SQLQuery query_select(db());
- if (query_count.Prepare(kSelectCountHMILevel) &&
- query_select.Prepare(kSelectHMILevel)) {
- /* Positions of binding data for "query_count" and "query_select" :
- field "deviceID" from table "application" = 0
- field "appID" from table "application" = 1 */
- query_count.Bind(0, device_id);
- query_count.Bind(1, policy_app_id);
- query_select.Bind(0, device_id);
- query_select.Bind(1, policy_app_id);
- /* Position of data in "query_select" :
- field "hmiLevel" from table "application" = 0 */
- if (query_count.Exec() && query_count.GetInteger(0) &&
- query_select.Exec()) {
- hmi_level = query_select.GetInteger(0);
- return true;
- }
- }
- return false;
-}
-
bool ResumptionDataDB::CheckExistenceHMIId(uint32_t hmi_app_id) const {
SDL_AUTO_TRACE();
@@ -2721,13 +2698,14 @@ bool ResumptionDataDB::UpdateGrammarID(const std::string& policy_app_id,
}
utils::dbms::SQLDatabase* ResumptionDataDB::db() const {
-#if defined(__QNX__)
- utils::dbms::SQLDatabase* db = new utils::dbms::SQLDatabase(kDatabaseName);
+#ifdef __QNX__
+ utils::dbms::SQLDatabase* db =
+ new utils::dbms::SQLDatabaseImpl(kDatabaseName);
db->Open();
return db;
#else
return db_;
-#endif
+#endif // __QNX__
}
ApplicationParams::ApplicationParams(
diff --git a/src/components/application_manager/src/resumption/resumption_data_json.cc b/src/components/application_manager/src/resumption/resumption_data_json.cc
index bb2faa412c..40262ff114 100644
--- a/src/components/application_manager/src/resumption/resumption_data_json.cc
+++ b/src/components/application_manager/src/resumption/resumption_data_json.cc
@@ -442,31 +442,6 @@ ssize_t ResumptionDataJson::GetObjectIndex(const std::string& policy_app_id,
return -1;
}
-bool ResumptionDataJson::IsResumptionDataValid(uint32_t index) const {
- using namespace app_mngr;
- using namespace utils::json;
- SDL_AUTO_TRACE();
- sync_primitives::AutoLock autolock(resumption_lock_);
- const JsonValueRef json_app = GetSavedApplications()[index];
- if (!json_app.HasMember(strings::app_id) ||
- !json_app.HasMember(strings::ign_off_count) ||
- !json_app.HasMember(strings::hmi_level) ||
- !json_app.HasMember(strings::hmi_app_id) ||
- !json_app.HasMember(strings::time_stamp) ||
- !json_app.HasMember(strings::device_id)) {
- SDL_ERROR("Wrong resumption data");
- return false;
- }
-
- if (json_app.HasMember(strings::hmi_app_id) &&
- 0 >= json_app[strings::hmi_app_id].AsUInt()) {
- SDL_ERROR("Wrong resumption hmi app ID");
- return false;
- }
-
- return true;
-}
-
void ResumptionDataJson::SetSavedApplication(
utils::json::JsonValueRef apps_json) {
SDL_AUTO_TRACE();
@@ -508,9 +483,7 @@ bool ResumptionDataJson::DropAppDataResumption(const std::string& device_id,
application[strings::application_global_properties].Clear();
application[strings::application_subscribtions].Clear();
application[strings::application_files].Clear();
- // Seems there is no interface for json wrapper - needs to be created
- // application.removeMember(strings::grammar_id);
- application[strings::grammar_id].Clear();
+ application.RemoveMember(strings::grammar_id);
SDL_DEBUG("Resumption data for application " << app_id << " with device_id "
<< device_id
<< " has been dropped.");
diff --git a/src/components/application_manager/test/CMakeLists.txt b/src/components/application_manager/test/CMakeLists.txt
index 921d68f28b..947d246be2 100644
--- a/src/components/application_manager/test/CMakeLists.txt
+++ b/src/components/application_manager/test/CMakeLists.txt
@@ -178,10 +178,10 @@
# TODO [AKozoriz] : Fix not buildable tests
set(ResumptionData_SOURCES
- # ${AM_TEST_DIR}/resumption/resumption_data_test.cc
- # ${AM_TEST_DIR}/resumption/resumption_data_db_test.cc
- # ${AM_TEST_DIR}/resumption/resumption_data_json_test.cc
- # ${AM_TEST_DIR}/resumption/resume_ctrl_test.cc
+ ${AM_TEST_DIR}/resumption/resumption_data_test.cc
+ ${AM_TEST_DIR}/resumption/resumption_data_db_test.cc
+ ${AM_TEST_DIR}/resumption/resumption_data_json_test.cc
+ ${AM_TEST_DIR}/resumption/resume_ctrl_test.cc
${AM_TEST_DIR}/mock_message_helper.cc
)
diff --git a/src/components/application_manager/test/include/application_manager/resumption_data_test.h b/src/components/application_manager/test/include/application_manager/resumption_data_test.h
index b648b8ab82..c823299623 100644
--- a/src/components/application_manager/test/include/application_manager/resumption_data_test.h
+++ b/src/components/application_manager/test/include/application_manager/resumption_data_test.h
@@ -62,7 +62,8 @@ using namespace mobile_apis;
class ResumptionDataTest : public ::testing::Test {
protected:
ResumptionDataTest()
- : kCountOfCommands_(5u)
+ : is_subscribed_for_way_points_(false)
+ , kCountOfCommands_(5u)
, kCountOfChoice_(2u)
, kCountOfChoiceSets_(4u)
, kCountOfSubmenues_(3u)
@@ -83,6 +84,7 @@ class ResumptionDataTest : public ::testing::Test {
std::string policy_app_id_;
size_t ign_off_count_;
const size_t tts_chunks_count = 4;
+ bool is_subscribed_for_way_points_;
size_t grammar_id_;
std::string hash_;
diff --git a/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h b/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h
index e10f60afac..b21a2a2b85 100644
--- a/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h
+++ b/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h
@@ -33,7 +33,7 @@
#ifndef SRC_COMPONENTS_APPLICATION_MANAGER_TEST_INCLUDE_APPLICATION_MANAGER_TEST_RESUMPTION_DATA_DB_H_
#define SRC_COMPONENTS_APPLICATION_MANAGER_TEST_INCLUDE_APPLICATION_MANAGER_TEST_RESUMPTION_DATA_DB_H_
-#include "utils/sqlite_wrapper/sql_database.h"
+#include "utils/sql_database.h"
#include "application_manager/resumption/resumption_data_db.h"
#include "application_manager/mock_application_manager_settings.h"
#include "application_manager/mock_application_manager.h"
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 9857072674..1b80131f22 100644
--- a/src/components/application_manager/test/resumption/resume_ctrl_test.cc
+++ b/src/components/application_manager/test/resumption/resume_ctrl_test.cc
@@ -69,28 +69,29 @@ class ResumeCtrlTest : public ::testing::Test {
protected:
ResumeCtrlTest()
: kTestAppId_(10u)
- , kTestPolicyAppId_("test_policy_app_id")
+ , kTestPolicyAppId_("kTestPolicyAppId_")
, kMacAddress_("12345")
, kDefaultTestLevel_(eType::HMI_NONE)
, kCorId_(7u)
, kTestDevId_(5u)
, kTestGrammarId_(10)
, kHash_("saved_hash")
- , kAppResumingTimeout_(30000000u) {}
+ , kAppResumingTimeout_(30000000u)
+ , kTestTimeStamp_(1452074434) {}
virtual void SetUp() OVERRIDE {
- ON_CALL(app_mngr_, event_dispatcher())
+ ON_CALL(mock_app_mngr_, event_dispatcher())
.WillByDefault(ReturnRef(mock_event_dispatcher_));
mock_storage =
::utils::MakeShared<NiceMock<resumption_test::MockResumptionData>>(
- app_mngr_);
+ mock_app_mngr_);
app_mock = utils::MakeShared<NiceMock<MockApplication>>();
- res_ctrl = utils::MakeShared<ResumeCtrl>(app_mngr_);
+ res_ctrl = utils::MakeShared<ResumeCtrl>(mock_app_mngr_);
res_ctrl->set_resumption_storage(mock_storage);
- ON_CALL(app_mngr_, state_controller())
+ ON_CALL(mock_app_mngr_, state_controller())
.WillByDefault(ReturnRef(state_controller_));
- ON_CALL(app_mngr_, get_settings())
+ ON_CALL(mock_app_mngr_, get_settings())
.WillByDefault(ReturnRef(mock_application_manager_settings_));
ON_CALL(mock_application_manager_settings_, use_db_for_resumption())
@@ -109,7 +110,7 @@ class ResumeCtrlTest : public ::testing::Test {
NiceMock<event_engine_test::MockEventDispatcher> mock_event_dispatcher_;
application_manager_test::MockApplicationManagerSettings
mock_application_manager_settings_;
- application_manager_test::MockApplicationManager app_mngr_;
+ application_manager_test::MockApplicationManager mock_app_mngr_;
MockStateController state_controller_;
utils::SharedPtr<ResumeCtrl> res_ctrl;
utils::SharedPtr<NiceMock<resumption_test::MockResumptionData>> mock_storage;
@@ -125,6 +126,8 @@ class ResumeCtrlTest : public ::testing::Test {
const uint32_t kTestGrammarId_;
const std::string kHash_;
const uint32_t kAppResumingTimeout_;
+ const uint32_t kTestTimeStamp_;
+ sync_primitives::Lock app_set_lock_;
};
/**
@@ -138,7 +141,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGrammarId) {
// Check RestoreApplicationData
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
EXPECT_CALL(*mock_storage,
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
@@ -146,7 +149,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGrammarId) {
EXPECT_CALL(*app_mock, UpdateHash());
EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ const bool res = res_ctrl->StartResumption(app_mock, kHash_);
EXPECT_TRUE(res);
}
@@ -162,7 +165,7 @@ TEST_F(ResumeCtrlTest, StartResumption_WithoutGrammarId) {
saved_app[application_manager::strings::hash_id] = kHash_;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
// Check RestoreApplicationData
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
@@ -170,7 +173,7 @@ TEST_F(ResumeCtrlTest, StartResumption_WithoutGrammarId) {
EXPECT_CALL(*app_mock, UpdateHash());
EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_)).Times(0);
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ const bool res = res_ctrl->StartResumption(app_mock, kHash_);
EXPECT_FALSE(res);
}
@@ -209,7 +212,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithFiles) {
test_application_files;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
.WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
@@ -224,7 +227,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);
}
@@ -246,7 +249,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubmenues) {
test_application_submenues;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
.WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
@@ -258,14 +261,14 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubmenues) {
}
smart_objects::SmartObjectList requests;
- EXPECT_CALL(app_mngr_, GetNextHMICorrelationID())
+ EXPECT_CALL(mock_app_mngr_, GetNextHMICorrelationID())
.WillRepeatedly(Return(kCorId_));
EXPECT_CALL(*application_manager::MockMessageHelper::message_helper_mock(),
CreateAddSubMenuRequestToHMI(_, kCorId_))
.WillRepeatedly(Return(requests));
EXPECT_CALL(*app_mock, UpdateHash());
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ const bool res = res_ctrl->StartResumption(app_mock, kHash_);
EXPECT_TRUE(res);
}
@@ -286,7 +289,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithCommands) {
saved_app[application_manager::strings::application_commands] =
test_application_commands;
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
// Check RestoreApplicationData
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
@@ -303,7 +306,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);
}
@@ -337,7 +340,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithChoiceSet) {
application_choice_sets;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
GetInfoFromApp();
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
@@ -354,7 +357,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);
}
@@ -368,7 +371,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGlobalProperties) {
test_global_properties;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
GetInfoFromApp();
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
@@ -382,7 +385,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGlobalProperties) {
EXPECT_CALL(*app_mock, load_global_properties(test_global_properties));
EXPECT_CALL(*app_mock, UpdateHash());
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ const bool res = res_ctrl->StartResumption(app_mock, kHash_);
EXPECT_TRUE(res);
}
@@ -406,7 +409,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscribeOnButtons) {
test_subscriptions;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
GetInfoFromApp();
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
@@ -424,7 +427,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscribeOnButtons) {
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);
}
@@ -450,7 +453,7 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscriptionToIVI) {
test_subscriptions;
// Check RestoreApplicationData
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
GetInfoFromApp();
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
@@ -469,25 +472,44 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithSubscriptionToIVI) {
GetIVISubscriptionRequests(_)).WillRepeatedly(Return(requests));
EXPECT_CALL(*app_mock, UpdateHash());
- bool res = res_ctrl->StartResumption(app_mock, kHash_);
+ 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();
+ EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
+ .Times(2)
+ .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ EXPECT_CALL(*app_mock, set_grammar_id(kTestGrammarId_));
+ EXPECT_CALL(mock_app_mngr_, SubscribeAppForWayPoints(_));
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)).WillOnce(Return(HMI_FULL));
+
+ const bool res = res_ctrl->StartResumption(app_mock, kHash_);
EXPECT_TRUE(res);
}
TEST_F(ResumeCtrlTest, StartResumptionOnlyHMILevel) {
smart_objects::SmartObject saved_app;
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillOnce(Return(kDefaultTestLevel_));
GetInfoFromApp();
EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
.WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- bool res = res_ctrl->StartResumptionOnlyHMILevel(app_mock);
+ const bool res = res_ctrl->StartResumptionOnlyHMILevel(app_mock);
EXPECT_TRUE(res);
}
TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInFull) {
mobile_apis::HMILevel::eType restored_test_type = eType::HMI_FULL;
- uint32_t ign_off_count = 0;
+ const uint32_t ign_off_count = 0;
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;
@@ -501,20 +523,20 @@ TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInFull) {
EXPECT_CALL(*mock_storage, RemoveApplicationFromSaved(_, _))
.WillOnce(Return(true));
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345"))
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345"))
.WillRepeatedly(Return(policy::kDeviceAllowed));
res_ctrl->StartAppHmiStateResumption(app_mock);
}
TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInBackground) {
- uint32_t ign_off_count = 0;
+ const uint32_t ign_off_count = 0;
smart_objects::SmartObject saved_app;
mobile_apis::HMILevel::eType restored_test_type = eType::HMI_BACKGROUND;
saved_app[application_manager::strings::ign_off_count] = ign_off_count;
saved_app[application_manager::strings::hmi_level] = restored_test_type;
- EXPECT_CALL(app_mngr_, state_controller()).Times(0);
+ EXPECT_CALL(mock_app_mngr_, state_controller()).Times(0);
GetInfoFromApp();
EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
.WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
@@ -540,11 +562,11 @@ TEST_F(ResumeCtrlTest, RestoreAppHMIState_RestoreHMILevelFull) {
EXPECT_CALL(*mock_storage, GetSavedApplication(_, _, _))
.WillOnce(DoAll(SetArgReferee<2>(saved_app), Return(true)));
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345"))
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345"))
.WillOnce(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);
}
@@ -553,12 +575,12 @@ TEST_F(ResumeCtrlTest, SetupDefaultHMILevel) {
saved_app[application_manager::strings::hmi_level] = kDefaultTestLevel_;
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillRepeatedly(Return(kDefaultTestLevel_));
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0);
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")).Times(0);
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillOnce(Return(kDefaultTestLevel_));
EXPECT_CALL(state_controller_, SetRegularState(_, kDefaultTestLevel_))
@@ -567,6 +589,33 @@ TEST_F(ResumeCtrlTest, SetupDefaultHMILevel) {
res_ctrl->SetupDefaultHMILevel(app_mock);
}
+TEST_F(ResumeCtrlTest, ApplicationResumptiOnTimer_AppInFull) {
+ EXPECT_CALL(mock_app_mngr_, application(_)).WillRepeatedly(Return(app_mock));
+
+ mobile_apis::HMILevel::eType restored_test_type = eType::HMI_FULL;
+ const uint32_t ign_off_count = 0;
+ 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(mock_app_mngr_, state_controller())
+ .WillOnce(ReturnRef(state_controller_));
+ EXPECT_CALL(state_controller_, SetRegularState(_, restored_test_type))
+ .Times(AtLeast(1));
+ GetInfoFromApp();
+ EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
+ .Times(2)
+ .WillRepeatedly(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+
+ EXPECT_CALL(*mock_storage, RemoveApplicationFromSaved(_, _))
+ .WillOnce(Return(true));
+
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345"))
+ .WillRepeatedly(Return(policy::kDeviceAllowed));
+ res_ctrl->StartAppHmiStateResumption(app_mock);
+}
+
/**
* @brief group of tests which check correct SetAppHMIState
*/
@@ -574,24 +623,25 @@ TEST_F(ResumeCtrlTest, SetupDefaultHMILevel) {
TEST_F(ResumeCtrlTest, SetAppHMIState_HMINone_WithoutCheckPolicy) {
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0);
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")).Times(0);
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);
}
TEST_F(ResumeCtrlTest, SetAppHMIState_HMILimited_WithoutCheckPolicy) {
mobile_apis::HMILevel::eType test_type = eType::HMI_LIMITED;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345")).Times(0);
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")).Times(0);
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);
}
@@ -599,14 +649,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_, GetUserConsentForDevice("12345")).Times(0);
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_)).Times(0);
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345")).Times(0);
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);
}
@@ -614,14 +664,14 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMIFull_WithPolicy_DevAllowed) {
mobile_apis::HMILevel::eType test_type = eType::HMI_FULL;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345"))
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345"))
.WillOnce(Return(policy::kDeviceAllowed));
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);
}
@@ -629,18 +679,47 @@ TEST_F(ResumeCtrlTest, SetAppHMIState_HMIFull_WithPolicy_DevDisallowed) {
mobile_apis::HMILevel::eType test_type = eType::HMI_FULL;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetUserConsentForDevice("12345"))
+ EXPECT_CALL(mock_app_mngr_, GetUserConsentForDevice("12345"))
.WillOnce(Return(policy::kDeviceDisallowed));
EXPECT_CALL(*app_mock, set_is_resuming(true));
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_app_mngr_, GetDefaultHmiLevel(_))
.WillOnce(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::Application> app_sh_mock =
+ ::utils::MakeShared<application_manager_test::MockApplication>();
+
+ application_manager::ApplicationSet app_set;
+ app_set.insert(app_sh_mock);
+
+ DataAccessor<application_manager::ApplicationSet> accessor(app_set,
+ app_set_lock_);
+
+ EXPECT_CALL(mock_app_mngr_, applications()).WillRepeatedly(Return(accessor));
+ EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock)).Times(1);
+ res_ctrl->SaveAllApplications();
+}
+
+TEST_F(ResumeCtrlTest, SaveAllApplications_EmptyApplicationlist) {
+ utils::SharedPtr<application_manager::Application> app_sh_mock =
+ ::utils::MakeShared<application_manager_test::MockApplication>();
+
+ application_manager::ApplicationSet app_set;
+
+ DataAccessor<application_manager::ApplicationSet> accessor(app_set,
+ app_set_lock_);
+
+ EXPECT_CALL(mock_app_mngr_, applications()).WillRepeatedly(Return(accessor));
+ EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock)).Times(0);
+ res_ctrl->SaveAllApplications();
+}
+
TEST_F(ResumeCtrlTest, SaveApplication) {
utils::SharedPtr<application_manager::Application> app_sh_mock =
::utils::MakeShared<application_manager_test::MockApplication>();
@@ -653,13 +732,13 @@ TEST_F(ResumeCtrlTest, OnAppActivated_ResumptionHasStarted) {
smart_objects::SmartObject saved_app;
GetInfoFromApp();
- EXPECT_CALL(app_mngr_, GetDefaultHmiLevel(_))
+ EXPECT_CALL(mock_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_));
- 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 =
@@ -686,27 +765,44 @@ TEST_F(ResumeCtrlTest, IsHMIApplicationIdExist) {
TEST_F(ResumeCtrlTest, GetHMIApplicationID) {
uint32_t hmi_app_id = 10;
- std::string device_id = "test_device_id";
+ const std::string kDeviceId = "test_device_id";
- EXPECT_CALL(*mock_storage, GetHMIApplicationID(kTestPolicyAppId_, device_id))
+ EXPECT_CALL(*mock_storage, GetHMIApplicationID(kTestPolicyAppId_, kDeviceId))
.WillOnce(Return(hmi_app_id));
EXPECT_EQ(hmi_app_id,
- res_ctrl->GetHMIApplicationID(kTestPolicyAppId_, device_id));
+ res_ctrl->GetHMIApplicationID(kTestPolicyAppId_, kDeviceId));
}
TEST_F(ResumeCtrlTest, IsApplicationSaved) {
- std::string policy_app_id = "policy_app_id";
- std::string device_id = "device_id";
+ const std::string kPolicyAppId = "policy_app_id";
+ const std::string kDeviceId = "device_id";
- EXPECT_CALL(*mock_storage, IsApplicationSaved(policy_app_id, device_id))
- .WillOnce(Return(true));
- EXPECT_TRUE(res_ctrl->IsApplicationSaved(policy_app_id, device_id));
+ EXPECT_CALL(*mock_storage, IsApplicationSaved(kPolicyAppId, kDeviceId))
+ .WillOnce(Return(0));
+ EXPECT_TRUE(res_ctrl->IsApplicationSaved(kPolicyAppId, kDeviceId));
+}
+
+TEST_F(ResumeCtrlTest, OnAppRegistrationStart) {
+ const std::string kPolicyAppId = "policy_app_id";
+ const std::string kDeviceId = "device_id";
+
+ EXPECT_CALL(*mock_storage, IsApplicationSaved(kPolicyAppId, kDeviceId))
+ .WillOnce(Return(0));
+ res_ctrl->OnAppRegistrationStart(kPolicyAppId, kDeviceId);
+}
+
+TEST_F(ResumeCtrlTest, OnAppRegistrationEnd) {
+ uint32_t timeout = 10u;
+ EXPECT_CALL(mock_application_manager_settings_,
+ app_resumption_save_persistent_data_timeout())
+ .WillOnce(ReturnRef(timeout));
+ res_ctrl->OnAppRegistrationEnd();
}
TEST_F(ResumeCtrlTest, CheckPersistenceFiles_WithoutCommandAndChoiceSets) {
- uint32_t ign_off_count = 0;
+ const uint32_t kIggnOffCount = 0;
smart_objects::SmartObject saved_app;
- saved_app[application_manager::strings::ign_off_count] = ign_off_count;
+ saved_app[application_manager::strings::ign_off_count] = kIggnOffCount;
saved_app[application_manager::strings::hmi_level] = HMI_FULL;
GetInfoFromApp();
@@ -718,9 +814,9 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFiles_WithoutCommandAndChoiceSets) {
TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithCommands) {
smart_objects::SmartObject test_application_commands;
- uint32_t ign_off_count = 0;
+ const uint32_t kIggnOffCount = 0;
smart_objects::SmartObject saved_app;
- saved_app[application_manager::strings::ign_off_count] = ign_off_count;
+ saved_app[application_manager::strings::ign_off_count] = kIggnOffCount;
saved_app[application_manager::strings::hmi_level] = HMI_FULL;
saved_app[application_manager::strings::application_commands] =
test_application_commands;
@@ -738,9 +834,9 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithCommands) {
TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithChoiceSet) {
smart_objects::SmartObject test_choice_sets;
- uint32_t ign_off_count = 0;
+ const uint32_t kIggnOffCount = 0;
smart_objects::SmartObject saved_app;
- saved_app[application_manager::strings::ign_off_count] = ign_off_count;
+ saved_app[application_manager::strings::ign_off_count] = kIggnOffCount;
saved_app[application_manager::strings::hmi_level] = HMI_FULL;
saved_app[application_manager::strings::application_choice_sets] =
test_choice_sets;
@@ -752,9 +848,38 @@ TEST_F(ResumeCtrlTest, CheckPersistenceFilesForResumption_WithChoiceSet) {
EXPECT_TRUE(res_ctrl->CheckPersistenceFilesForResumption(app_mock));
}
-// TODO (VVeremjova) APPLINK-16718
-TEST_F(ResumeCtrlTest, DISABLED_OnSuspend) {
+TEST_F(ResumeCtrlTest, OnSuspend) {
+ utils::SharedPtr<application_manager::Application> app_sh_mock =
+ ::utils::MakeShared<application_manager_test::MockApplication>();
+
+ application_manager::ApplicationSet app_set;
+ app_set.insert(app_sh_mock);
+
+ DataAccessor<application_manager::ApplicationSet> accessor(app_set,
+ app_set_lock_);
+
+ EXPECT_CALL(mock_app_mngr_, applications()).WillRepeatedly(Return(accessor));
+ EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock)).Times(1);
+
EXPECT_CALL(*mock_storage, OnSuspend());
+ EXPECT_CALL(*mock_storage, Persist());
+ res_ctrl->OnSuspend();
+}
+
+TEST_F(ResumeCtrlTest, OnSuspend_EmptyApplicationlist) {
+ utils::SharedPtr<application_manager::Application> app_sh_mock =
+ ::utils::MakeShared<application_manager_test::MockApplication>();
+
+ application_manager::ApplicationSet app_set;
+
+ DataAccessor<application_manager::ApplicationSet> accessor(app_set,
+ app_set_lock_);
+
+ EXPECT_CALL(mock_app_mngr_, applications()).WillRepeatedly(Return(accessor));
+ EXPECT_CALL(*mock_storage, SaveApplication(app_sh_mock)).Times(0);
+
+ EXPECT_CALL(*mock_storage, OnSuspend());
+ EXPECT_CALL(*mock_storage, Persist());
res_ctrl->OnSuspend();
}
@@ -774,9 +899,11 @@ TEST_F(ResumeCtrlTest, RemoveApplicationFromSaved) {
EXPECT_TRUE(res_ctrl->RemoveApplicationFromSaved(app_mock));
}
-TEST_F(ResumeCtrlTest, CheckApplicationkHash_) {
+TEST_F(ResumeCtrlTest, CheckApplicationHash) {
smart_objects::SmartObject saved_app;
- saved_app[application_manager::strings::hash_id] = kHash_;
+
+ const std::string test_hash = "saved_hash";
+ saved_app[application_manager::strings::hash_id] = test_hash;
GetInfoFromApp();
EXPECT_CALL(*mock_storage, GetSavedApplication(kTestPolicyAppId_, _, _))
diff --git a/src/components/application_manager/test/resumption/resumption_data_db_test.cc b/src/components/application_manager/test/resumption/resumption_data_db_test.cc
index 9e04c869c5..0eddcb5a08 100644
--- a/src/components/application_manager/test/resumption/resumption_data_db_test.cc
+++ b/src/components/application_manager/test/resumption/resumption_data_db_test.cc
@@ -36,7 +36,7 @@
#include "application_manager/mock_application.h"
#include "application_manager/mock_application_manager_settings.h"
#include "interfaces/MOBILE_API.h"
-#include "utils/sqlite_wrapper/sql_database.h"
+#include "utils/sql_database.h"
#include "utils/sqlite_wrapper/sql_query.h"
#include "utils/make_shared.h"
#include "utils/file_system.h"
@@ -46,15 +46,25 @@
#include "application_manager/resumption/resumption_sql_queries.h"
#include "application_manager/resumption/resumption_data_db.h"
+#include "utils/sqlite_wrapper/sql_database_impl.h"
+#include "utils/mock_sql_database.h"
+#include "application_manager/mock_application_manager_settings.h"
+
namespace test {
namespace components {
namespace resumption_test {
using ::testing::NiceMock;
+using ::testing::Return;
+using ::testing::ReturnNull;
using ::testing::ReturnRef;
+using ::testing::_;
using application_manager_test::MockApplication;
+using ::test::components::utils::dbms::MockSQLDatabase;
+
namespace am = application_manager;
+namespace smart_objects = ::NsSmartDeviceLink::NsSmartObjects;
using namespace file_system;
using namespace resumption;
@@ -67,7 +77,8 @@ const std::string kPath =
class ResumptionDataDBTest : public ResumptionDataTest {
protected:
void SetUp() OVERRIDE {
- app_mock = utils::MakeShared<NiceMock<MockApplication> >();
+ app_mock = ::utils::MakeShared<
+ NiceMock<application_manager_test::MockApplication> >();
policy_app_id_ = "test_policy_app_id";
app_id_ = 10;
is_audio_ = true;
@@ -78,19 +89,17 @@ class ResumptionDataDBTest : public ResumptionDataTest {
grammar_id_ = 16;
}
void TearDown() OVERRIDE {
- utils::dbms::SQLQuery query(test_db());
+ ::utils::dbms::SQLQuery query(test_db());
EXPECT_TRUE(query.Prepare(remove_all_tables));
EXPECT_TRUE(query.Exec());
}
static void SetUpTestCase() {
- kDatabaseName = "resumption";
if (is_in_file) {
path_ = "test_storage";
- CreateDirectory(file_system::CurrentWorkingDirectory() + "/" + path_);
- CreateDirectory(kPath);
- test_db_ = new utils::dbms::SQLDatabase(kDatabaseName);
- test_db_->set_path(kPath + "/");
+ CreateDirectory("./" + path_);
+ test_db_ = new ::utils::dbms::SQLDatabaseImpl(kDatabaseName);
+ test_db_->set_path(path_ + "/");
res_db_ = new TestResumptionDataDB(In_File_Storage);
} else {
res_db_ = new TestResumptionDataDB(In_Memory_Storage);
@@ -101,7 +110,7 @@ class ResumptionDataDBTest : public ResumptionDataTest {
EXPECT_TRUE(test_db_->IsReadWrite());
}
- static utils::dbms::SQLDatabase* test_db_;
+ static ::utils::dbms::SQLDatabase* test_db_;
static std::string kDatabaseName;
static std::string path_;
@@ -113,7 +122,7 @@ class ResumptionDataDBTest : public ResumptionDataTest {
delete res_db_;
}
- utils::dbms::SQLDatabase* test_db() {
+ ::utils::dbms::SQLDatabase* test_db() {
return test_db_;
}
std::string path() {
@@ -121,8 +130,8 @@ class ResumptionDataDBTest : public ResumptionDataTest {
}
void SetZeroIgnOffTime() {
- utils::dbms::SQLQuery query(test_db());
- EXPECT_TRUE(query.Prepare(KUpdateLastIgnOffTime));
+ ::utils::dbms::SQLQuery query(test_db());
+ EXPECT_TRUE(query.Prepare(resumption::KUpdateLastIgnOffTime));
query.Bind(0, 0);
EXPECT_TRUE(query.Exec());
}
@@ -180,16 +189,16 @@ class ResumptionDataDBTest : public ResumptionDataTest {
void CheckCharacters(int64_t global_properties_key);
void CheckVRHelpItem(int64_t global_properties_key);
- void BindId(utils::dbms::SQLQuery& query);
+ void BindId(::utils::dbms::SQLQuery& query);
};
-utils::dbms::SQLDatabase* ResumptionDataDBTest::test_db_ = NULL;
+::utils::dbms::SQLDatabase* ResumptionDataDBTest::test_db_ = NULL;
TestResumptionDataDB* ResumptionDataDBTest::res_db_ = NULL;
std::string ResumptionDataDBTest::kDatabaseName = "";
std::string ResumptionDataDBTest::path_ = "";
void ResumptionDataDBTest::CheckSavedDB() {
- utils::dbms::SQLQuery query_checks(test_db());
+ ::utils::dbms::SQLQuery query_checks(test_db());
EXPECT_TRUE(query_checks.Prepare(kChecksResumptionData));
EXPECT_TRUE(query_checks.Exec());
EXPECT_EQ(1, query_checks.GetInteger(0));
@@ -206,7 +215,7 @@ void ResumptionDataDBTest::CheckSavedDB() {
}
void ResumptionDataDBTest::CheckExistenceApplication() {
- utils::dbms::SQLQuery query(test_db());
+ ::utils::dbms::SQLQuery query(test_db());
EXPECT_TRUE(query.Prepare(kCheckApplication));
query.Bind(0, kMacAddress_);
query.Bind(1, policy_app_id_);
@@ -215,7 +224,7 @@ void ResumptionDataDBTest::CheckExistenceApplication() {
}
void ResumptionDataDBTest::CheckAppData() {
- utils::dbms::SQLQuery query(test_db());
+ ::utils::dbms::SQLQuery query(test_db());
EXPECT_TRUE(query.Prepare(kSelectAppTable));
BindId(query);
EXPECT_TRUE(query.Exec());
@@ -233,7 +242,7 @@ void ResumptionDataDBTest::CheckAppData() {
}
void ResumptionDataDBTest::CheckGlobalProportiesData() {
- utils::dbms::SQLQuery select_globalproperties(test_db());
+ ::utils::dbms::SQLQuery select_globalproperties(test_db());
EXPECT_TRUE(select_globalproperties.Prepare(kSelectCountGlobalProperties));
BindId(select_globalproperties);
@@ -263,7 +272,7 @@ void ResumptionDataDBTest::CheckGlobalProportiesData() {
select_globalproperties.GetString(7));
EXPECT_FALSE(select_globalproperties.IsNull(3));
- utils::dbms::SQLQuery select_image(test_db());
+ ::utils::dbms::SQLQuery select_image(test_db());
EXPECT_TRUE(select_image.Prepare(kSelectImage));
select_image.Bind(0, select_globalproperties.GetLongInt(3));
EXPECT_TRUE(select_image.Exec());
@@ -273,7 +282,7 @@ void ResumptionDataDBTest::CheckGlobalProportiesData() {
select_image.GetString(1));
}
if (!select_globalproperties.IsNull(8)) {
- utils::dbms::SQLQuery select_tts_chunk(test_db());
+ ::utils::dbms::SQLQuery select_tts_chunk(test_db());
EXPECT_TRUE(select_tts_chunk.Prepare(kSelectTTSChunk));
select_tts_chunk.Bind(0, select_globalproperties.GetLongInt(8));
EXPECT_TRUE(select_tts_chunk.Exec());
@@ -286,7 +295,7 @@ void ResumptionDataDBTest::CheckGlobalProportiesData() {
help_prompt_idx++;
}
if (!select_globalproperties.IsNull(9)) {
- utils::dbms::SQLQuery select_tts_chunk(test_db());
+ ::utils::dbms::SQLQuery select_tts_chunk(test_db());
EXPECT_TRUE(select_tts_chunk.Prepare(kSelectTTSChunk));
select_tts_chunk.Bind(0, select_globalproperties.GetLongInt(9));
EXPECT_TRUE(select_tts_chunk.Exec());
@@ -304,13 +313,13 @@ void ResumptionDataDBTest::CheckGlobalProportiesData() {
}
}
void ResumptionDataDBTest::CheckVRHelpItem(int64_t global_properties_key) {
- utils::dbms::SQLQuery checks_vrhelp_item(test_db());
+ ::utils::dbms::SQLQuery checks_vrhelp_item(test_db());
EXPECT_TRUE(checks_vrhelp_item.Prepare(kChecksVrHelpItem));
checks_vrhelp_item.Bind(0, global_properties_key);
EXPECT_TRUE(checks_vrhelp_item.Exec());
EXPECT_NE(0, checks_vrhelp_item.GetInteger(0));
if (!checks_vrhelp_item.GetInteger(0)) {
- utils::dbms::SQLQuery select_vrhelp_item(test_db());
+ ::utils::dbms::SQLQuery select_vrhelp_item(test_db());
EXPECT_TRUE(select_vrhelp_item.Prepare(kSelectVrHelpItem));
select_vrhelp_item.Bind(0, global_properties_key);
size_t vr_help_item_idx = 0;
@@ -326,13 +335,13 @@ void ResumptionDataDBTest::CheckVRHelpItem(int64_t global_properties_key) {
}
void ResumptionDataDBTest::CheckCharacters(int64_t global_properties_key) {
- utils::dbms::SQLQuery checks_characters(test_db());
+ ::utils::dbms::SQLQuery checks_characters(test_db());
EXPECT_TRUE(checks_characters.Prepare(kChecksCharacter));
checks_characters.Bind(0, global_properties_key);
EXPECT_TRUE(checks_characters.Exec());
EXPECT_NE(0, checks_characters.GetInteger(0));
if (!checks_characters.GetInteger(0)) {
- utils::dbms::SQLQuery select_characters(test_db());
+ ::utils::dbms::SQLQuery select_characters(test_db());
EXPECT_TRUE(select_characters.Prepare(kSelectCharacter));
select_characters.Bind(0, global_properties_key);
size_t characters_idx = 0;
@@ -346,7 +355,7 @@ void ResumptionDataDBTest::CheckCharacters(int64_t global_properties_key) {
}
void ResumptionDataDBTest::CheckSubmenuData() {
- utils::dbms::SQLQuery select_submenu(test_db());
+ ::utils::dbms::SQLQuery select_submenu(test_db());
EXPECT_TRUE(select_submenu.Prepare(kSelectCountSubMenu));
BindId(select_submenu);
@@ -369,7 +378,7 @@ void ResumptionDataDBTest::CheckSubmenuData() {
}
void ResumptionDataDBTest::CheckCommandsData() {
- utils::dbms::SQLQuery select_commands(test_db());
+ ::utils::dbms::SQLQuery select_commands(test_db());
EXPECT_TRUE(select_commands.Prepare(kSelectCountCommands));
BindId(select_commands);
@@ -418,7 +427,7 @@ void ResumptionDataDBTest::CheckCommandsData() {
}
void ResumptionDataDBTest::CheckChoiceSetData() {
- utils::dbms::SQLQuery select_choice_set(test_db());
+ ::utils::dbms::SQLQuery select_choice_set(test_db());
EXPECT_TRUE(select_choice_set.Prepare(kSelectCountChoiceSet));
BindId(select_choice_set);
EXPECT_TRUE(select_choice_set.Exec());
@@ -469,7 +478,7 @@ void ResumptionDataDBTest::CheckChoiceSetData() {
EXPECT_EQ(tertiary_text, select_choice_set.GetString(7));
EXPECT_FALSE(select_choice_set.IsNull(8));
- utils::dbms::SQLQuery select_image(test_db());
+ ::utils::dbms::SQLQuery select_image(test_db());
EXPECT_TRUE(select_image.Prepare(kSelectImage));
select_image.Bind(0, select_choice_set.GetLongInt(8));
EXPECT_TRUE(select_image.Exec());
@@ -506,7 +515,7 @@ void ResumptionDataDBTest::CheckChoiceSetData() {
}
void ResumptionDataDBTest::CheckAppFilesData() {
- utils::dbms::SQLQuery query(test_db());
+ ::utils::dbms::SQLQuery query(test_db());
EXPECT_TRUE(query.Prepare(kSelectCountFiles));
BindId(query);
EXPECT_TRUE(query.Exec());
@@ -529,13 +538,414 @@ void ResumptionDataDBTest::CheckAppFilesData() {
}
}
-void ResumptionDataDBTest::BindId(utils::dbms::SQLQuery& query) {
+void ResumptionDataDBTest::BindId(::utils::dbms::SQLQuery& query) {
query.Bind(0, policy_app_id_);
query.Bind(1, kMacAddress_);
}
+class ResumptionDBTest_WithMockStorage : public ::testing::Test {
+ public:
+ ResumptionDBTest_WithMockStorage()
+ // Mock database will be destroyed by resumption_data_db in ~Destr.
+ : mock_database_(new MockSQLDatabase()),
+ resumption_data_db_(mock_database_, mock_am_) {}
+
+ void SetUp() OVERRIDE {
+ ON_CALL(mock_am_settings_, attempts_to_open_resumption_db())
+ .WillByDefault(Return(1));
+ ON_CALL(mock_am_settings_, open_attempt_timeout_ms_resumption_db())
+ .WillByDefault(Return(1));
+ ON_CALL(mock_am_, get_settings())
+ .WillByDefault(ReturnRef(mock_am_settings_));
+ }
+ void TearDown() OVERRIDE {
+ EXPECT_CALL(*mock_database_, Close());
+ }
+
+ void InitRealDB() {
+ real_db_.Open();
+
+ EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, conn())
+ .WillRepeatedly(Return(real_db_.conn()));
+
+ EXPECT_TRUE(resumption_data_db_.Init());
+ }
+
+ void ApplicationParamsCreateCalls(MockApplication* mock_app) {
+ EXPECT_CALL(*mock_app, curHash()).WillOnce(ReturnRef(kEmptyString_));
+ EXPECT_CALL(*mock_app, get_grammar_id()).WillOnce(Return(1u));
+ EXPECT_CALL(*mock_app, app_id()).WillRepeatedly(Return(1u));
+ EXPECT_CALL(*mock_app, hmi_app_id()).WillOnce(Return(1u));
+ EXPECT_CALL(*mock_app, IsAudioApplication()).WillOnce(Return(true));
+ EXPECT_CALL(mock_am_, IsAppSubscribedForWayPoints(_))
+ .WillOnce(Return(false));
+ }
+
+ void PrepareApplicationSO(smart_objects::SmartObject& app_data) {
+ app_data[ ::application_manager::strings::app_id] = "1";
+ app_data[ ::application_manager::strings::hash_id] = "1";
+ app_data[ ::application_manager::strings::grammar_id] = 1;
+ app_data[ ::application_manager::strings::connection_key] = 1;
+ app_data[ ::application_manager::strings::hmi_app_id] = 1;
+ app_data[ ::application_manager::strings::hmi_level] = HMILevel::HMI_FULL;
+ app_data[ ::application_manager::strings::is_media_application] = true;
+ app_data[ ::application_manager::strings::subscribed_for_way_points] =
+ false;
+ app_data[ ::application_manager::strings::ign_off_count] = 0;
+ app_data[ ::application_manager::strings::device_id] = "0";
+ }
+
+ void GetCorrectAppData(smart_objects::SmartObject& data) {
+ data =
+ smart_objects::SmartObject(smart_objects::SmartType::SmartType_Array);
+ data[0] = smart_objects::SmartObject(smart_objects::SmartType_Map);
+
+ smart_objects::SmartObject& application_data = data[0];
+
+ application_data["globalProperties"] =
+ smart_objects::SmartObject(smart_objects::SmartType_Map);
+ application_data["applicationFiles"] =
+ smart_objects::SmartObject(smart_objects::SmartType_Array);
+ application_data["applicationSubMenus"] =
+ smart_objects::SmartObject(smart_objects::SmartType_Array);
+ application_data["applicationCommands"] =
+ smart_objects::SmartObject(smart_objects::SmartType_Array);
+ application_data["subscribtions"] =
+ smart_objects::SmartObject(smart_objects::SmartType_Map);
+ application_data["applicationChoiceSets"] =
+ smart_objects::SmartObject(smart_objects::SmartType_Array);
+
+ // Filling app_data with correct application values
+ PrepareApplicationSO(application_data);
+ }
+
+ void TestIncorrectAdditionalAppDataForWriting(const std::string& data_key) {
+ // Processing of Application_data needed real DB frow write
+ InitRealDB();
+ // Correct data smart object
+ smart_objects::SmartObject data;
+ GetCorrectAppData(data);
+ smart_objects::SmartObject& application_data = data[0];
+
+ application_data[data_key][0] = kEmptyString_;
+
+ EXPECT_CALL(*mock_database_, BeginTransaction()).Times(1);
+ EXPECT_CALL(*mock_database_, conn())
+ // Two times return reall db connection to correct writing
+ // of app_data to DB
+ .WillOnce(Return(real_db_.conn()))
+ .WillOnce(Return(real_db_.conn()))
+ // Null connection for unsuccessful processing of FilesData
+ .WillOnce(ReturnNull());
+ EXPECT_CALL(*mock_database_, RollbackTransaction()).Times(1);
+ EXPECT_FALSE(resumption_data_db_.SaveAllData(data));
+ }
+
+ void AddApplicationsToDB(smart_objects::SmartObject& apps) {
+ EXPECT_CALL(*mock_database_, BeginTransaction()).Times(1);
+ EXPECT_CALL(*mock_database_, conn())
+ .WillRepeatedly(Return(real_db_.conn()));
+ EXPECT_CALL(*mock_database_, RollbackTransaction()).Times(0);
+ EXPECT_CALL(*mock_database_, CommitTransaction()).Times(1);
+
+ EXPECT_TRUE(resumption_data_db_.SaveAllData(apps));
+ }
+
+ MockSQLDatabase* mock_database_;
+ NiceMock<application_manager_test::MockApplicationManager> mock_am_;
+ NiceMock<application_manager_test::MockApplicationManagerSettings>
+ mock_am_settings_;
+ ResumptionDataDB resumption_data_db_;
+ ::utils::dbms::SQLDatabaseImpl real_db_;
+ const std::string kEmptyString_ = "";
+};
+
+TEST_F(ResumptionDBTest_WithMockStorage, Init_DBNotOpened_AttemptsOpened) {
+ EXPECT_CALL(*mock_database_, Open())
+ .WillOnce(Return(false))
+ .WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(false));
+
+ EXPECT_FALSE(resumption_data_db_.Init());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage,
+ Init_DBNotOpened_AttemptsNotOpenedToo) {
+ EXPECT_CALL(*mock_database_, Open()).WillRepeatedly(Return(false));
+ EXPECT_CALL(*mock_database_, IsReadWrite()).Times(0);
+
+ EXPECT_FALSE(resumption_data_db_.Init());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, Init_CannotCreateSchema) {
+ EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.Init());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, Init_CannotChecksResumptionData) {
+ ::utils::dbms::SQLDatabaseImpl real_db;
+ real_db.Open();
+
+ EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, conn())
+ .WillOnce(Return(real_db.conn()))
+ .WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.Init());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, Init_CannotInsertInitData) {
+ ::utils::dbms::SQLDatabaseImpl real_db;
+ real_db.Open();
+
+ EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, conn())
+ .WillOnce(Return(real_db.conn()))
+ .WillOnce(Return(real_db.conn()))
+ .WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.Init());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, Init_Positive) {
+ ::utils::dbms::SQLDatabaseImpl real_db;
+ real_db.Open();
+
+ EXPECT_CALL(*mock_database_, Open()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, IsReadWrite()).WillOnce(Return(true));
+ EXPECT_CALL(*mock_database_, conn()).WillRepeatedly(Return(real_db.conn()));
+
+ EXPECT_TRUE(resumption_data_db_.Init());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, RefreshDB_CannotDropSchema) {
+ EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.RefreshDB());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, RefreshDB_CannotCreateSchema) {
+ ::utils::dbms::SQLDatabaseImpl real_db;
+ real_db.Open();
+
+ EXPECT_CALL(*mock_database_, conn())
+ .WillOnce(Return(real_db.conn()))
+ .WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.RefreshDB());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, RefreshDB_CannotInsertInitData) {
+ ::utils::dbms::SQLDatabaseImpl real_db;
+ real_db.Open();
+
+ EXPECT_CALL(*mock_database_, conn())
+ .WillOnce(Return(real_db.conn()))
+ .WillOnce(Return(real_db.conn()))
+ .WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.RefreshDB());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, RefreshDB_Positive) {
+ ::utils::dbms::SQLDatabaseImpl real_db;
+ real_db.Open();
+
+ EXPECT_CALL(*mock_database_, conn()).WillRepeatedly(Return(real_db.conn()));
+
+ EXPECT_TRUE(resumption_data_db_.RefreshDB());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage,
+ IsDBVersionActual_CannotSelectDBVersion) {
+ EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.IsDBVersionActual());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, IsDBVersionActual_Positive) {
+ ::utils::dbms::SQLDatabaseImpl real_db;
+ real_db.Open();
+
+ EXPECT_CALL(*mock_database_, conn()).WillOnce(Return(real_db.conn()));
+
+ EXPECT_FALSE(resumption_data_db_.IsDBVersionActual());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, UpdateDBVersion_CannotPrepare) {
+ EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.UpdateDBVersion());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, UpdateDBVersion_Positive) {
+ ::utils::dbms::SQLDatabaseImpl real_db;
+ real_db.Open();
+
+ EXPECT_CALL(*mock_database_, conn()).WillOnce(Return(real_db.conn()));
+
+ EXPECT_FALSE(resumption_data_db_.UpdateDBVersion());
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage,
+ SaveApplication_AppNotChanged_AppExist) {
+ InitRealDB();
+ MockApplication* app_ptr = new MockApplication();
+ application_manager::ApplicationSharedPtr app_sptr(app_ptr);
+
+ const std::string kPolicyAppId = "1";
+ const std::string kMacAdress = "xx";
+
+ ApplicationParamsCreateCalls(app_ptr);
+
+ EXPECT_CALL(*app_ptr, policy_app_id()).WillRepeatedly(Return(kPolicyAppId));
+ EXPECT_CALL(*app_ptr, mac_address()).WillRepeatedly(ReturnRef(kMacAdress));
+ EXPECT_CALL(*app_ptr, is_application_data_changed())
+ .WillRepeatedly(Return(false));
+ EXPECT_CALL(*app_ptr, hmi_level()).WillRepeatedly(Return(HMILevel::HMI_FULL));
+ EXPECT_CALL(*mock_database_, conn()).WillRepeatedly(Return(real_db_.conn()));
+ EXPECT_CALL(*mock_database_, Backup()).Times(2);
+
+ // App_not exists -> adding it to db
+ resumption_data_db_.SaveApplication(app_sptr);
+ // App exists update it in DB
+ resumption_data_db_.SaveApplication(app_sptr);
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage,
+ SaveApplication_AppNotChanged_AppExist_DBProblem) {
+ InitRealDB();
+ MockApplication* app_ptr = new MockApplication();
+ application_manager::ApplicationSharedPtr app_sptr(app_ptr);
+
+ const std::string kPolicyAppId = "1";
+ const std::string kMacAdress = "xx";
+
+ ApplicationParamsCreateCalls(app_ptr);
+
+ EXPECT_CALL(*app_ptr, policy_app_id()).WillRepeatedly(Return(kPolicyAppId));
+ EXPECT_CALL(*app_ptr, mac_address()).WillRepeatedly(ReturnRef(kMacAdress));
+ EXPECT_CALL(*app_ptr, is_application_data_changed())
+ .WillRepeatedly(Return(false));
+ EXPECT_CALL(*app_ptr, hmi_level()).WillRepeatedly(Return(HMILevel::HMI_FULL));
+ EXPECT_CALL(*mock_database_, conn())
+ .WillOnce(Return(real_db_.conn()))
+ .WillOnce(Return(real_db_.conn()))
+ .WillOnce(Return(real_db_.conn()))
+ .WillOnce(ReturnNull());
+ EXPECT_CALL(*mock_database_, Backup()).Times(1);
+
+ // App_not exists -> adding it to db
+ resumption_data_db_.SaveApplication(app_sptr);
+ // App exists update it in DB
+ resumption_data_db_.SaveApplication(app_sptr);
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_DataNotArray) {
+ smart_objects::SmartObject data(smart_objects::SmartType::SmartType_Map);
+
+ EXPECT_CALL(*mock_database_, BeginTransaction()).Times(0);
+
+ EXPECT_FALSE(resumption_data_db_.SaveAllData(data));
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage,
+ SaveAllData_IncorrectGlobalProperties) {
+ // Correct smart type
+ smart_objects::SmartObject data(smart_objects::SmartType::SmartType_Array);
+ data[0] = smart_objects::SmartObject(smart_objects::SmartType_Map);
+ smart_objects::SmartObject& application_data = data[0];
+
+ application_data["globalProperties"]["property_1"] = 1u;
+
+ EXPECT_CALL(*mock_database_, BeginTransaction()).Times(1);
+ EXPECT_CALL(*mock_database_, RollbackTransaction()).Times(1);
+ // Will create error while processing globalProperties
+ EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull());
+
+ EXPECT_FALSE(resumption_data_db_.SaveAllData(data));
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectApplicationData) {
+ // Correct smart type
+ smart_objects::SmartObject data(smart_objects::SmartType::SmartType_Array);
+ data[0] = smart_objects::SmartObject(smart_objects::SmartType_Map);
+ smart_objects::SmartObject& application_data = data[0];
+ // When global properties empty processing returns true
+ application_data["globalProperties"] =
+ smart_objects::SmartObject(smart_objects::SmartType_Map);
+
+ // App data havent any fields for application (app_id, hmi_level)
+
+ EXPECT_CALL(*mock_database_, BeginTransaction()).Times(1);
+ EXPECT_CALL(*mock_database_, RollbackTransaction()).Times(1);
+
+ EXPECT_FALSE(resumption_data_db_.SaveAllData(data));
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectFilesData) {
+ TestIncorrectAdditionalAppDataForWriting("applicationFiles");
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectSubMenu) {
+ TestIncorrectAdditionalAppDataForWriting("applicationSubMenus");
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectCommandsData) {
+ TestIncorrectAdditionalAppDataForWriting("applicationCommands");
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage,
+ SaveAllData_IncorrectSubscriptionsData) {
+ TestIncorrectAdditionalAppDataForWriting("subscribtions");
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_IncorrectChoiceSetData) {
+ TestIncorrectAdditionalAppDataForWriting("applicationChoiceSets");
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, SaveAllData_Positive) {
+ // Processing of Application_data needed real DB frow write
+ InitRealDB();
+ // Correct smart type
+ smart_objects::SmartObject data;
+ GetCorrectAppData(data);
+
+ AddApplicationsToDB(data);
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, GetAllData_DBProblem) {
+ InitRealDB();
+ EXPECT_CALL(*mock_database_, conn()).WillOnce(ReturnNull());
+
+ smart_objects::SmartObject data;
+ resumption_data_db_.GetAllData(data);
+}
+
+TEST_F(ResumptionDBTest_WithMockStorage, GetAllData_Positive) {
+ InitRealDB();
+ smart_objects::SmartObject input_data;
+ GetCorrectAppData(input_data);
+ AddApplicationsToDB(input_data);
+
+ smart_objects::SmartObject output_data;
+ EXPECT_TRUE(resumption_data_db_.GetAllData(output_data));
+
+ // Timestamp added with writing to DB
+ output_data[0].erase("timeStamp");
+
+ EXPECT_TRUE(input_data == output_data);
+}
+
TEST_F(ResumptionDataDBTest, Init) {
- utils::dbms::SQLQuery query_checks(test_db());
+ ::utils::dbms::SQLQuery query_checks(test_db());
EXPECT_TRUE(res_db()->Init());
diff --git a/src/components/application_manager/test/resumption/resumption_data_json_test.cc b/src/components/application_manager/test/resumption/resumption_data_json_test.cc
index 2bbb146bed..8a2b5a7f24 100644
--- a/src/components/application_manager/test/resumption/resumption_data_json_test.cc
+++ b/src/components/application_manager/test/resumption/resumption_data_json_test.cc
@@ -39,6 +39,7 @@
#include "application_manager/mock_resumption_data.h"
#include "interfaces/MOBILE_API.h"
#include "resumption/last_state.h"
+#include "utils/json_utils.h"
#include "application_manager/resumption_data_test.h"
#include "formatters/CFormatterJsonBase.h"
@@ -78,18 +79,20 @@ class ResumptionDataJsonTest : public ResumptionDataTest {
hmi_level_ = HMILevel::eType::HMI_FULL;
hmi_app_id_ = 8;
ign_off_count_ = 0;
+ is_subscribed_for_way_points_ = true;
}
void CheckSavedJson() {
- Value& dictionary = last_state_.dictionary;
- ASSERT_TRUE(dictionary[am::strings::resumption].isObject());
+ utils::json::JsonValue& dictionary = last_state_.dictionary();
+ // std::cout << dictionary.ToJson() << std::endl;
+ ASSERT_TRUE(dictionary[am::strings::resumption].IsObject());
ASSERT_TRUE(
dictionary[am::strings::resumption][am::strings::resume_app_list]
- .isArray());
- Value& resume_app_list =
+ .IsArray());
+ utils::json::JsonValueRef resume_app_list =
dictionary[am::strings::resumption][am::strings::resume_app_list];
sm::SmartObject res_app_list;
- for (uint32_t i = 0; i < resume_app_list.size(); i++) {
+ for (uint32_t i = 0; i < resume_app_list.Size(); i++) {
Formatters::CFormatterJsonBase::jsonValueToObj(resume_app_list[i],
res_app_list);
CheckSavedApp(res_app_list);
@@ -97,18 +100,14 @@ class ResumptionDataJsonTest : public ResumptionDataTest {
}
void SetZeroIgnOff() {
- Value& dictionary = last_state_.dictionary;
- Value& res = dictionary[am::strings::resumption];
- res[am::strings::last_ign_off_time] = 0;
+ utils::json::JsonValue& dictionary = last_state_.dictionary();
+ utils::json::JsonValueRef res = dictionary[am::strings::resumption];
+ res[am::strings::last_ign_off_time] = 0ll;
last_state_.SaveToFileSystem();
}
resumption::LastState last_state_;
ResumptionDataJson res_json;
-
- application_manager_test::MockApplicationManagerSettings
- mock_application_manager_settings_;
- std::string policy_app_id_;
};
TEST_F(ResumptionDataJsonTest, SaveApplication) {
@@ -224,6 +223,10 @@ TEST_F(ResumptionDataJsonTest, UpdateHmiLevel) {
CheckSavedJson();
}
+TEST_F(ResumptionDataJsonTest, Init) {
+ EXPECT_TRUE(res_json.Init());
+}
+
TEST_F(ResumptionDataJsonTest, IsHMIApplicationIdExist_AppIsSaved) {
PrepareData();
res_json.SaveApplication(app_mock);
@@ -283,6 +286,10 @@ TEST_F(ResumptionDataJsonTest, OnSuspendFourTimes) {
EXPECT_TRUE(-1 != res_json.IsApplicationSaved(policy_app_id_, kMacAddress_));
}
+TEST_F(ResumptionDataJsonTest, Persist) {
+ res_json.Persist();
+}
+
TEST_F(ResumptionDataJsonTest, OnSuspendOnAwake) {
PrepareData();
SetZeroIgnOff();
diff --git a/src/components/application_manager/test/resumption_sql_queries_test.cc b/src/components/application_manager/test/resumption_sql_queries_test.cc
index d02b073099..10c3199d54 100644
--- a/src/components/application_manager/test/resumption_sql_queries_test.cc
+++ b/src/components/application_manager/test/resumption_sql_queries_test.cc
@@ -37,7 +37,8 @@
#include <utility>
#include "gtest/gtest.h"
-#include "utils/sql_wrapper.h"
+#include "utils/sqlite_wrapper/sql_database_impl.h"
+#include "utils/sqlite_wrapper/sql_query.h"
#include "utils/file_system.h"
#include "application_manager/resumption/resumption_sql_queries.h"
#include "policy/sql_pt_queries.h"
@@ -50,6 +51,7 @@ using namespace ::resumption;
using std::string;
using std::pair;
+using utils::dbms::SQLDatabaseImpl;
using utils::dbms::SQLDatabase;
using utils::dbms::SQLQuery;
@@ -114,7 +116,7 @@ class ResumptionSqlQueriesTest : public ::testing::Test {
static const int timeStamp2;
static void SetUpTestCase() {
- db_ = new SQLDatabase(db_path, connection_name);
+ db_ = new SQLDatabaseImpl();
ASSERT_TRUE(db_->Open());
ASSERT_TRUE(db_->IsReadWrite());
SQLQuery query(db_);
diff --git a/src/components/include/test/utils/mock_sql_database.h b/src/components/include/test/utils/mock_sql_database.h
new file mode 100644
index 0000000000..ca121b4828
--- /dev/null
+++ b/src/components/include/test/utils/mock_sql_database.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2016, 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_INCLUDE_TEST_UTILS_MOCK_SQL_DATABASE_H_
+#define SRC_COMPONENTS_INCLUDE_TEST_UTILS_MOCK_SQL_DATABASE_H_
+
+#include <string>
+
+#include "utils/sql_database.h"
+
+struct sqlite3;
+
+namespace test {
+namespace components {
+namespace utils {
+namespace dbms {
+
+class MockSQLDatabase : public ::utils::dbms::SQLDatabase {
+ public:
+ MOCK_METHOD0(Open, bool());
+ MOCK_METHOD0(Close, void());
+ MOCK_METHOD0(BeginTransaction, bool());
+ MOCK_METHOD0(CommitTransaction, bool());
+ MOCK_METHOD0(RollbackTransaction, bool());
+ MOCK_CONST_METHOD0(LastError, ::utils::dbms::SQLError());
+ MOCK_METHOD1(set_path, void(const std::string& path));
+ MOCK_CONST_METHOD0(get_path, std::string());
+ MOCK_METHOD0(IsReadWrite, bool());
+ MOCK_METHOD0(Backup, bool());
+ MOCK_CONST_METHOD0(conn, sqlite3*());
+ MOCK_CONST_METHOD0(HasErrors, bool());
+};
+
+} // namespace dbms
+} // namespace utils
+} // namespace components
+} // namespace test
+
+#endif // SRC_COMPONENTS_INCLUDE_TEST_UTILS_MOCK_SQL_DATABASE_H_
diff --git a/src/components/include/utils/sql_database.h b/src/components/include/utils/sql_database.h
new file mode 100644
index 0000000000..3b87a07f9c
--- /dev/null
+++ b/src/components/include/utils/sql_database.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2016, 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_INCLUDE_UTILS_SQL_DATABASE_H_
+#define SRC_COMPONENTS_INCLUDE_UTILS_SQL_DATABASE_H_
+
+#include <string>
+
+struct sqlite3;
+
+namespace utils {
+namespace dbms {
+
+class SQLQuery;
+class SQLError;
+
+/**
+ * Represents a connection to a database.
+ */
+class SQLDatabase {
+ public:
+ virtual ~SQLDatabase() {}
+ /**
+ * Opens connection to the temporary in-memory database
+ * @return true if successfully
+ */
+ virtual bool Open() = 0;
+
+ /**
+ * Closes connection to the database
+ */
+ virtual void Close() = 0;
+
+ /**
+ * Begins a transaction on the database
+ * @return true if successfully
+ */
+ virtual bool BeginTransaction() = 0;
+
+ /**
+ * Commits a transaction to the database
+ * @return true if successfully
+ */
+ virtual bool CommitTransaction() = 0;
+
+ /**
+ * Rolls back a transaction on the database
+ * @return true if successfully
+ */
+ virtual bool RollbackTransaction() = 0;
+
+ /**
+ * Gets information about the last error that occurred on the database
+ * @return last error
+ */
+ virtual SQLError LastError() const = 0;
+
+ /**
+ * @brief HasErrors Indicate the status of the last executed operation.
+ *
+ * @return true in case last operation has any errors, false otherwise.
+ */
+ virtual bool HasErrors() const = 0;
+
+ /**
+ * Sets path to database
+ * If the database is already opened then need reopen it
+ */
+ virtual void set_path(const std::string& path) = 0;
+
+ /**
+ * @brief get_path databse location path.
+ *
+ * @return the path to the database location
+ */
+ virtual std::string get_path() const = 0;
+
+ /**
+ * Checks if database is read/write
+ * @return true if database is read/write
+ */
+ virtual bool IsReadWrite() = 0;
+
+ /**
+ * Call backup for opened DB
+ */
+ virtual bool Backup() = 0;
+
+ /**
+ * Gets connection to the SQLite database
+ * @return pointer to connection
+ */
+ virtual sqlite3* conn() const = 0;
+};
+
+} // namespace dbms
+} // namespace utils
+
+#endif // SRC_COMPONENTS_INCLUDE_UTILS_SQL_DATABASE_H_
diff --git a/src/components/policy/include/policy/sql_pt_representation.h b/src/components/policy/include/policy/sql_pt_representation.h
index 2710a7d4a5..59529b0b57 100644
--- a/src/components/policy/include/policy/sql_pt_representation.h
+++ b/src/components/policy/include/policy/sql_pt_representation.h
@@ -67,9 +67,12 @@ class Query : public utils::dbms::SQLQuery {
};
class SQLPTRepresentation : public virtual PTRepresentation {
public:
+ SQLPTRepresentation();
+ SQLPTRepresentation(bool in_memory);
SQLPTRepresentation(const std::string& app_storage_folder,
uint16_t attempts_to_open_policy_db,
uint16_t open_attempt_timeout_ms);
+
~SQLPTRepresentation();
virtual void CheckPermissions(const PTString& app_id,
const PTString& hmi_level,
diff --git a/src/components/policy/include/policy/sql_wrapper.h b/src/components/policy/include/policy/sql_wrapper.h
deleted file mode 100644
index ccdaf537b0..0000000000
--- a/src/components/policy/include/policy/sql_wrapper.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- Copyright (c) 2013, Ford Motor Company
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following
- disclaimer in the documentation and/or other materials provided with the
- distribution.
-
- Neither the name of the Ford Motor Company nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_
-#define SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_
-
-#if __QNX__
-#include "utils/qdb_wrapper/sql_database.h"
-#include "utils/qdb_wrapper/sql_query.h"
-#else // __QNX__
-#include "utils/sqlite_wrapper/sql_database.h"
-#include "utils/sqlite_wrapper/sql_query.h"
-#endif // __QNX__
-
-#endif // SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_
diff --git a/src/components/policy/src/sql_pt_ext_representation.cc b/src/components/policy/src/sql_pt_ext_representation.cc
index fb763fd6ee..f32a129797 100644
--- a/src/components/policy/src/sql_pt_ext_representation.cc
+++ b/src/components/policy/src/sql_pt_ext_representation.cc
@@ -33,7 +33,7 @@
#include <utility>
#include "utils/logger.h"
#include "policy/sql_pt_ext_representation.h"
-#include "policy/sql_wrapper.h"
+#include "utils/sql_wrapper.h"
#include "policy/sql_pt_queries.h"
#include "policy/sql_pt_ext_queries.h"
#include "policy/policy_helper.h"
diff --git a/src/components/policy/src/sql_pt_representation.cc b/src/components/policy/src/sql_pt_representation.cc
index 1cbcd6ccf5..afd804c722 100644
--- a/src/components/policy/src/sql_pt_representation.cc
+++ b/src/components/policy/src/sql_pt_representation.cc
@@ -45,7 +45,7 @@
#include "utils/file_system.h"
#include "utils/gen_hash.h"
#include "policy/sql_pt_representation.h"
-#include "policy/sql_wrapper.h"
+#include "utils/sql_wrapper.h"
#include "policy/sql_pt_queries.h"
#include "policy/policy_helper.h"
#include "policy/cache_manager.h"
@@ -69,15 +69,32 @@ void InsertUnique(K value, T* array) {
const char* kDatabaseName = "policy";
} // namespace
+SQLPTRepresentation::SQLPTRepresentation()
+ : db_(new utils::dbms::SQLDatabaseImpl(kDatabaseName)) {
+ is_in_memory = false;
+}
+
+SQLPTRepresentation::SQLPTRepresentation(bool in_memory) {
+ is_in_memory = in_memory;
+#ifdef __QNX__
+ db_ = new utils::dbms::SQLDatabaseImpl(kDatabaseName);
+#else // __QNX__
+ if (in_memory) {
+ db_ = new utils::dbms::SQLDatabaseImpl();
+ } else {
+ db_ = new utils::dbms::SQLDatabaseImpl(kDatabaseName);
+ }
+#endif // __QNX__
+}
+
SQLPTRepresentation::SQLPTRepresentation(const std::string& app_storage_folder,
uint16_t attempts_to_open_policy_db,
uint16_t open_attempt_timeout_ms)
#if defined(__QNX__)
- : db_(new utils::dbms::SQLDatabase(kDatabaseName)
+ : db_(new utils::dbms::SQLDatabaseImpl(kDatabaseName)
#else
- : db_(new utils::dbms::SQLDatabase(
- file_system::ConcatPath(app_storage_folder, kDatabaseName),
- "PolicyDatabase"))
+ : db_(new utils::dbms::SQLDatabaseImpl(
+ file_system::ConcatPath(app_storage_folder, kDatabaseName)))
#endif
{}
@@ -1624,14 +1641,15 @@ const int32_t SQLPTRepresentation::GetDBVersion() const {
}
utils::dbms::SQLDatabase* SQLPTRepresentation::db() const {
-#if defined(__QNX__)
- utils::dbms::SQLDatabase* db = new utils::dbms::SQLDatabase(kDatabaseName);
+#ifdef __QNX__
+ utils::dbms::SQLDatabase* db =
+ new utils::dbms::SQLDatabaseImpl(kDatabaseName);
const bool result = db->Open();
DCHECK(result);
return db;
#else
return db_;
-#endif
+#endif // __QNX__
}
bool SQLPTRepresentation::CopyApplication(const std::string& source,
diff --git a/src/components/policy/test/policy_manager_impl_test.cc b/src/components/policy/test/policy_manager_impl_test.cc
index b5fbdba7bc..c1ff36a61d 100644
--- a/src/components/policy/test/policy_manager_impl_test.cc
+++ b/src/components/policy/test/policy_manager_impl_test.cc
@@ -51,7 +51,9 @@
#include "policy/mock_policy_listener.h"
#include "policy/mock_cache_manager.h"
#include "policy/mock_update_status_manager.h"
+#include "utils/sql_wrapper.h"
+#include "utils/sql_wrapper.h"
#include "utils/macro.h"
#include "utils/file_system.h"
#include "utils/date_time.h"
diff --git a/src/components/utils/include/utils/json_utils.h b/src/components/utils/include/utils/json_utils.h
index f437049a82..2f7d398592 100644
--- a/src/components/utils/include/utils/json_utils.h
+++ b/src/components/utils/include/utils/json_utils.h
@@ -256,6 +256,8 @@ class JsonValueRef {
JsonValueRef Append(const JsonValue& value);
+ void RemoveMember(const char* key);
+
void Clear();
bool IsValid() const;
diff --git a/src/components/utils/include/utils/qdb_wrapper/sql_database.h b/src/components/utils/include/utils/qdb_wrapper/sql_database_impl.h
index 0130e6cf53..bdcc0929f1 100644
--- a/src/components/utils/include/utils/qdb_wrapper/sql_database.h
+++ b/src/components/utils/include/utils/qdb_wrapper/sql_database_impl.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Ford Motor Company
+ * Copyright (c) 2016, Ford Motor Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,11 +30,12 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_H_
-#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_H_
+#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_IMPL_H_
+#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_IMPL_H_
#include <qdb/qdb.h>
#include <string>
+#include "utils/sql_database.h"
#include "qdb_wrapper/sql_error.h"
#include "utils/lock.h"
@@ -46,45 +47,45 @@ class SQLQuery;
/**
* Represents a connection to a database.
*/
-class SQLDatabase {
+class SQLDatabaseImpl : public SQLDatabase {
public:
- explicit SQLDatabase(const std::string& db_name);
- ~SQLDatabase();
+ explicit SQLDatabaseImpl(const std::string& db_name);
+ ~SQLDatabaseImpl();
/**
* Opens connection to the temporary in-memory database
* @return true if successfully
*/
- bool Open();
+ bool Open() OVERRIDE;
/**
* Closes connection to the database
*/
- void Close();
+ void Close() OVERRIDE;
/**
* Begins a transaction on the database
* @return true if successfully
*/
- bool BeginTransaction();
+ bool BeginTransaction() OVERRIDE;
/**
* Commits a transaction to the database
* @return true if successfully
*/
- bool CommitTransaction();
+ bool CommitTransaction() OVERRIDE;
/**
* Rolls back a transaction on the database
* @return true if successfully
*/
- bool RollbackTransaction();
+ bool RollbackTransaction() OVERRIDE;
/**
* Gets information about the last error that occurred on the database
* @return last error
*/
- SQLError LastError() const;
+ SQLError LastError() const OVERRIDE;
/**
* @brief HasErrors Indicate the status of the last executed operation.
@@ -98,12 +99,13 @@ class SQLDatabase {
*/
bool Backup();
- protected:
+ std::string get_path() const OVERRIDE;
+
/**
* Gets connection to the SQLite database
* @return pointer to connection
*/
- qdb_hdl_t* conn() const;
+ qdb_hdl_t* conn() const OVERRIDE;
private:
/**
@@ -139,4 +141,4 @@ class SQLDatabase {
} // namespace dbms
} // namespace utils
-#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_H_
+#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_QDB_WRAPPER_SQL_DATABASE_IMPL_H_
diff --git a/src/components/utils/include/utils/sql_qt_wrapper/sql_database.h b/src/components/utils/include/utils/sql_qt_wrapper/sql_database_impl.h
index d12c4381d4..92d8bc5425 100644
--- a/src/components/utils/include/utils/sql_qt_wrapper/sql_database.h
+++ b/src/components/utils/include/utils/sql_qt_wrapper/sql_database_impl.h
@@ -1,5 +1,5 @@
-#ifndef SRC_COMPONENTS_POLICY_SQLITE_WRAPPER_INCLUDE_SQL_QT_WRAPPER_SQL_DATABASE
-#define SRC_COMPONENTS_POLICY_SQLITE_WRAPPER_INCLUDE_SQL_QT_WRAPPER_SQL_DATABASE
+#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_QT_WRAPPER_SQL_DATABASE_IMPL_H_
+#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_QT_WRAPPER_SQL_DATABASE_IMPL_H_
#include <string>
@@ -7,6 +7,7 @@
#include "utils/lock.h"
#include "utils/sql_qt_wrapper/sql_error.h"
+#include "utils/sql_database.h"
namespace utils {
namespace dbms {
@@ -14,12 +15,12 @@ namespace dbms {
/**
* Represents a connection to a database.
*/
-class SQLDatabase {
+class SQLDatabaseImpl : public SQLDatabase {
public:
- SQLDatabase();
- SQLDatabase(const std::string& database_path,
- const std::string& connection_name);
- ~SQLDatabase();
+ SQLDatabaseImpl();
+ SQLDatabaseImpl(const std::string& database_path,
+ const std::string& connection_name);
+ ~SQLDatabaseImpl();
/**
* Opens connection to the temporary in-memory database
@@ -105,4 +106,4 @@ class SQLDatabase {
} // namespace dbms
} // namespace utils
-#endif // SRC_COMPONENTS_POLICY_SQLITE_WRAPPER_INCLUDE_SQL_QT_WRAPPER_SQL_DATABASE
+#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_QT_WRAPPER_SQL_DATABASE_IMPL_H_
diff --git a/src/components/utils/include/utils/sql_wrapper.h b/src/components/utils/include/utils/sql_wrapper.h
index 4ed7b4e3f3..41e8ad381c 100644
--- a/src/components/utils/include/utils/sql_wrapper.h
+++ b/src/components/utils/include/utils/sql_wrapper.h
@@ -30,18 +30,18 @@
POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_
-#define SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_
+#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_WRAPPER_H_
+#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_WRAPPER_H_
#if __QNX__
-#include "qdb_wrapper/sql_database.h"
-#include "qdb_wrapper/sql_query.h"
+#include "utils/qdb_wrapper/sql_database_impl.h"
+#include "utils/qdb_wrapper/sql_query.h"
#elif defined QT_PORT
-#include "sql_qt_wrapper/sql_database.h"
-#include "sql_qt_wrapper/sql_query.h"
+#include "utils/sql_qt_wrapper/sql_database_impl.h"
+#include "utils/sql_qt_wrapper/sql_query.h"
#else // __QNX__
-#include "sqlite_wrapper/sql_database.h"
-#include "sqlite_wrapper/sql_query.h"
+#include "utils/sqlite_wrapper/sql_database_impl.h"
+#include "utils/sqlite_wrapper/sql_query.h"
#endif // __QNX__
-#endif // SRC_COMPONENTS_POLICY_INCLUDE_POLICY_SQL_WRAPPER_H_
+#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQL_WRAPPER_H_
diff --git a/src/components/utils/include/utils/sqlite_wrapper/sql_database.h b/src/components/utils/include/utils/sqlite_wrapper/sql_database_impl.h
index 5fd3de5fa1..d9984604a9 100644
--- a/src/components/utils/include/utils/sqlite_wrapper/sql_database.h
+++ b/src/components/utils/include/utils/sqlite_wrapper/sql_database_impl.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Ford Motor Company
+ * Copyright (c) 2016, Ford Motor Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,97 +30,94 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_H_
-#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_H_
+#ifndef SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_IMPL_H_
+#define SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_IMPL_H_
#include <string>
+
+#include "utils/sql_database.h"
#include "utils/sqlite_wrapper/sql_error.h"
#include "utils/lock.h"
-struct sqlite3;
-
namespace utils {
namespace dbms {
-
-class SQLQuery;
-
/**
* Represents a connection to a database.
*/
-class SQLDatabase {
+class SQLDatabaseImpl : public SQLDatabase {
public:
- SQLDatabase();
- SQLDatabase(const std::string& database_path,
- const std::string& connection_name);
- ~SQLDatabase();
+ SQLDatabaseImpl();
+ explicit SQLDatabaseImpl(const std::string& filename);
+ ~SQLDatabaseImpl();
/**
* Opens connection to the temporary in-memory database
* @return true if successfully
*/
- bool Open();
+ bool Open() OVERRIDE;
/**
* Closes connection to the database
*/
- void Close();
+ void Close() OVERRIDE;
/**
* Begins a transaction on the database
* @return true if successfully
*/
- bool BeginTransaction();
+ bool BeginTransaction() OVERRIDE;
/**
* Commits a transaction to the database
* @return true if successfully
*/
- bool CommitTransaction();
+ bool CommitTransaction() OVERRIDE;
/**
* Rolls back a transaction on the database
* @return true if successfully
*/
- bool RollbackTransaction();
+ bool RollbackTransaction() OVERRIDE;
/**
* Gets information about the last error that occurred on the database
* @return last error
*/
- SQLError LastError() const;
+ SQLError LastError() const OVERRIDE;
/**
* @brief HasErrors Indicate the status of the last executed operation.
*
* @return true in case last operation has any errors, false otherwise.
*/
- bool HasErrors() const;
+ bool HasErrors() const OVERRIDE;
+
+ void set_path(const std::string& path) OVERRIDE;
/**
* @brief get_path databse location path.
*
* @return the path to the database location
*/
- std::string get_path() const;
+ std::string get_path() const OVERRIDE;
/**
* Checks if database is read/write
* @return true if database is read/write
*/
- bool IsReadWrite();
+ bool IsReadWrite() OVERRIDE;
/**
* Call backup for opened DB
*/
- bool Backup();
+ bool Backup() OVERRIDE;
- protected:
#ifndef QT_PORT
/**
* Gets connection to the SQLite database
* @return pointer to connection
*/
- sqlite3* conn() const;
+ sqlite3* conn() const OVERRIDE;
#endif // QT_PORT
private:
@@ -139,12 +136,7 @@ class SQLDatabase {
/**
* The filename of database
*/
- const std::string database_path_;
-
- /**
- * The database connection name
- */
- const std::string connection_name_;
+ std::string database_name_;
int error_;
@@ -161,4 +153,4 @@ class SQLDatabase {
} // namespace dbms
} // namespace utils
-#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_H_
+#endif // SRC_COMPONENTS_UTILS_INCLUDE_UTILS_SQLITE_WRAPPER_SQL_DATABASE_IMPL_H_
diff --git a/src/components/utils/src/json_utils.cc b/src/components/utils/src/json_utils.cc
index 5c36f5e660..ddb1c7d578 100644
--- a/src/components/utils/src/json_utils.cc
+++ b/src/components/utils/src/json_utils.cc
@@ -140,6 +140,10 @@ utils::json::JsonValueRef::JsonValueRef(JsonValue::Storage& storage,
}
}
+void utils::json::JsonValueRef::RemoveMember(const char* key) {
+ storage_->removeMember(key);
+}
+
void utils::json::JsonValueRef::Clear() {
DCHECK(IsValid());
storage_->clear();
diff --git a/src/components/utils/src/qdb_wrapper/CMakeLists.txt b/src/components/utils/src/qdb_wrapper/CMakeLists.txt
index 6a10c3aa10..abf3ba6516 100644
--- a/src/components/utils/src/qdb_wrapper/CMakeLists.txt
+++ b/src/components/utils/src/qdb_wrapper/CMakeLists.txt
@@ -34,7 +34,7 @@ set(QDB_SRC_DIR ${COMPONENTS_DIR}/utils/src/qdb_wrapper)
include_directories(${COMPONENTS_DIR}/utils/include/)
set(SOURCES
- ${QDB_SRC_DIR}/sql_database.cc
+ ${QDB_SRC_DIR}/sql_database_impl.cc
${QDB_SRC_DIR}/sql_query.cc
${QDB_SRC_DIR}/sql_error.cc
)
diff --git a/src/components/utils/src/qdb_wrapper/sql_database.cc b/src/components/utils/src/qdb_wrapper/sql_database_impl.cc
index 32db4e4469..194d164b47 100644
--- a/src/components/utils/src/qdb_wrapper/sql_database.cc
+++ b/src/components/utils/src/qdb_wrapper/sql_database_impl.cc
@@ -31,7 +31,7 @@
*/
#include <cstring>
-#include "qdb_wrapper/sql_database.h"
+#include "qdb_wrapper/sql_database_impl.h"
#include "utils/logger.h"
namespace utils {
@@ -39,14 +39,14 @@ namespace dbms {
SDL_CREATE_LOGGER("SQLDatabase")
-SQLDatabase::SQLDatabase(const std::string& db_name)
+SQLDatabaseImpl::SQLDatabaseImpl(const std::string& db_name)
: conn_(NULL), db_name_(db_name), error_(Error::OK) {}
-SQLDatabase::~SQLDatabase() {
+SQLDatabaseImpl::~SQLDatabaseImpl() {
Close();
}
-bool SQLDatabase::Open() {
+bool SQLDatabaseImpl::Open() {
sync_primitives::AutoLock auto_lock(conn_lock_);
if (conn_)
return true;
@@ -58,7 +58,7 @@ bool SQLDatabase::Open() {
return true;
}
-void SQLDatabase::Close() {
+void SQLDatabaseImpl::Close() {
sync_primitives::AutoLock auto_lock(conn_lock_);
if (conn_) {
if (qdb_disconnect(conn_) != -1) {
@@ -69,19 +69,19 @@ void SQLDatabase::Close() {
}
}
-bool SQLDatabase::BeginTransaction() {
+bool SQLDatabaseImpl::BeginTransaction() {
return Exec("BEGIN TRANSACTION");
}
-bool SQLDatabase::CommitTransaction() {
+bool SQLDatabaseImpl::CommitTransaction() {
return Exec("COMMIT TRANSACTION");
}
-bool SQLDatabase::RollbackTransaction() {
+bool SQLDatabaseImpl::RollbackTransaction() {
return Exec("ROLLBACK TRANSACTION");
}
-bool SQLDatabase::Exec(const std::string& query) {
+bool SQLDatabaseImpl::Exec(const std::string& query) {
sync_primitives::AutoLock auto_lock(conn_lock_);
if (qdb_statement(conn_, query.c_str()) == -1) {
error_ = Error::ERROR;
@@ -90,7 +90,7 @@ bool SQLDatabase::Exec(const std::string& query) {
return true;
}
-SQLError SQLDatabase::LastError() const {
+SQLError SQLDatabaseImpl::LastError() const {
return SQLError(error_, qdb_geterrmsg(conn_));
}
@@ -98,11 +98,15 @@ bool SQLDatabase::HasErrors() const {
return Error(error_) != OK;
}
-qdb_hdl_t* SQLDatabase::conn() const {
+qdb_hdl_t* SQLDatabaseImpl::conn() const {
return conn_;
}
-bool SQLDatabase::Backup() {
+std::string SQLDatabaseImpl::get_path() const {
+ return db_name_;
+}
+
+bool SQLDatabaseImpl::Backup() {
if (qdb_backup(conn_, QDB_ATTACH_DEFAULT) == -1) {
error_ = Error::ERROR;
SDL_ERROR("Backup returned error: " << std::strerror(errno));
diff --git a/src/components/utils/src/qdb_wrapper/sql_query.cc b/src/components/utils/src/qdb_wrapper/sql_query.cc
index 3ce193c756..4cafae8c3b 100644
--- a/src/components/utils/src/qdb_wrapper/sql_query.cc
+++ b/src/components/utils/src/qdb_wrapper/sql_query.cc
@@ -34,7 +34,7 @@
#include <string.h>
#include <cassert>
#include <algorithm>
-#include "qdb_wrapper/sql_database.h"
+#include "utils/sql_database.h"
#include "utils/logger.h"
#include <errno.h>
diff --git a/src/components/utils/src/sql_qt_wrapper/CMakeLists.txt b/src/components/utils/src/sql_qt_wrapper/CMakeLists.txt
index 4ef122e4de..bb38b97751 100644
--- a/src/components/utils/src/sql_qt_wrapper/CMakeLists.txt
+++ b/src/components/utils/src/sql_qt_wrapper/CMakeLists.txt
@@ -36,7 +36,7 @@ include_directories(
)
set(SOURCES
- ./sql_database.cc
+ ./sql_database_impl.cc
./sql_error.cc
./sql_query.cc
)
diff --git a/src/components/utils/src/sql_qt_wrapper/sql_database.cc b/src/components/utils/src/sql_qt_wrapper/sql_database_impl.cc
index 203cfdaa16..c32859bc31 100644
--- a/src/components/utils/src/sql_qt_wrapper/sql_database.cc
+++ b/src/components/utils/src/sql_qt_wrapper/sql_database_impl.cc
@@ -1,4 +1,4 @@
-#include "sql_qt_wrapper/sql_database.h"
+#include "sql_qt_wrapper/sql_database_impl.h"
#include <QSqlError>
@@ -9,16 +9,16 @@ const QString kDatabaseExtension = ".sqlite";
namespace utils {
namespace dbms {
-SQLDatabase::SQLDatabase() : database_path_() {}
+SQLDatabaseImpl::SQLDatabaseImpl() : database_path_() {}
-SQLDatabase::SQLDatabase(const std::string& database_path,
- const std::string& connection_name)
+SQLDatabaseImpl::SQLDatabaseImpl(const std::string& database_path,
+ const std::string& connection_name)
: database_path_((database_path + kDatabaseExtension.toStdString()).c_str())
, connection_name_(connection_name.c_str()) {
db_ = QSqlDatabase::addDatabase("QSQLITE", connection_name_);
}
-SQLDatabase::~SQLDatabase() {
+SQLDatabaseImpl::~SQLDatabaseImpl() {
Close();
sync_primitives::AutoLock auto_lock(conn_lock_);
/*
@@ -30,57 +30,57 @@ SQLDatabase::~SQLDatabase() {
QSqlDatabase::removeDatabase(connection_name_);
}
-bool SQLDatabase::Open() {
+bool SQLDatabaseImpl::Open() {
sync_primitives::AutoLock auto_lock(conn_lock_);
db_.setDatabaseName(database_path_);
return db_.open();
}
-void SQLDatabase::Close() {
+void SQLDatabaseImpl::Close() {
sync_primitives::AutoLock auto_lock(conn_lock_);
if (db_.isOpen()) {
db_.close();
}
}
-bool SQLDatabase::BeginTransaction() {
+bool SQLDatabaseImpl::BeginTransaction() {
sync_primitives::AutoLock auto_lock(conn_lock_);
return db_.transaction();
}
-bool SQLDatabase::CommitTransaction() {
+bool SQLDatabaseImpl::CommitTransaction() {
sync_primitives::AutoLock auto_lock(conn_lock_);
return db_.commit();
}
-bool SQLDatabase::RollbackTransaction() {
+bool SQLDatabaseImpl::RollbackTransaction() {
sync_primitives::AutoLock auto_lock(conn_lock_);
return db_.rollback();
}
-SQLError SQLDatabase::LastError() const {
+SQLError SQLDatabaseImpl::LastError() const {
sync_primitives::AutoLock auto_lock(conn_lock_);
return SQLError(db_.lastError());
}
-bool SQLDatabase::HasErrors() const {
+bool SQLDatabaseImpl::HasErrors() const {
sync_primitives::AutoLock auto_lock(conn_lock_);
return db_.lastError().type() != QSqlError::NoError;
}
-std::string SQLDatabase::get_path() const {
+std::string SQLDatabaseImpl::get_path() const {
return database_path_.toStdString();
}
-bool SQLDatabase::IsReadWrite() {
+bool SQLDatabaseImpl::IsReadWrite() {
return true;
}
-SQLDatabase::operator QSqlDatabase() const {
+SQLDatabaseImpl::operator QSqlDatabase() const {
return db_;
}
-bool SQLDatabase::Backup() {
+bool SQLDatabaseImpl::Backup() {
return true;
}
diff --git a/src/components/utils/src/sql_qt_wrapper/sql_query.cc b/src/components/utils/src/sql_qt_wrapper/sql_query.cc
index 4aa5b33c43..6cbbe5fe07 100644
--- a/src/components/utils/src/sql_qt_wrapper/sql_query.cc
+++ b/src/components/utils/src/sql_qt_wrapper/sql_query.cc
@@ -41,7 +41,7 @@
#include <cassert>
#include <limits>
-#include "sql_qt_wrapper/sql_database.h"
+#include "utils/sql_database.h"
#include "utils/macro.h"
namespace utils {
diff --git a/src/components/utils/src/sqlite_wrapper/CMakeLists.txt b/src/components/utils/src/sqlite_wrapper/CMakeLists.txt
index 4224376548..dd64d210d6 100644
--- a/src/components/utils/src/sqlite_wrapper/CMakeLists.txt
+++ b/src/components/utils/src/sqlite_wrapper/CMakeLists.txt
@@ -43,7 +43,7 @@ include_directories(
)
set(SOURCES
- ${SQLITE_SRC_DIR}/sql_database.cc
+ ${SQLITE_SRC_DIR}/sql_database_impl.cc
${SQLITE_SRC_DIR}/sql_query.cc
${SQLITE_SRC_DIR}/sql_error.cc
)
diff --git a/src/components/utils/src/sqlite_wrapper/sql_database.cc b/src/components/utils/src/sqlite_wrapper/sql_database_impl.cc
index 4763ddc776..1aacc05c0e 100644
--- a/src/components/utils/src/sqlite_wrapper/sql_database.cc
+++ b/src/components/utils/src/sqlite_wrapper/sql_database_impl.cc
@@ -30,7 +30,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#include "utils/sqlite_wrapper/sql_database.h"
+#include "sqlite_wrapper/sql_database_impl.h"
#include <sqlite3.h>
namespace utils {
@@ -41,36 +41,33 @@ const char* kInMemory = ":memory:";
const char* kExtension = ".sqlite";
} // namespace
-SQLDatabase::SQLDatabase()
- : conn_(NULL), database_path_(kInMemory), error_(SQLITE_OK) {}
+SQLDatabaseImpl::SQLDatabaseImpl()
+ : conn_(NULL), database_name_(kInMemory), error_(SQLITE_OK) {}
-SQLDatabase::SQLDatabase(const std::string& database_path,
- const std::string& connection_name)
- : conn_(NULL)
- , database_path_(database_path + kExtension)
- , connection_name_(connection_name)
- , error_(SQLITE_OK) {}
+SQLDatabaseImpl::SQLDatabaseImpl(const std::string& db_name)
+ : conn_(NULL), database_name_(db_name + kExtension), error_(SQLITE_OK) {}
-SQLDatabase::~SQLDatabase() {
+SQLDatabaseImpl::~SQLDatabaseImpl() {
Close();
}
-bool SQLDatabase::Open() {
+bool SQLDatabaseImpl::Open() {
sync_primitives::AutoLock auto_lock(conn_lock_);
- if (conn_)
+ if (conn_) {
return true;
- error_ = sqlite3_open(database_path_.c_str(), &conn_);
+ }
+ error_ = sqlite3_open(database_name_.c_str(), &conn_);
return error_ == SQLITE_OK;
return true;
}
-bool SQLDatabase::IsReadWrite() {
+bool SQLDatabaseImpl::IsReadWrite() {
const char* schema = "main";
return sqlite3_db_readonly(conn_, schema) == 0;
return true;
}
-void SQLDatabase::Close() {
+void SQLDatabaseImpl::Close() {
if (!conn_) {
return;
}
@@ -82,40 +79,45 @@ void SQLDatabase::Close() {
}
}
-bool SQLDatabase::BeginTransaction() {
+bool SQLDatabaseImpl::BeginTransaction() {
return Exec("BEGIN TRANSACTION");
}
-bool SQLDatabase::CommitTransaction() {
+bool SQLDatabaseImpl::CommitTransaction() {
return Exec("COMMIT TRANSACTION");
}
-bool SQLDatabase::RollbackTransaction() {
+bool SQLDatabaseImpl::RollbackTransaction() {
return Exec("ROLLBACK TRANSACTION");
}
-bool SQLDatabase::Exec(const std::string& query) {
+bool SQLDatabaseImpl::Exec(const std::string& query) {
sync_primitives::AutoLock auto_lock(conn_lock_);
error_ = sqlite3_exec(conn_, query.c_str(), NULL, NULL, NULL);
return error_ == SQLITE_OK;
}
-SQLError SQLDatabase::LastError() const {
+SQLError SQLDatabaseImpl::LastError() const {
return SQLError(Error(error_));
}
-bool SQLDatabase::HasErrors() const {
+bool SQLDatabaseImpl::HasErrors() const {
return Error(error_) != OK;
}
-sqlite3* SQLDatabase::conn() const {
+
+sqlite3* SQLDatabaseImpl::conn() const {
return conn_;
}
-std::string SQLDatabase::get_path() const {
- return database_path_;
+void SQLDatabaseImpl::set_path(const std::string& path) {
+ database_name_ = path + database_name_;
+}
+
+std::string SQLDatabaseImpl::get_path() const {
+ return database_name_;
}
-bool SQLDatabase::Backup() {
+bool SQLDatabaseImpl::Backup() {
return true;
}
} // namespace dbms
diff --git a/src/components/utils/src/sqlite_wrapper/sql_query.cc b/src/components/utils/src/sqlite_wrapper/sql_query.cc
index 14fa0a5313..2369363bb4 100644
--- a/src/components/utils/src/sqlite_wrapper/sql_query.cc
+++ b/src/components/utils/src/sqlite_wrapper/sql_query.cc
@@ -33,7 +33,7 @@
#include "utils/sqlite_wrapper/sql_query.h"
#include <sqlite3.h>
#include <cassert>
-#include "utils/sqlite_wrapper/sql_database.h"
+#include "utils/sql_database.h"
namespace utils {
namespace dbms {
diff --git a/src/components/utils/test/generated_code_with_sqlite_test.cc b/src/components/utils/test/generated_code_with_sqlite_test.cc
index 19a8d1823a..bd46e10b56 100644
--- a/src/components/utils/test/generated_code_with_sqlite_test.cc
+++ b/src/components/utils/test/generated_code_with_sqlite_test.cc
@@ -90,7 +90,7 @@ const std::string GeneratedCodeTest::kGroupsCreation =
TEST_F(GeneratedCodeTest,
FindSectionEndpoints_OpenDBSetDefaultUrl_ExpectDefaultUrl) {
// arrange
- dbms::SQLDatabase db(GeneratedCodeTest::kDatabaseName, "test");
+ utils::dbms::SQLDatabaseImpl db(GeneratedCodeTest::kDatabaseName);
// assert
EXPECT_TRUE(db.Open());
@@ -110,7 +110,7 @@ TEST_F(GeneratedCodeTest,
TEST_F(GeneratedCodeTest,
RemoveSectionEndpoints_RemoveSectionEndpoints_Expect0EndPoints) {
// arrange
- dbms::SQLDatabase db(GeneratedCodeTest::kDatabaseName, "test");
+ utils::dbms::SQLDatabaseImpl db(GeneratedCodeTest::kDatabaseName);
// assert
EXPECT_TRUE(db.Open());
@@ -135,7 +135,7 @@ TEST_F(GeneratedCodeTest,
TEST_F(GeneratedCodeTest,
UpdateSectionEndpoints_SetUrlPoint_ExpectPointEqualsUrl) {
// arrange
- dbms::SQLDatabase db(GeneratedCodeTest::kDatabaseName, "test");
+ utils::dbms::SQLDatabaseImpl db(GeneratedCodeTest::kDatabaseName);
// assert
EXPECT_TRUE(db.Open());
@@ -178,7 +178,7 @@ TEST_F(GeneratedCodeTest,
TEST_F(GeneratedCodeTest,
UpdateSectionAppPolicies_SetAppParams_ExpectDBHasThem) {
// arrange
- dbms::SQLDatabase db(GeneratedCodeTest::kDatabaseName, "test");
+ utils::dbms::SQLDatabaseImpl db(GeneratedCodeTest::kDatabaseName);
// assert
EXPECT_TRUE(db.Open());
diff --git a/src/components/utils/test/include/utils/generated_code_with_sqlite_test.h b/src/components/utils/test/include/utils/generated_code_with_sqlite_test.h
index e21fd75f87..f1888e3f68 100644
--- a/src/components/utils/test/include/utils/generated_code_with_sqlite_test.h
+++ b/src/components/utils/test/include/utils/generated_code_with_sqlite_test.h
@@ -36,7 +36,7 @@
#include "policy/policy_table/types.h"
#include "rpc_base/rpc_base.h"
#include "utils/sqlite_wrapper/sql_query.h"
-#include "utils/sqlite_wrapper/sql_database.h"
+#include "utils/sqlite_wrapper/sql_database_impl.h"
namespace test {
namespace components {
diff --git a/src/components/utils/test/qdb_wrapper/sql_database_test.cc b/src/components/utils/test/qdb_wrapper/sql_database_test.cc
index 4e1a822b57..fd07ffcb67 100644
--- a/src/components/utils/test/qdb_wrapper/sql_database_test.cc
+++ b/src/components/utils/test/qdb_wrapper/sql_database_test.cc
@@ -33,8 +33,8 @@
#include "gtest/gtest.h"
-#include "qdb_wrapper/sql_error.h"
-#include "qdb_wrapper/sql_database.h"
+#include "utils/qdb_wrapper/sql_error.h"
+#include "utils/qdb_wrapper/sql_database_impl.h"
using ::utils::dbms::SQLError;
using ::utils::dbms::SQLDatabase;
diff --git a/src/components/utils/test/qdb_wrapper/sql_query_test.cc b/src/components/utils/test/qdb_wrapper/sql_query_test.cc
index e575e4f575..6109560e68 100644
--- a/src/components/utils/test/qdb_wrapper/sql_query_test.cc
+++ b/src/components/utils/test/qdb_wrapper/sql_query_test.cc
@@ -34,9 +34,9 @@
#include "gtest/gtest.h"
-#include "qdb_wrapper/sql_error.h"
-#include "qdb_wrapper/sql_database.h"
-#include "qdb_wrapper/sql_query.h"
+#include "utils/qdb_wrapper/sql_error.h"
+#include "utils/qdb_wrapper/sql_database_impl.h"
+#include "utils/qdb_wrapper/sql_query.h"
using ::utils::dbms::SQLError;
using ::utils::dbms::SQLDatabase;
diff --git a/src/components/utils/test/sqlite_wrapper/sql_database_test.cc b/src/components/utils/test/sqlite_wrapper/sql_database_test.cc
index 78689aa236..bda887c6d1 100644
--- a/src/components/utils/test/sqlite_wrapper/sql_database_test.cc
+++ b/src/components/utils/test/sqlite_wrapper/sql_database_test.cc
@@ -31,10 +31,10 @@
#include "gtest/gtest.h"
#include "utils/sqlite_wrapper/sql_error.h"
-#include "utils/sqlite_wrapper/sql_database.h"
+#include "utils/sqlite_wrapper/sql_database_impl.h"
using ::utils::dbms::SQLError;
-using ::utils::dbms::SQLDatabase;
+using ::utils::dbms::SQLDatabaseImpl;
namespace test {
namespace components {
@@ -49,9 +49,9 @@ namespace dbms_test {
}
}
-TEST(SQLDatabaseTest, OpenCloseMemory_OpenAndCloseDB_ActsWithoutError) {
+TEST(SQLDatabaseImplTest, OpenCloseMemory_OpenAndCloseDB_ActsWithoutError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
bool ret = db.Open();
// assert
@@ -65,9 +65,10 @@ TEST(SQLDatabaseTest, OpenCloseMemory_OpenAndCloseDB_ActsWithoutError) {
EXPECT_FALSE(IsError(db.LastError()));
}
-TEST(SQLDatabaseTest, OpenCloseFile_OpenAndCloseSpecifiedDB_ActsWithoutError) {
+TEST(SQLDatabaseImplTest,
+ OpenCloseFile_OpenAndCloseSpecifiedDB_ActsWithoutError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db("test-database");
bool ret = db.Open();
// assert
@@ -83,9 +84,9 @@ TEST(SQLDatabaseTest, OpenCloseFile_OpenAndCloseSpecifiedDB_ActsWithoutError) {
remove("test-database.sqlite");
}
-TEST(SQLDatabaseTest, OpenDBTwice_NoError) {
+TEST(SQLDatabaseImplTest, OpenDBTwice_NoError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
bool ret = db.Open();
// assert
@@ -102,9 +103,9 @@ TEST(SQLDatabaseTest, OpenDBTwice_NoError) {
db.Close();
}
-TEST(SQLDatabaseTest, CloseDBTwice_NoError) {
+TEST(SQLDatabaseImplTest, CloseDBTwice_NoError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
bool ret = db.Open();
// assert
@@ -124,19 +125,19 @@ TEST(SQLDatabaseTest, CloseDBTwice_NoError) {
EXPECT_FALSE(IsError(db.LastError()));
}
-TEST(SQLDatabaseTest, Close_DBWasNotOpened_NoError) {
+TEST(SQLDatabaseImplTest, Close_DBWasNotOpened_NoError) {
// act
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
db.Close();
// assert
EXPECT_FALSE(IsError(db.LastError()));
}
-TEST(SQLDatabaseTest,
+TEST(SQLDatabaseImplTest,
CommitTransaction_StartAndCommitTransaction_ExpectActsWithoutError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
// assert
ASSERT_TRUE(db.Open());
@@ -148,10 +149,10 @@ TEST(SQLDatabaseTest,
db.Close();
}
-TEST(SQLDatabaseTest,
+TEST(SQLDatabaseImplTest,
RollbackTransaction_StartAndRollbackTransaction_ExpectActsWithoutError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
// assert
ASSERT_TRUE(db.Open());
@@ -163,10 +164,10 @@ TEST(SQLDatabaseTest,
db.Close();
}
-TEST(SQLDatabaseTest,
+TEST(SQLDatabaseImplTest,
FailedCommitTransaction_CommitTransactionWithoutBeginning_ExpectError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
// assert
ASSERT_TRUE(db.Open());
@@ -177,10 +178,10 @@ TEST(SQLDatabaseTest,
}
TEST(
- SQLDatabaseTest,
+ SQLDatabaseImplTest,
FailedRollbackTransaction_RollbackTransactionWithoutBeginning_ExpectError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
// assert
ASSERT_TRUE(db.Open());
@@ -190,18 +191,19 @@ TEST(
db.Close();
}
-TEST(SQLDatabaseTest, BadTransaction_BeginTransitionWithoutOpenDB_ExpectError) {
+TEST(SQLDatabaseImplTest,
+ BadTransaction_BeginTransitionWithoutOpenDB_ExpectError) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db;
// assert
EXPECT_FALSE(db.BeginTransaction());
EXPECT_TRUE(IsError(db.LastError()));
}
-TEST(SQLDatabaseTest, IsReadWrite_FirstOpenDBIsRWSecondIsNot) {
+TEST(SQLDatabaseImplTest, IsReadWrite_FirstOpenDBIsRWSecondIsNot) {
// arrange
- SQLDatabase db("test-database", "test");
+ SQLDatabaseImpl db("test-database");
// assert
ASSERT_TRUE(db.Open());
diff --git a/src/components/utils/test/sqlite_wrapper/sql_query_test.cc b/src/components/utils/test/sqlite_wrapper/sql_query_test.cc
index 074b4689bc..245b55116c 100644
--- a/src/components/utils/test/sqlite_wrapper/sql_query_test.cc
+++ b/src/components/utils/test/sqlite_wrapper/sql_query_test.cc
@@ -35,11 +35,11 @@
#include "gtest/gtest.h"
#include "utils/sqlite_wrapper/sql_error.h"
-#include "utils/sqlite_wrapper/sql_database.h"
+#include "utils/sqlite_wrapper/sql_database_impl.h"
#include "utils/sqlite_wrapper/sql_query.h"
using ::utils::dbms::SQLError;
-using ::utils::dbms::SQLDatabase;
+using ::utils::dbms::SQLDatabaseImpl;
using ::utils::dbms::SQLQuery;
namespace test {
@@ -102,7 +102,7 @@ const std::string SQLQueryTest::kDatabaseName = "test-query";
TEST_F(SQLQueryTest, Query_CreateQuery_QueryInDBEqualCreated) {
// arrange
const std::string kSelect("SELECT * FROM testTable WHERE integerValue = ?");
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
// assert
ASSERT_TRUE(db.Open());
@@ -121,7 +121,7 @@ TEST_F(SQLQueryTest, ExecString_ExecuteQuery_ActWithoutError) {
"INSERT INTO testTable"
" (integerValue, doubleValue, stringValue)"
" VALUES(2, 3.4, 'five-пять')");
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
// assert
ASSERT_TRUE(db.Open());
@@ -146,7 +146,7 @@ TEST_F(SQLQueryTest,
const double kDoubleValue = 2.3;
const std::string kStringValue = "four";
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
// assert
ASSERT_TRUE(db.Open());
@@ -217,7 +217,7 @@ TEST_F(SQLQueryTest, SetValue_InsertValues_ExpectDBHasInsertedValues) {
const double kDoubleValue = 2.3;
const std::string kStringValue = "four";
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
// assert
ASSERT_TRUE(db.Open());
@@ -242,7 +242,7 @@ TEST_F(SQLQueryTest, EmptySelect_SelectValuesEqual0_ExecWithoutErrors) {
const std::string kSelect(
"SELECT integerValue, doubleValue, stringValue"
" FROM testTable WHERE 0");
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
// assert
ASSERT_TRUE(db.Open());
@@ -278,7 +278,7 @@ TEST_F(
const double kDoubleValue = 2.3;
const std::string kStringValue = "four";
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
ASSERT_TRUE(db.Open());
SQLQuery query(&db);
@@ -314,7 +314,7 @@ TEST_F(SQLQueryTest, LastInsertId_InsertValuesAndBindQuery_GetExpectedId) {
const std::string kInsert("INSERT INTO idTable (value) VALUES(?)");
// act
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
// assert
ASSERT_TRUE(db.Open());
@@ -343,7 +343,7 @@ TEST_F(SQLQueryTest, BindNull_BindWithoutValue_ActWithoutErrors) {
const std::string kInsert(
"INSERT INTO testTable (`integerValue`)"
" VALUES (?)");
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
// assert
ASSERT_TRUE(db.Open());
@@ -362,7 +362,7 @@ TEST_F(SQLQueryTest, BindNull_BindWithoutValue_ActWithoutErrors) {
TEST_F(SQLQueryTest, DoublePrepare_TwicePrepareQuery_ActWithoutErrors) {
// arrange
- SQLDatabase db(kDatabaseName, "test");
+ SQLDatabaseImpl db(kDatabaseName);
// assert
ASSERT_TRUE(db.Open());
// act