Index: ui/app_list/search/tokenized_string_match_unittest.cc |
diff --git a/ui/app_list/search/tokenized_string_match_unittest.cc b/ui/app_list/search/tokenized_string_match_unittest.cc |
index e9e959e0a3be5563f709a187a8451f92be0420cd..e412a8a856337686c5020c1378879a3c67285232 100644 |
--- a/ui/app_list/search/tokenized_string_match_unittest.cc |
+++ b/ui/app_list/search/tokenized_string_match_unittest.cc |
@@ -14,7 +14,7 @@ namespace app_list { |
namespace test { |
// Returns a string of |text| marked the hits in |match| using block bracket. |
-// e.g. text= "Text", hits = [{0,1}], returns "[T]ext". |
+// e.g. text= "Text", match.hits = [{0,1}], returns "[T]ext". |
std::string MatchHit(const base::string16& text, |
const TokenizedStringMatch& match) { |
base::string16 marked = text; |
@@ -119,5 +119,36 @@ TEST(TokenizedStringMatchTest, Relevance) { |
} |
} |
+// More specialized tests of the absolute relevance scores. (These tests are |
+// minimal, because they are so brittle. Changing the scoring algorithm will |
+// require updating this test.) |
+TEST(TokenizedStringMatchTest, AbsoluteRelevance) { |
+ const double kEpsilon = 0.006; |
+ struct { |
+ const char* text; |
+ const char* query; |
+ double expected_score; |
+ } kTestCases[] = { |
+ // The first few chars should increase the score extremely high. After |
+ // that, they should count less. |
+ // NOTE: 0.87 is a magic number, as it is the Omnibox score for a "pretty |
+ // good" match. We want a 3-letter prefix match to be slightly above 0.87. |
+ {"Google Chrome", "g", 0.5}, |
+ {"Google Chrome", "go", 0.75}, |
+ {"Google Chrome", "goo", 0.88}, |
+ {"Google Chrome", "goog", 0.94}, |
+ }; |
+ |
+ TokenizedStringMatch match; |
+ for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
+ const base::string16 text(base::UTF8ToUTF16(kTestCases[i].text)); |
+ EXPECT_TRUE(match.Calculate(base::UTF8ToUTF16(kTestCases[i].query), text)); |
+ EXPECT_NEAR(match.relevance(), kTestCases[i].expected_score, kEpsilon) |
+ << "Test case " << i << " : text=" << kTestCases[i].text |
+ << ", query=" << kTestCases[i].query |
+ << ", expected_score=" << kTestCases[i].expected_score; |
+ } |
+} |
+ |
} // namespace test |
} // namespace app_list |