Chromium Code Reviews| Index: base/utf_offset_string_conversions_unittest.cc |
| diff --git a/base/utf_offset_string_conversions_unittest.cc b/base/utf_offset_string_conversions_unittest.cc |
| index ff03a750533733e0544b240e37521a539381940f..c861f9dd266aeae87644ca089abbc60da978cb00 100644 |
| --- a/base/utf_offset_string_conversions_unittest.cc |
| +++ b/base/utf_offset_string_conversions_unittest.cc |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| @@ -17,6 +17,28 @@ static const size_t kNpos = string16::npos; |
| } // namespace |
| +TEST(UTFOffsetStringConversionsTest, IndexOffsetConversions) { |
| + // Valid surrogate pair surrounded by unpaired surrogates |
| + const char16 foo[] = {0xDC00, 0xD800, 0xD800, 0xDFFF, 0xDFFF, 0xDBFF, 0}; |
| + const string16 s(foo); |
| + const size_t the_invalid_index = 3; |
| + for (size_t i = 0; i <= s.length(); ++i) |
| + EXPECT_EQ(i != the_invalid_index, IsValidUtf16Index(s, i)); |
| + for (size_t i = 0; i <= s.length(); ++i) { |
| + for (size_t j = i; j <= s.length(); ++j) { |
| + ptrdiff_t offset = static_cast<ptrdiff_t>(j - i); |
| + if (i <= the_invalid_index && j > the_invalid_index) |
| + --offset; |
| + EXPECT_EQ(offset, Utf16IndexToOffset(s, i, j)); |
| + EXPECT_EQ(-offset, Utf16IndexToOffset(s, j, i)); |
| + size_t adjusted_j = (i < j && j == the_invalid_index + 1) ? j - 1 : j; |
| + EXPECT_EQ(adjusted_j, Utf16OffsetToIndex(s, i, offset)); |
| + size_t adjusted_i = (i < j && i == the_invalid_index) ? i + 1 : i; |
| + EXPECT_EQ(adjusted_i, Utf16OffsetToIndex(s, j, -offset)); |
| + } |
| + } |
| +} |
|
xji
2012/02/18 01:28:47
Do you know how g_utf8_offset_to_pointer and g_utf
benrg
2012/02/24 19:07:44
It's undocumented, but it doesn't matter, because
|
| + |
| TEST(UTFOffsetStringConversionsTest, AdjustOffset) { |
| struct UTF8ToUTF16Case { |
| const char* utf8; |
| @@ -151,4 +173,4 @@ TEST(UTFOffsetStringConversionsTest, AdjustOffsets) { |
| } |
| } |
| -} // namaspace base |
| +} // namespace base |