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

Unified Diff: base/i18n/icu_string_conversions_unittest.cc

Issue 372017: Fix various problems with inline autocomplete and URLs that change length dur... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/i18n/icu_string_conversions.cc ('k') | base/string_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/i18n/icu_string_conversions_unittest.cc
===================================================================
--- base/i18n/icu_string_conversions_unittest.cc (revision 31214)
+++ base/i18n/icu_string_conversions_unittest.cc (working copy)
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2009 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.
@@ -9,9 +9,9 @@
#include <sstream>
#include "base/basictypes.h"
+#include "base/i18n/icu_string_conversions.h"
#include "base/logging.h"
#include "base/utf_string_conversions.h"
-#include "base/i18n/icu_string_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace base {
@@ -39,7 +39,7 @@
#endif
}
-static const wchar_t* const kConvertRoundtripCases[] = {
+const wchar_t* const kConvertRoundtripCases[] = {
L"Google Video",
// "网页 图片 资讯更多 »"
L"\x7f51\x9875\x0020\x56fe\x7247\x0020\x8d44\x8baf\x66f4\x591a\x0020\x00bb",
@@ -68,7 +68,7 @@
} // namespace
-TEST(StringUtilTest, ConvertCodepageUTF8) {
+TEST(ICUStringConversionsTest, ConvertCodepageUTF8) {
// Make sure WideToCodepage works like WideToUTF8.
for (size_t i = 0; i < arraysize(kConvertRoundtripCases); ++i) {
std::string expected(WideToUTF8(kConvertRoundtripCases[i]));
@@ -156,7 +156,7 @@
true,
#if defined(WCHAR_T_IS_UTF16)
L"\xD840\xDC00\x4E00",
-#else
+#elif defined(WCHAR_T_IS_UTF32)
L"\x20000\x4E00",
#endif
L"\xD840\xDC00\x4E00"},
@@ -234,7 +234,7 @@
NULL},
};
-TEST(StringUtilTest, ConvertBetweenCodepageAndWide) {
+TEST(ICUStringConversionsTest, ConvertBetweenCodepageAndWide) {
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kConvertCodepageCases); ++i) {
std::wstring wide;
bool success = CodepageToWide(kConvertCodepageCases[i].encoded,
@@ -296,7 +296,7 @@
OnStringConversionError::SKIP, &encoded));
}
-TEST(StringUtilTest, ConvertBetweenCodepageAndUTF16) {
+TEST(ICUStringConversionsTest, ConvertBetweenCodepageAndUTF16) {
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kConvertCodepageCases); ++i) {
string16 utf16;
bool success = CodepageToUTF16(kConvertCodepageCases[i].encoded,
@@ -325,4 +325,45 @@
}
}
+static const struct {
+ const char* codepage_name;
+ const char* encoded;
+ size_t input_offset;
+ size_t u16_output_offset;
+ size_t wide_output_offset;
+} kAdjustOffsetCases[] = {
+ {"gb2312", "", 0, string16::npos, std::wstring::npos},
+ {"gb2312", "\xC4\xE3\xBA\xC3", 0, 0, 0},
+ {"gb2312", "\xC4\xE3\xBA\xC3", 2, 1, 1},
+ {"gb2312", "\xC4\xE3\xBA\xC3", 4, string16::npos, std::wstring::npos},
+ {"gb2312", "\xC4\xE3\xBA\xC3", 1, string16::npos, std::wstring::npos},
+ {"gb2312", "\xC4\xE3\xBA\xC3", std::string::npos, string16::npos,
+ std::wstring::npos},
+ {"gb18030", "\x95\x32\x82\x36\xD2\xBB", 2, string16::npos,
+ std::wstring::npos},
+ {"gb18030", "\x95\x32\x82\x36\xD2\xBB", 4, 2, 1},
+};
+
+TEST(ICUStringConversionsTest, AdjustOffset) {
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kAdjustOffsetCases); ++i) {
+ string16 utf16;
+ size_t offset = kAdjustOffsetCases[i].input_offset;
+ EXPECT_TRUE(CodepageToUTF16AndAdjustOffset(kAdjustOffsetCases[i].encoded,
+ kAdjustOffsetCases[i].codepage_name,
+ OnStringConversionError::FAIL, &utf16, &offset));
+ EXPECT_EQ(kAdjustOffsetCases[i].u16_output_offset, offset);
+
+ std::wstring wide;
+ offset = kAdjustOffsetCases[i].input_offset;
+ CodepageToWideAndAdjustOffset(kAdjustOffsetCases[i].encoded,
+ kAdjustOffsetCases[i].codepage_name,
+ OnStringConversionError::FAIL, &wide, &offset);
+#if defined(WCHAR_T_IS_UTF16)
+ EXPECT_EQ(kAdjustOffsetCases[i].u16_output_offset, offset);
+#elif defined(WCHAR_T_IS_UTF32)
+ EXPECT_EQ(kAdjustOffsetCases[i].wide_output_offset, offset);
+#endif
+ }
+}
+
} // namespace base
« no previous file with comments | « base/i18n/icu_string_conversions.cc ('k') | base/string_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698