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

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

Issue 1507413003: clang/win: Let some chromium_code targets build with -Wextra. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: content_browsertests Created 5 years 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
« no previous file with comments | « base/profiler/native_stack_sampler_win.cc ('k') | base/test/test_reg_util_win_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/strings/string_piece.h" 7 #include "base/strings/string_piece.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 {L"\xd800\xdf00", "\xF0\x90\x8C\x80", true}, 132 {L"\xd800\xdf00", "\xF0\x90\x8C\x80", true},
133 // Non-characters are passed through. 133 // Non-characters are passed through.
134 {L"\xffffHello", "\xEF\xBF\xBFHello", true}, 134 {L"\xffffHello", "\xEF\xBF\xBFHello", true},
135 {L"\xdbff\xdffeHello", "\xF4\x8F\xBF\xBEHello", true}, 135 {L"\xdbff\xdffeHello", "\xF4\x8F\xBF\xBEHello", true},
136 // The first character is a truncated UTF-16 character. 136 // The first character is a truncated UTF-16 character.
137 {L"\xd800\x597d", "\xef\xbf\xbd\xe5\xa5\xbd", false}, 137 {L"\xd800\x597d", "\xef\xbf\xbd\xe5\xa5\xbd", false},
138 // Truncated at the end. 138 // Truncated at the end.
139 {L"\x597d\xd800", "\xe5\xa5\xbd\xef\xbf\xbd", false}, 139 {L"\x597d\xd800", "\xe5\xa5\xbd\xef\xbf\xbd", false},
140 }; 140 };
141 141
142 for (int i = 0; i < arraysize(convert_cases); i++) { 142 for (const auto& test : convert_cases) {
143 std::string converted; 143 std::string converted;
144 EXPECT_EQ(convert_cases[i].success, 144 EXPECT_EQ(test.success,
145 WideToUTF8(convert_cases[i].utf16, 145 WideToUTF8(test.utf16, wcslen(test.utf16), &converted));
146 wcslen(convert_cases[i].utf16), 146 std::string expected(test.utf8);
147 &converted));
148 std::string expected(convert_cases[i].utf8);
149 EXPECT_EQ(expected, converted); 147 EXPECT_EQ(expected, converted);
150 } 148 }
151 } 149 }
152 150
153 #elif defined(WCHAR_T_IS_UTF32) 151 #elif defined(WCHAR_T_IS_UTF32)
154 // This test is only valid when wchar_t == UTF-32. 152 // This test is only valid when wchar_t == UTF-32.
155 TEST(UTFStringConversionsTest, ConvertUTF32ToUTF8) { 153 TEST(UTFStringConversionsTest, ConvertUTF32ToUTF8) {
156 struct WideToUTF8Case { 154 struct WideToUTF8Case {
157 const wchar_t* utf32; 155 const wchar_t* utf32;
158 const char* utf8; 156 const char* utf8;
159 bool success; 157 bool success;
160 } convert_cases[] = { 158 } convert_cases[] = {
161 // Regular 16-bit input. 159 // Regular 16-bit input.
162 {L"\x4f60\x597d", "\xe4\xbd\xa0\xe5\xa5\xbd", true}, 160 {L"\x4f60\x597d", "\xe4\xbd\xa0\xe5\xa5\xbd", true},
163 // Test a non-BMP character. 161 // Test a non-BMP character.
164 {L"A\x10300z", "A\xF0\x90\x8C\x80z", true}, 162 {L"A\x10300z", "A\xF0\x90\x8C\x80z", true},
165 // Non-characters are passed through. 163 // Non-characters are passed through.
166 {L"\xffffHello", "\xEF\xBF\xBFHello", true}, 164 {L"\xffffHello", "\xEF\xBF\xBFHello", true},
167 {L"\x10fffeHello", "\xF4\x8F\xBF\xBEHello", true}, 165 {L"\x10fffeHello", "\xF4\x8F\xBF\xBEHello", true},
168 // Invalid Unicode code points. 166 // Invalid Unicode code points.
169 {L"\xfffffffHello", "\xEF\xBF\xBDHello", false}, 167 {L"\xfffffffHello", "\xEF\xBF\xBDHello", false},
170 // The first character is a truncated UTF-16 character. 168 // The first character is a truncated UTF-16 character.
171 {L"\xd800\x597d", "\xef\xbf\xbd\xe5\xa5\xbd", false}, 169 {L"\xd800\x597d", "\xef\xbf\xbd\xe5\xa5\xbd", false},
172 {L"\xdc01Hello", "\xef\xbf\xbdHello", false}, 170 {L"\xdc01Hello", "\xef\xbf\xbdHello", false},
173 }; 171 };
174 172
175 for (size_t i = 0; i < arraysize(convert_cases); i++) { 173 for (const auto& test : convert_cases) {
176 std::string converted; 174 std::string converted;
177 EXPECT_EQ(convert_cases[i].success, 175 EXPECT_EQ(test.success,
178 WideToUTF8(convert_cases[i].utf32, 176 WideToUTF8(test.utf32, wcslen(test.utf32), &converted));
179 wcslen(convert_cases[i].utf32), 177 std::string expected(test.utf8);
180 &converted));
181 std::string expected(convert_cases[i].utf8);
182 EXPECT_EQ(expected, converted); 178 EXPECT_EQ(expected, converted);
183 } 179 }
184 } 180 }
185 #endif // defined(WCHAR_T_IS_UTF32) 181 #endif // defined(WCHAR_T_IS_UTF32)
186 182
187 TEST(UTFStringConversionsTest, ConvertMultiString) { 183 TEST(UTFStringConversionsTest, ConvertMultiString) {
188 static char16 multi16[] = { 184 static char16 multi16[] = {
189 'f', 'o', 'o', '\0', 185 'f', 'o', 'o', '\0',
190 'b', 'a', 'r', '\0', 186 'b', 'a', 'r', '\0',
191 'b', 'a', 'z', '\0', 187 'b', 'a', 'z', '\0',
(...skipping 11 matching lines...) Expand all
203 EXPECT_EQ(arraysize(multi16) - 1, multistring16.length()); 199 EXPECT_EQ(arraysize(multi16) - 1, multistring16.length());
204 std::string expected; 200 std::string expected;
205 memcpy(WriteInto(&expected, arraysize(multi)), multi, sizeof(multi)); 201 memcpy(WriteInto(&expected, arraysize(multi)), multi, sizeof(multi));
206 EXPECT_EQ(arraysize(multi) - 1, expected.length()); 202 EXPECT_EQ(arraysize(multi) - 1, expected.length());
207 const std::string& converted = UTF16ToUTF8(multistring16); 203 const std::string& converted = UTF16ToUTF8(multistring16);
208 EXPECT_EQ(arraysize(multi) - 1, converted.length()); 204 EXPECT_EQ(arraysize(multi) - 1, converted.length());
209 EXPECT_EQ(expected, converted); 205 EXPECT_EQ(expected, converted);
210 } 206 }
211 207
212 } // namespace base 208 } // namespace base
OLDNEW
« no previous file with comments | « base/profiler/native_stack_sampler_win.cc ('k') | base/test/test_reg_util_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698