Index: chrome/browser/autocomplete/scored_history_match_builder_impl_unittest.cc |
diff --git a/chrome/browser/autocomplete/scored_history_match_builder_impl_unittest.cc b/chrome/browser/autocomplete/scored_history_match_builder_impl_unittest.cc |
index 774735d31143191c837670610ccbd5bfd2df706b..406beeee81f769ea0131180f20dcee6f713c1202 100644 |
--- a/chrome/browser/autocomplete/scored_history_match_builder_impl_unittest.cc |
+++ b/chrome/browser/autocomplete/scored_history_match_builder_impl_unittest.cc |
@@ -10,9 +10,12 @@ |
#include "base/strings/string16.h" |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/autocomplete/scored_history_match_builder_impl.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
using base::ASCIIToUTF16; |
+using testing::ElementsAre; |
+using testing::Pair; |
namespace { |
@@ -469,3 +472,62 @@ TEST_F(ScoredHistoryMatchBuilderImplTest, GetTopicalityScore) { |
EXPECT_GT(hostname_mid_word_score, tld_score); |
EXPECT_GT(hostname_mid_word_score, tld_mid_word_score); |
} |
+ |
+// Test the function GetFinalRelevancyScore(). |
+TEST_F(ScoredHistoryMatchBuilderImplTest, GetFinalRelevancyScore) { |
+ // hqp_relevance_buckets = "0.0:100,1.0:200,4.0:500,8.0:900,10.0:1000"; |
+ std::vector<ScoredHistoryMatchBuilderImpl::ScoreMaxRelevance> hqp_buckets; |
+ hqp_buckets.push_back(std::make_pair(0.0, 100)); |
+ hqp_buckets.push_back(std::make_pair(1.0, 200)); |
+ hqp_buckets.push_back(std::make_pair(4.0, 500)); |
+ hqp_buckets.push_back(std::make_pair(8.0, 900)); |
+ hqp_buckets.push_back(std::make_pair(10.0, 1000)); |
+ // Check when topicality score is zero. |
+ float topicality_score = 0.0; |
+ float frequency_score = 10.0; |
+ // intermediate_score = 0.0 * 10.0 = 0.0. |
+ EXPECT_EQ(0, |
+ ScoredHistoryMatchBuilderImpl::GetFinalRelevancyScore( |
+ topicality_score, frequency_score, hqp_buckets)); |
+ |
+ // Check when intermediate score falls at the border range. |
+ topicality_score = 0.4f; |
+ frequency_score = 10.0f; |
+ // intermediate_score = 0.5 * 10.0 = 4.0. |
+ EXPECT_EQ(500, |
+ ScoredHistoryMatchBuilderImpl::GetFinalRelevancyScore( |
+ topicality_score, frequency_score, hqp_buckets)); |
+ |
+ // Checking the score that falls into one of the buckets. |
+ topicality_score = 0.5f; |
+ frequency_score = 10.0f; |
+ // intermediate_score = 0.5 * 10.0 = 5.0. |
+ EXPECT_EQ(600, // 500 + (((900 - 500)/(8 -4)) * 1) = 600. |
+ ScoredHistoryMatchBuilderImpl::GetFinalRelevancyScore( |
+ topicality_score, frequency_score, hqp_buckets)); |
+ |
+ // Never give the score greater than maximum specified. |
+ topicality_score = 0.5f; |
+ frequency_score = 22.0f; |
+ // intermediate_score = 0.5 * 22.0 = 11.0 |
+ EXPECT_EQ(1000, |
+ ScoredHistoryMatchBuilderImpl::GetFinalRelevancyScore( |
+ topicality_score, frequency_score, hqp_buckets)); |
+} |
+ |
+// Test the function GetHQPBucketsFromString(). |
+TEST_F(ScoredHistoryMatchBuilderImplTest, GetHQPBucketsFromString) { |
+ std::string buckets_str = "0.0:400,1.5:600,12.0:1300,20.0:1399"; |
+ std::vector<ScoredHistoryMatchBuilderImpl::ScoreMaxRelevance> hqp_buckets; |
+ |
+ EXPECT_TRUE(ScoredHistoryMatchBuilderImpl::GetHQPBucketsFromString( |
+ buckets_str, &hqp_buckets)); |
+ EXPECT_THAT(hqp_buckets, ElementsAre(Pair(0.0, 400), |
+ Pair(1.5, 600), |
+ Pair(12.0, 1300), |
+ Pair(20.0, 1399))); |
+ // invalid string. |
+ buckets_str = "0.0,400,1.5,600"; |
+ EXPECT_FALSE(ScoredHistoryMatchBuilderImpl::GetHQPBucketsFromString( |
+ buckets_str, &hqp_buckets)); |
+} |