From c9b9ebc2569d079fe44cd2ef16b6909f12fb0301 Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Fri, 21 Aug 2015 13:00:55 +0300 Subject: [PATCH] Change the last queries conatiner to the list. --- search/query_saver.cpp | 5 ++-- search/query_saver.hpp | 8 +++--- search/search_tests/query_saver_tests.cpp | 33 +++++++++++++---------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/search/query_saver.cpp b/search/query_saver.cpp index d6339ca968..2cf765d87e 100644 --- a/search/query_saver.cpp +++ b/search/query_saver.cpp @@ -16,7 +16,6 @@ namespace search { QuerySaver::QuerySaver() { - m_topQueries.reserve(kMaxSuggestCount); Load(); } @@ -30,10 +29,10 @@ void QuerySaver::SaveNewQuery(string const & query) if (it != m_topQueries.end()) m_topQueries.erase(it); else if (m_topQueries.size() >= kMaxSuggestCount) - m_topQueries.erase(m_topQueries.begin()); + m_topQueries.pop_back(); // Add new query and save it to drive. - m_topQueries.push_back(query); + m_topQueries.push_front(query); Save(); } diff --git a/search/query_saver.hpp b/search/query_saver.hpp index 161e0b1923..2d4071d8f0 100644 --- a/search/query_saver.hpp +++ b/search/query_saver.hpp @@ -1,3 +1,4 @@ +#include "std/list.hpp" #include "std/string.hpp" #include "std/vector.hpp" @@ -9,8 +10,9 @@ class QuerySaver public: QuerySaver(); void SaveNewQuery(string const & query); - /// Returns last save query from oldest to newest queries. - vector const & GetTopQueries() const { return m_topQueries; } + /// Returns several last saved queries from newest to oldest query. + /// @see kMaxSuggestCount in implementation file. + list const & GetTopQueries() const { return m_topQueries; } /// Clear last queries storage. All data will be lost. void Clear(); @@ -22,6 +24,6 @@ private: void Save(); void Load(); - vector m_topQueries; + list m_topQueries; }; } // namespace seatch diff --git a/search/search_tests/query_saver_tests.cpp b/search/search_tests/query_saver_tests.cpp index 2c42cb60f4..55c5eb3bd0 100644 --- a/search/search_tests/query_saver_tests.cpp +++ b/search/search_tests/query_saver_tests.cpp @@ -16,16 +16,18 @@ namespace search UNIT_TEST(QuerySaverFogTest) { QuerySaver saver; + saver.Clear(); saver.SaveNewQuery(record1); - vector const & result = saver.GetTopQueries(); + list const & result = saver.GetTopQueries(); TEST_EQUAL(result.size(), 1, ()); - TEST_EQUAL(result[0], record1, ()); + TEST_EQUAL(result.front(), record1, ()); saver.Clear(); } UNIT_TEST(QuerySaverClearTest) { QuerySaver saver; + saver.Clear(); saver.SaveNewQuery(record1); TEST_GREATER(saver.GetTopQueries().size(), 0, ()); saver.Clear(); @@ -35,20 +37,21 @@ UNIT_TEST(QuerySaverClearTest) UNIT_TEST(QuerySaverOrderingTest) { QuerySaver saver; + saver.Clear(); saver.SaveNewQuery(record1); saver.SaveNewQuery(record2); { - vector const & result = saver.GetTopQueries(); + list const & result = saver.GetTopQueries(); TEST_EQUAL(result.size(), 2, ()); - TEST_EQUAL(result[0], record1, ()); - TEST_EQUAL(result[1], record2, ()); + TEST_EQUAL(result.back(), record1, ()); + TEST_EQUAL(result.front(), record2, ()); } saver.SaveNewQuery(record1); { - vector const & result = saver.GetTopQueries(); + list const & result = saver.GetTopQueries(); TEST_EQUAL(result.size(), 2, ()); - TEST_EQUAL(result[1], record1, ()); - TEST_EQUAL(result[0], record2, ()); + TEST_EQUAL(result.front(), record1, ()); + TEST_EQUAL(result.back(), record2, ()); } saver.Clear(); } @@ -56,6 +59,7 @@ UNIT_TEST(QuerySaverOrderingTest) UNIT_TEST(QuerySaverSerializerTest) { QuerySaver saver; + saver.Clear(); saver.SaveNewQuery(record1); saver.SaveNewQuery(record2); vector data; @@ -65,25 +69,26 @@ UNIT_TEST(QuerySaverSerializerTest) TEST_EQUAL(saver.GetTopQueries().size(), 0, ()); saver.Deserialize(string(data.begin(), data.end())); - vector const & result = saver.GetTopQueries(); + list const & result = saver.GetTopQueries(); TEST_EQUAL(result.size(), 2, ()); - TEST_EQUAL(result[0], record1, ()); - TEST_EQUAL(result[1], record2, ()); + TEST_EQUAL(result.back(), record1, ()); + TEST_EQUAL(result.front(), record2, ()); } UNIT_TEST(QuerySaverPersistanceStore) { { QuerySaver saver; + saver.Clear(); saver.SaveNewQuery(record1); saver.SaveNewQuery(record2); } { QuerySaver saver; - vector const & result = saver.GetTopQueries(); + list const & result = saver.GetTopQueries(); TEST_EQUAL(result.size(), 2, ()); - TEST_EQUAL(result[0], record1, ()); - TEST_EQUAL(result[1], record2, ()); + TEST_EQUAL(result.back(), record1, ()); + TEST_EQUAL(result.front(), record2, ()); saver.Clear(); } }