Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(419)

Side by Side Diff: third_party/libaddressinput/chromium/trie_unittest.cc

Issue 386873002: Reland "Use upstream libaddressinput in Chrome." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix iOS compile. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (C) 2014 Google Inc. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // 2 // Use of this source code is governed by a BSD-style license that can be
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // found in the LICENSE file.
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 4
15 #include "util/trie.h" 5 #include "third_party/libaddressinput/chromium/trie.h"
16 6
7 #include <stdint.h>
17 #include <set> 8 #include <set>
18 #include <string> 9 #include <string>
19 10
20 #include <gtest/gtest.h> 11 #include "testing/gtest/include/gtest/gtest.h"
21 12
22 namespace i18n { 13 namespace autofill {
23 namespace addressinput {
24 14
25 namespace { 15 namespace {
26 16
17 std::vector<uint8_t> ToByteArray(const std::string& text) {
18 std::vector<uint8_t> result(text.length() + 1, 0);
19 result.assign(text.begin(), text.end());
20 return result;
21 }
22
23 } // namespace
24
27 TEST(TrieTest, EmptyTrieHasNoData) { 25 TEST(TrieTest, EmptyTrieHasNoData) {
28 Trie<std::string> trie; 26 Trie<std::string> trie;
29 std::set<std::string> result; 27 std::set<std::string> result;
30 trie.FindDataForKeyPrefix("key", &result); 28 trie.FindDataForKeyPrefix(ToByteArray("key"), &result);
31 EXPECT_TRUE(result.empty()); 29 EXPECT_TRUE(result.empty());
32 } 30 }
33 31
34 TEST(TrieTest, CanGetDataByExactKey) { 32 TEST(TrieTest, CanGetDataByExactKey) {
35 Trie<std::string> trie; 33 Trie<std::string> trie;
36 trie.AddDataForKey("hello", "world"); 34 trie.AddDataForKey(ToByteArray("hello"), "world");
37 std::set<std::string> result; 35 std::set<std::string> result;
38 trie.FindDataForKeyPrefix("hello", &result); 36 trie.FindDataForKeyPrefix(ToByteArray("hello"), &result);
39 std::set<std::string> expected; 37 std::set<std::string> expected;
40 expected.insert("world"); 38 expected.insert("world");
41 EXPECT_EQ(expected, result); 39 EXPECT_EQ(expected, result);
42 } 40 }
43 41
44 TEST(TrieTest, CanGetDataByPrefix) { 42 TEST(TrieTest, CanGetDataByPrefix) {
45 Trie<std::string> trie; 43 Trie<std::string> trie;
46 trie.AddDataForKey("hello", "world"); 44 trie.AddDataForKey(ToByteArray("hello"), "world");
47 std::set<std::string> result; 45 std::set<std::string> result;
48 trie.FindDataForKeyPrefix("he", &result); 46 trie.FindDataForKeyPrefix(ToByteArray("he"), &result);
49 std::set<std::string> expected; 47 std::set<std::string> expected;
50 expected.insert("world"); 48 expected.insert("world");
51 EXPECT_EQ(expected, result); 49 EXPECT_EQ(expected, result);
52 } 50 }
53 51
54 TEST(TrieTest, KeyTooLongNoData) { 52 TEST(TrieTest, KeyTooLongNoData) {
55 Trie<std::string> trie; 53 Trie<std::string> trie;
56 trie.AddDataForKey("hello", "world"); 54 trie.AddDataForKey(ToByteArray("hello"), "world");
57 std::set<std::string> result; 55 std::set<std::string> result;
58 trie.FindDataForKeyPrefix("helloo", &result); 56 trie.FindDataForKeyPrefix(ToByteArray("helloo"), &result);
59 EXPECT_TRUE(result.empty()); 57 EXPECT_TRUE(result.empty());
60 } 58 }
61 59
62 TEST(TrieTest, CommonPrefixFindsMultipleData) { 60 TEST(TrieTest, CommonPrefixFindsMultipleData) {
63 Trie<std::string> trie; 61 Trie<std::string> trie;
64 trie.AddDataForKey("hello", "world"); 62 trie.AddDataForKey(ToByteArray("hello"), "world");
65 trie.AddDataForKey("howdy", "buddy"); 63 trie.AddDataForKey(ToByteArray("howdy"), "buddy");
66 trie.AddDataForKey("foo", "bar"); 64 trie.AddDataForKey(ToByteArray("foo"), "bar");
67 std::set<std::string> results; 65 std::set<std::string> results;
68 trie.FindDataForKeyPrefix("h", &results); 66 trie.FindDataForKeyPrefix(ToByteArray("h"), &results);
69 std::set<std::string> expected; 67 std::set<std::string> expected;
70 expected.insert("world"); 68 expected.insert("world");
71 expected.insert("buddy"); 69 expected.insert("buddy");
72 EXPECT_EQ(expected, results); 70 EXPECT_EQ(expected, results);
73 } 71 }
74 72
75 TEST(TrieTest, KeyCanBePrefixOfOtherKey) { 73 TEST(TrieTest, KeyCanBePrefixOfOtherKey) {
76 Trie<std::string> trie; 74 Trie<std::string> trie;
77 trie.AddDataForKey("hello", "world"); 75 trie.AddDataForKey(ToByteArray("hello"), "world");
78 trie.AddDataForKey("helloo", "woorld"); 76 trie.AddDataForKey(ToByteArray("helloo"), "woorld");
79 trie.AddDataForKey("hella", "warld"); 77 trie.AddDataForKey(ToByteArray("hella"), "warld");
80 std::set<std::string> results; 78 std::set<std::string> results;
81 trie.FindDataForKeyPrefix("hello", &results); 79 trie.FindDataForKeyPrefix(ToByteArray("hello"), &results);
82 std::set<std::string> expected; 80 std::set<std::string> expected;
83 expected.insert("world"); 81 expected.insert("world");
84 expected.insert("woorld"); 82 expected.insert("woorld");
85 EXPECT_EQ(expected, results); 83 EXPECT_EQ(expected, results);
86 } 84 }
87 85
88 TEST(TrieTest, AllowMutlipleKeys) { 86 TEST(TrieTest, AllowMutlipleKeys) {
89 Trie<std::string> trie; 87 Trie<std::string> trie;
90 trie.AddDataForKey("hello", "world"); 88 trie.AddDataForKey(ToByteArray("hello"), "world");
91 trie.AddDataForKey("hello", "woorld"); 89 trie.AddDataForKey(ToByteArray("hello"), "woorld");
92 std::set<std::string> results; 90 std::set<std::string> results;
93 trie.FindDataForKeyPrefix("hello", &results); 91 trie.FindDataForKeyPrefix(ToByteArray("hello"), &results);
94 std::set<std::string> expected; 92 std::set<std::string> expected;
95 expected.insert("world"); 93 expected.insert("world");
96 expected.insert("woorld"); 94 expected.insert("woorld");
97 EXPECT_EQ(expected, results); 95 EXPECT_EQ(expected, results);
98 } 96 }
99 97
100 TEST(TrieTest, CanFindVeryLongKey) { 98 TEST(TrieTest, CanFindVeryLongKey) {
101 Trie<std::string> trie; 99 Trie<std::string> trie;
102 static const char kVeryLongKey[] = "1234567890qwertyuioasdfghj"; 100 static const char kVeryLongKey[] = "1234567890qwertyuioasdfghj";
103 trie.AddDataForKey(kVeryLongKey, "world"); 101 trie.AddDataForKey(ToByteArray(kVeryLongKey), "world");
104 std::set<std::string> result; 102 std::set<std::string> result;
105 trie.FindDataForKeyPrefix(kVeryLongKey, &result); 103 trie.FindDataForKeyPrefix(ToByteArray(kVeryLongKey), &result);
106 std::set<std::string> expected; 104 std::set<std::string> expected;
107 expected.insert("world"); 105 expected.insert("world");
108 EXPECT_EQ(expected, result); 106 EXPECT_EQ(expected, result);
109 } 107 }
110 108
111 } // namespace 109 } // namespace autofill
112
113 } // namespace addressinput
114 } // namespace i18n
OLDNEW
« no previous file with comments | « third_party/libaddressinput/chromium/trie.cc ('k') | third_party/libaddressinput/libaddressinput.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698