| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "components/autocomplete/autocomplete_match.h" | |
| 6 | |
| 7 #include "base/basictypes.h" | |
| 8 #include "testing/gtest/include/gtest/gtest.h" | |
| 9 | |
| 10 TEST(AutocompleteMatchTest, MoreRelevant) { | |
| 11 struct RelevantCases { | |
| 12 int r1; | |
| 13 int r2; | |
| 14 bool expected_result; | |
| 15 } cases[] = { | |
| 16 { 10, 0, true }, | |
| 17 { 10, -5, true }, | |
| 18 { -5, 10, false }, | |
| 19 { 0, 10, false }, | |
| 20 { -10, -5, false }, | |
| 21 { -5, -10, true }, | |
| 22 }; | |
| 23 | |
| 24 AutocompleteMatch m1(NULL, 0, false, | |
| 25 AutocompleteMatchType::URL_WHAT_YOU_TYPED); | |
| 26 AutocompleteMatch m2(NULL, 0, false, | |
| 27 AutocompleteMatchType::URL_WHAT_YOU_TYPED); | |
| 28 | |
| 29 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | |
| 30 m1.relevance = cases[i].r1; | |
| 31 m2.relevance = cases[i].r2; | |
| 32 EXPECT_EQ(cases[i].expected_result, | |
| 33 AutocompleteMatch::MoreRelevant(m1, m2)); | |
| 34 } | |
| 35 } | |
| 36 | |
| 37 TEST(AutocompleteMatchTest, MergeClassifications) { | |
| 38 // Merging two empty vectors should result in an empty vector. | |
| 39 EXPECT_EQ(std::string(), | |
| 40 AutocompleteMatch::ClassificationsToString( | |
| 41 AutocompleteMatch::MergeClassifications( | |
| 42 AutocompleteMatch::ACMatchClassifications(), | |
| 43 AutocompleteMatch::ACMatchClassifications()))); | |
| 44 | |
| 45 // If one vector is empty and the other is "trivial" but non-empty (i.e. (0, | |
| 46 // NONE)), the non-empty vector should be returned. | |
| 47 EXPECT_EQ("0,0", | |
| 48 AutocompleteMatch::ClassificationsToString( | |
| 49 AutocompleteMatch::MergeClassifications( | |
| 50 AutocompleteMatch::ClassificationsFromString("0,0"), | |
| 51 AutocompleteMatch::ACMatchClassifications()))); | |
| 52 EXPECT_EQ("0,0", | |
| 53 AutocompleteMatch::ClassificationsToString( | |
| 54 AutocompleteMatch::MergeClassifications( | |
| 55 AutocompleteMatch::ACMatchClassifications(), | |
| 56 AutocompleteMatch::ClassificationsFromString("0,0")))); | |
| 57 | |
| 58 // Ditto if the one-entry vector is non-trivial. | |
| 59 EXPECT_EQ("0,1", | |
| 60 AutocompleteMatch::ClassificationsToString( | |
| 61 AutocompleteMatch::MergeClassifications( | |
| 62 AutocompleteMatch::ClassificationsFromString("0,1"), | |
| 63 AutocompleteMatch::ACMatchClassifications()))); | |
| 64 EXPECT_EQ("0,1", | |
| 65 AutocompleteMatch::ClassificationsToString( | |
| 66 AutocompleteMatch::MergeClassifications( | |
| 67 AutocompleteMatch::ACMatchClassifications(), | |
| 68 AutocompleteMatch::ClassificationsFromString("0,1")))); | |
| 69 | |
| 70 // Merge an unstyled one-entry vector with a styled one-entry vector. | |
| 71 EXPECT_EQ("0,1", | |
| 72 AutocompleteMatch::ClassificationsToString( | |
| 73 AutocompleteMatch::MergeClassifications( | |
| 74 AutocompleteMatch::ClassificationsFromString("0,0"), | |
| 75 AutocompleteMatch::ClassificationsFromString("0,1")))); | |
| 76 | |
| 77 // Test simple cases of overlap. | |
| 78 EXPECT_EQ("0,3," "1,2", | |
| 79 AutocompleteMatch::ClassificationsToString( | |
| 80 AutocompleteMatch::MergeClassifications( | |
| 81 AutocompleteMatch::ClassificationsFromString("0,1," "1,0"), | |
| 82 AutocompleteMatch::ClassificationsFromString("0,2")))); | |
| 83 EXPECT_EQ("0,3," "1,2", | |
| 84 AutocompleteMatch::ClassificationsToString( | |
| 85 AutocompleteMatch::MergeClassifications( | |
| 86 AutocompleteMatch::ClassificationsFromString("0,2"), | |
| 87 AutocompleteMatch::ClassificationsFromString("0,1," "1,0")))); | |
| 88 | |
| 89 // Test the case where both vectors have classifications at the same | |
| 90 // positions. | |
| 91 EXPECT_EQ("0,3", | |
| 92 AutocompleteMatch::ClassificationsToString( | |
| 93 AutocompleteMatch::MergeClassifications( | |
| 94 AutocompleteMatch::ClassificationsFromString("0,1," "1,2"), | |
| 95 AutocompleteMatch::ClassificationsFromString("0,2," "1,1")))); | |
| 96 | |
| 97 // Test an arbitrary complicated case. | |
| 98 EXPECT_EQ("0,2," "1,0," "2,1," "4,3," "5,7," "6,3," "7,7," "15,1," "17,0", | |
| 99 AutocompleteMatch::ClassificationsToString( | |
| 100 AutocompleteMatch::MergeClassifications( | |
| 101 AutocompleteMatch::ClassificationsFromString( | |
| 102 "0,0," "2,1," "4,3," "7,7," "10,6," "15,0"), | |
| 103 AutocompleteMatch::ClassificationsFromString( | |
| 104 "0,2," "1,0," "5,7," "6,1," "17,0")))); | |
| 105 } | |
| 106 | |
| 107 TEST(AutocompleteMatchTest, SupportsDeletion) { | |
| 108 // A non-deletable match with no duplicates. | |
| 109 AutocompleteMatch m(NULL, 0, false, | |
| 110 AutocompleteMatchType::URL_WHAT_YOU_TYPED); | |
| 111 EXPECT_FALSE(m.SupportsDeletion()); | |
| 112 | |
| 113 // A deletable match with no duplicates. | |
| 114 AutocompleteMatch m1(NULL, 0, true, | |
| 115 AutocompleteMatchType::URL_WHAT_YOU_TYPED); | |
| 116 EXPECT_TRUE(m1.SupportsDeletion()); | |
| 117 | |
| 118 // A non-deletable match, with non-deletable duplicates. | |
| 119 m.duplicate_matches.push_back(AutocompleteMatch( | |
| 120 NULL, 0, false, AutocompleteMatchType::URL_WHAT_YOU_TYPED)); | |
| 121 m.duplicate_matches.push_back(AutocompleteMatch( | |
| 122 NULL, 0, false, AutocompleteMatchType::URL_WHAT_YOU_TYPED)); | |
| 123 EXPECT_FALSE(m.SupportsDeletion()); | |
| 124 | |
| 125 // A non-deletable match, with at least one deletable duplicate. | |
| 126 m.duplicate_matches.push_back(AutocompleteMatch( | |
| 127 NULL, 0, true, AutocompleteMatchType::URL_WHAT_YOU_TYPED)); | |
| 128 EXPECT_TRUE(m.SupportsDeletion()); | |
| 129 } | |
| OLD | NEW |