From a75dbec3831cae0b4b05cc45b81822d0d9f014a6 Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Fri, 21 Aug 2015 13:37:44 +0300 Subject: [PATCH] PR fixes. --- map/framework.hpp | 9 ++--- search/query_saver.cpp | 40 +++++++++++------------ search/query_saver.hpp | 8 ++--- search/search_tests/query_saver_tests.cpp | 36 ++++++++++---------- 4 files changed, 46 insertions(+), 47 deletions(-) diff --git a/map/framework.hpp b/map/framework.hpp index e407066188..91c5cc2e81 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -51,10 +51,11 @@ #include "base/strings_bundle.hpp" #include "base/thread_checker.hpp" -#include "std/vector.hpp" +#include "std/list.hpp" #include "std/shared_ptr.hpp" -#include "std/unique_ptr.hpp" #include "std/target_os.hpp" +#include "std/unique_ptr.hpp" +#include "std/vector.hpp" namespace search { @@ -347,8 +348,8 @@ public: bool IsISActive() const { return !m_lastSearch.m_query.empty(); } void CancelInteractiveSearch(); - vector const & GetLastSearchQueries() const { return m_searchQuerySaver.GetTopQueries(); } - void SaveSearchQuery(string const & query) { m_searchQuerySaver.SaveNewQuery(query); } + list const & GetLastSearchQueries() const { return m_searchQuerySaver.Get(); } + void SaveSearchQuery(string const & query) { m_searchQuerySaver.Add(query); } /// Calculate distance and direction to POI for the given position. /// @param[in] point POI's position; diff --git a/search/query_saver.cpp b/search/query_saver.cpp index 2cf765d87e..c5a4acce7c 100644 --- a/search/query_saver.cpp +++ b/search/query_saver.cpp @@ -10,6 +10,8 @@ namespace { size_t constexpr kMaxSuggestCount = 10; char constexpr kSettingsKey[] = "UserQueries"; +using TLength = uint16_t; +size_t constexpr kLengthTypeSize = sizeof(TLength); } // namespace namespace search @@ -19,7 +21,7 @@ QuerySaver::QuerySaver() Load(); } -void QuerySaver::SaveNewQuery(string const & query) +void QuerySaver::Add(string const & query) { if (query.empty()) return; @@ -42,46 +44,43 @@ void QuerySaver::Clear() Settings::Delete(kSettingsKey); } -void QuerySaver::Serialize(vector & data) const +void QuerySaver::Serialize(vector & data) const { data.clear(); - MemWriter> writer(data); - uint16_t size = m_topQueries.size(); - writer.Write(&size, 2); + MemWriter> writer(data); + TLength size = m_topQueries.size(); + writer.Write(&size, kLengthTypeSize); for (auto const & query : m_topQueries) { size = query.size(); - writer.Write(&size, 2); + writer.Write(&size, kLengthTypeSize); writer.Write(query.c_str(), size); } } void QuerySaver::Deserialize(string const & data) { - MemReader reader(data.c_str(), data.size()); + MemReader rawReader(data.c_str(), data.size()); + ReaderSource reader(rawReader); - uint16_t queriesCount; - reader.Read(0 /* pos */, &queriesCount, 2); + TLength queriesCount; + reader.Read(&queriesCount, kLengthTypeSize); - size_t pos = 2; - for (int i = 0; i < queriesCount; ++i) + for (TLength i = 0; i < queriesCount; ++i) { - uint16_t stringLength; - reader.Read(pos, &stringLength, 2); - pos += 2; + TLength stringLength; + reader.Read(&stringLength, kLengthTypeSize); vector str(stringLength); - reader.Read(pos, &str[0], stringLength); - pos += stringLength; + reader.Read(&str[0], stringLength); m_topQueries.emplace_back(&str[0], stringLength); } } void QuerySaver::Save() { - vector data; + vector data; Serialize(data); - string hexData = ToHex(&data[0], data.size()); - Settings::Set(kSettingsKey, hexData); + Settings::Set(kSettingsKey, ToHex(&data[0], data.size())); } void QuerySaver::Load() @@ -90,7 +89,6 @@ void QuerySaver::Load() Settings::Get(kSettingsKey, hexData); if (hexData.empty()) return; - string rawData = FromHex(hexData); - Deserialize(rawData); + Deserialize(FromHex(hexData)); } } // namesapce search diff --git a/search/query_saver.hpp b/search/query_saver.hpp index 2d4071d8f0..78d858c113 100644 --- a/search/query_saver.hpp +++ b/search/query_saver.hpp @@ -9,16 +9,16 @@ class QuerySaver { public: QuerySaver(); - void SaveNewQuery(string const & query); + void Add(string const & query); /// Returns several last saved queries from newest to oldest query. /// @see kMaxSuggestCount in implementation file. - list const & GetTopQueries() const { return m_topQueries; } + list const & Get() const { return m_topQueries; } /// Clear last queries storage. All data will be lost. void Clear(); private: friend void UnitTest_QuerySaverSerializerTest(); - void Serialize(vector & data) const; + void Serialize(vector & data) const; void Deserialize(string const & data); void Save(); @@ -26,4 +26,4 @@ private: list m_topQueries; }; -} // namespace seatch +} // namespace search diff --git a/search/search_tests/query_saver_tests.cpp b/search/search_tests/query_saver_tests.cpp index 55c5eb3bd0..169cd5df54 100644 --- a/search/search_tests/query_saver_tests.cpp +++ b/search/search_tests/query_saver_tests.cpp @@ -17,8 +17,8 @@ UNIT_TEST(QuerySaverFogTest) { QuerySaver saver; saver.Clear(); - saver.SaveNewQuery(record1); - list const & result = saver.GetTopQueries(); + saver.Add(record1); + list const & result = saver.Get(); TEST_EQUAL(result.size(), 1, ()); TEST_EQUAL(result.front(), record1, ()); saver.Clear(); @@ -28,27 +28,27 @@ UNIT_TEST(QuerySaverClearTest) { QuerySaver saver; saver.Clear(); - saver.SaveNewQuery(record1); - TEST_GREATER(saver.GetTopQueries().size(), 0, ()); + saver.Add(record1); + TEST_GREATER(saver.Get().size(), 0, ()); saver.Clear(); - TEST_EQUAL(saver.GetTopQueries().size(), 0, ()); + TEST_EQUAL(saver.Get().size(), 0, ()); } UNIT_TEST(QuerySaverOrderingTest) { QuerySaver saver; saver.Clear(); - saver.SaveNewQuery(record1); - saver.SaveNewQuery(record2); + saver.Add(record1); + saver.Add(record2); { - list const & result = saver.GetTopQueries(); + list const & result = saver.Get(); TEST_EQUAL(result.size(), 2, ()); TEST_EQUAL(result.back(), record1, ()); TEST_EQUAL(result.front(), record2, ()); } - saver.SaveNewQuery(record1); + saver.Add(record1); { - list const & result = saver.GetTopQueries(); + list const & result = saver.Get(); TEST_EQUAL(result.size(), 2, ()); TEST_EQUAL(result.front(), record1, ()); TEST_EQUAL(result.back(), record2, ()); @@ -60,16 +60,16 @@ UNIT_TEST(QuerySaverSerializerTest) { QuerySaver saver; saver.Clear(); - saver.SaveNewQuery(record1); - saver.SaveNewQuery(record2); - vector data; + saver.Add(record1); + saver.Add(record2); + vector data; saver.Serialize(data); TEST_GREATER(data.size(), 0, ()); saver.Clear(); - TEST_EQUAL(saver.GetTopQueries().size(), 0, ()); + TEST_EQUAL(saver.Get().size(), 0, ()); saver.Deserialize(string(data.begin(), data.end())); - list const & result = saver.GetTopQueries(); + list const & result = saver.Get(); TEST_EQUAL(result.size(), 2, ()); TEST_EQUAL(result.back(), record1, ()); TEST_EQUAL(result.front(), record2, ()); @@ -80,12 +80,12 @@ UNIT_TEST(QuerySaverPersistanceStore) { QuerySaver saver; saver.Clear(); - saver.SaveNewQuery(record1); - saver.SaveNewQuery(record2); + saver.Add(record1); + saver.Add(record2); } { QuerySaver saver; - list const & result = saver.GetTopQueries(); + list const & result = saver.Get(); TEST_EQUAL(result.size(), 2, ()); TEST_EQUAL(result.back(), record1, ()); TEST_EQUAL(result.front(), record2, ());