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

Side by Side Diff: base/strings/utf_offset_string_conversions_unittest.cc

Issue 255423002: Omnibox: Highlight Matches in URLs Properly (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix OffsetsFromTermMatches test Created 6 years, 7 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/string_piece.h" 8 #include "base/strings/string_piece.h"
9 #include "base/strings/utf_offset_string_conversions.h" 9 #include "base/strings/utf_offset_string_conversions.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 size_t expected_3[] = { 155 size_t expected_3[] = {
156 0, kNpos, kNpos, 0, 1, kNpos, kNpos, kNpos, 5, 6, 7, 8, kNpos, kNpos, 11, 156 0, kNpos, kNpos, 0, 1, kNpos, kNpos, kNpos, 5, 6, 7, 8, kNpos, kNpos, 11,
157 12, kNpos, 12 157 12, kNpos, 12
158 }; 158 };
159 EXPECT_EQ(offsets.size(), arraysize(expected_3)); 159 EXPECT_EQ(offsets.size(), arraysize(expected_3));
160 for (size_t i = 0; i < arraysize(expected_3); ++i) 160 for (size_t i = 0; i < arraysize(expected_3); ++i)
161 EXPECT_EQ(expected_3[i], offsets[i]); 161 EXPECT_EQ(expected_3[i], offsets[i]);
162 } 162 }
163 } 163 }
164 164
165 TEST(UTFOffsetStringConversionsTest, UnadjustOffsets) {
166 // Imagine we have strings as shown in the following cases where the
167 // X's represent encoded characters.
168 // 1: abcXXXdef ==> abcXdef
169 {
170 std::vector<size_t> offsets;
171 for (size_t t = 0; t <= 7; ++t)
172 offsets.push_back(t);
173 OffsetAdjuster::Adjustments adjustments;
174 adjustments.push_back(OffsetAdjuster::Adjustment(3, 3, 1));
175 OffsetAdjuster::UnadjustOffsets(adjustments, &offsets);
176 size_t expected_1[] = {0, 1, 2, 3, 6, 7, 8, 9};
177 EXPECT_EQ(offsets.size(), arraysize(expected_1));
178 for (size_t i = 0; i < arraysize(expected_1); ++i)
179 EXPECT_EQ(expected_1[i], offsets[i]);
180 }
181
182 // 2: XXXaXXXXbcXXXXXXXdefXXX ==> XaXXbcXXXXdefX
183 {
184 std::vector<size_t> offsets;
185 for (size_t t = 0; t <= 14; ++t)
186 offsets.push_back(t);
187 OffsetAdjuster::Adjustments adjustments;
188 adjustments.push_back(OffsetAdjuster::Adjustment(0, 3, 1));
189 adjustments.push_back(OffsetAdjuster::Adjustment(4, 4, 2));
190 adjustments.push_back(OffsetAdjuster::Adjustment(10, 7, 4));
191 adjustments.push_back(OffsetAdjuster::Adjustment(20, 3, 1));
192 OffsetAdjuster::UnadjustOffsets(adjustments, &offsets);
193 size_t expected_2[] = {
194 0, 3, 4, kNpos, 8, 9, 10, kNpos, kNpos, kNpos, 17, 18, 19, 20, 23
195 };
196 EXPECT_EQ(offsets.size(), arraysize(expected_2));
197 for (size_t i = 0; i < arraysize(expected_2); ++i)
198 EXPECT_EQ(expected_2[i], offsets[i]);
199 }
200
201 // 3: XXXaXXXXbcdXXXeXX ==> aXXXXbcdXXXe
202 {
203 std::vector<size_t> offsets;
204 for (size_t t = 0; t <= 12; ++t)
205 offsets.push_back(t);
206 OffsetAdjuster::Adjustments adjustments;
207 adjustments.push_back(OffsetAdjuster::Adjustment(0, 3, 0));
208 adjustments.push_back(OffsetAdjuster::Adjustment(4, 4, 4));
209 adjustments.push_back(OffsetAdjuster::Adjustment(11, 3, 3));
210 adjustments.push_back(OffsetAdjuster::Adjustment(15, 2, 0));
211 OffsetAdjuster::UnadjustOffsets(adjustments, &offsets);
212 size_t expected_3[] = {
213 0, // this could just as easily be 3
214 4, kNpos, kNpos, kNpos, 8, 9, 10, 11, kNpos, kNpos, 14,
215 15 // this could just as easily be 17
216 };
217 EXPECT_EQ(offsets.size(), arraysize(expected_3));
218 for (size_t i = 0; i < arraysize(expected_3); ++i)
219 EXPECT_EQ(expected_3[i], offsets[i]);
220 }
221 }
222
165 // MergeSequentialAdjustments is used by net/base/escape.{h,cc} and 223 // MergeSequentialAdjustments is used by net/base/escape.{h,cc} and
166 // net/base/net_util.{h,cc}. The two tests EscapeTest.AdjustOffset and 224 // net/base/net_util.{h,cc}. The two tests EscapeTest.AdjustOffset and
167 // NetUtilTest.FormatUrlWithOffsets test its behavior extensively. This 225 // NetUtilTest.FormatUrlWithOffsets test its behavior extensively. This
168 // is simply a short, additional test. 226 // is simply a short, additional test.
169 TEST(UTFOffsetStringConversionsTest, MergeSequentialAdjustments) { 227 TEST(UTFOffsetStringConversionsTest, MergeSequentialAdjustments) {
170 // Pretend the input string is "abcdefghijklmnopqrstuvwxyz". 228 // Pretend the input string is "abcdefghijklmnopqrstuvwxyz".
171 229
172 // Set up |first_adjustments| to 230 // Set up |first_adjustments| to
173 // - remove the leading "a" 231 // - remove the leading "a"
174 // - combine the "bc" into one character (call it ".") 232 // - combine the "bc" into one character (call it ".")
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 EXPECT_EQ(1u, adjustments_on_adjusted_string[3].output_length); 287 EXPECT_EQ(1u, adjustments_on_adjusted_string[3].output_length);
230 EXPECT_EQ(19u, adjustments_on_adjusted_string[4].original_offset); 288 EXPECT_EQ(19u, adjustments_on_adjusted_string[4].original_offset);
231 EXPECT_EQ(3u, adjustments_on_adjusted_string[4].original_length); 289 EXPECT_EQ(3u, adjustments_on_adjusted_string[4].original_length);
232 EXPECT_EQ(0u, adjustments_on_adjusted_string[4].output_length); 290 EXPECT_EQ(0u, adjustments_on_adjusted_string[4].output_length);
233 EXPECT_EQ(25u, adjustments_on_adjusted_string[5].original_offset); 291 EXPECT_EQ(25u, adjustments_on_adjusted_string[5].original_offset);
234 EXPECT_EQ(1u, adjustments_on_adjusted_string[5].original_length); 292 EXPECT_EQ(1u, adjustments_on_adjusted_string[5].original_length);
235 EXPECT_EQ(2u, adjustments_on_adjusted_string[5].output_length); 293 EXPECT_EQ(2u, adjustments_on_adjusted_string[5].output_length);
236 } 294 }
237 295
238 } // namaspace base 296 } // namaspace base
OLDNEW
« no previous file with comments | « base/strings/utf_offset_string_conversions.cc ('k') | chrome/browser/autocomplete/history_quick_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698