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

Side by Side Diff: base/sys_string_conversions_unittest.cc

Issue 149526: Use v8's utf8 <-> wide conversion for Linux sys_string_conversion. (Closed)
Patch Set: Created 11 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
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 <locale.h> 5 #include <locale.h>
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/string_piece.h" 10 #include "base/string_piece.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 L"\xd800\xdf00", 170 L"\xd800\xdf00",
171 // ????? (Mathematical Alphanumeric Symbols (U+011d40 - U+011d44 : A,B,C,D,E) 171 // ????? (Mathematical Alphanumeric Symbols (U+011d40 - U+011d44 : A,B,C,D,E)
172 L"\xd807\xdd40\xd807\xdd41\xd807\xdd42\xd807\xdd43\xd807\xdd44", 172 L"\xd807\xdd40\xd807\xdd41\xd807\xdd42\xd807\xdd43\xd807\xdd44",
173 #elif defined(WCHAR_T_IS_UTF32) 173 #elif defined(WCHAR_T_IS_UTF32)
174 L"\x10300", 174 L"\x10300",
175 // ????? (Mathematical Alphanumeric Symbols (U+011d40 - U+011d44 : A,B,C,D,E) 175 // ????? (Mathematical Alphanumeric Symbols (U+011d40 - U+011d44 : A,B,C,D,E)
176 L"\x11d40\x11d41\x11d42\x11d43\x11d44", 176 L"\x11d40\x11d41\x11d42\x11d43\x11d44",
177 #endif 177 #endif
178 }; 178 };
179 179
180 TEST(SysStrings, SysWideAndUtf8) {
181 // Should not depend on the locale.
182 for (size_t i = 0; i < arraysize(kConvertRoundtripCases); ++i) {
183 std::wstring wide = kConvertRoundtripCases[i];
184 std::wstring trip = base::SysUTF8ToWide(base::SysWideToUTF8(wide));
185 EXPECT_EQ(wide.size(), trip.size());
186 EXPECT_EQ(wide, trip);
187 }
188 }
189
190 TEST(SysStrings, SysInvalidUtf8) {
191 EXPECT_EQ(1U, base::SysUTF8ToWide("\xc2\x80").size()); // Valid.
192 EXPECT_EQ(0U, base::SysUTF8ToWide("\x80").size());
193 EXPECT_EQ(3U, base::SysUTF8ToWide("abc").size()); // Valid.
194 EXPECT_EQ(0U, base::SysUTF8ToWide("abc\x80").size());
195 EXPECT_EQ(0U, base::SysUTF8ToWide("\xc0""aaaaaaaaa").size());
196 EXPECT_EQ(0U, base::SysUTF8ToWide("\xf5""aaaaaaaaa").size());
197 EXPECT_EQ(0U, base::SysUTF8ToWide("\xfe""aaaaaaaaa").size());
198 }
180 199
181 TEST(SysStrings, SysNativeMBAndWide) { 200 TEST(SysStrings, SysNativeMBAndWide) {
182 ScopedSetLocale locale("en_US.utf-8"); 201 ScopedSetLocale locale("en_US.utf-8");
183 for (size_t i = 0; i < arraysize(kConvertRoundtripCases); ++i) { 202 for (size_t i = 0; i < arraysize(kConvertRoundtripCases); ++i) {
184 std::wstring wide = kConvertRoundtripCases[i]; 203 std::wstring wide = kConvertRoundtripCases[i];
185 std::wstring trip = base::SysNativeMBToWide(base::SysWideToNativeMB(wide)); 204 std::wstring trip = base::SysNativeMBToWide(base::SysWideToNativeMB(wide));
186 EXPECT_EQ(wide.size(), trip.size()); 205 EXPECT_EQ(wide.size(), trip.size());
187 EXPECT_EQ(wide, trip); 206 EXPECT_EQ(wide, trip);
188 } 207 }
189 208
190 // We assume our test is running in UTF-8, so double check through ICU. 209 // We assume our test is running in UTF-8, so double check through ICU.
191 for (size_t i = 0; i < arraysize(kConvertRoundtripCases); ++i) { 210 for (size_t i = 0; i < arraysize(kConvertRoundtripCases); ++i) {
192 std::wstring wide = kConvertRoundtripCases[i]; 211 std::wstring wide = kConvertRoundtripCases[i];
193 std::wstring trip = base::SysNativeMBToWide(WideToUTF8(wide)); 212 std::wstring trip = base::SysNativeMBToWide(WideToUTF8(wide));
194 EXPECT_EQ(wide.size(), trip.size()); 213 EXPECT_EQ(wide.size(), trip.size());
195 EXPECT_EQ(wide, trip); 214 EXPECT_EQ(wide, trip);
196 } 215 }
197 216
198 for (size_t i = 0; i < arraysize(kConvertRoundtripCases); ++i) { 217 for (size_t i = 0; i < arraysize(kConvertRoundtripCases); ++i) {
199 std::wstring wide = kConvertRoundtripCases[i]; 218 std::wstring wide = kConvertRoundtripCases[i];
200 std::wstring trip = UTF8ToWide(base::SysWideToNativeMB(wide)); 219 std::wstring trip = UTF8ToWide(base::SysWideToNativeMB(wide));
201 EXPECT_EQ(wide.size(), trip.size()); 220 EXPECT_EQ(wide.size(), trip.size());
202 EXPECT_EQ(wide, trip); 221 EXPECT_EQ(wide, trip);
203 } 222 }
204 } 223 }
205 #endif // OS_LINUX 224 #endif // OS_LINUX
OLDNEW
« base/sys_string_conversions_linux.cc ('K') | « base/sys_string_conversions_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698