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

Side by Side Diff: base/i18n/rtl_unittest.cc

Issue 1445163002: Enabling Base Unit Tests (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Updated unittest location Created 5 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 unified diff | Download patch
« no previous file with comments | « base/files/file_path_unittest.cc ('k') | base/test/icu_test_util.h » ('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) 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 "base/i18n/rtl.h" 5 #include "base/i18n/rtl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
11 #include "base/strings/sys_string_conversions.h" 11 #include "base/strings/sys_string_conversions.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "base/test/icu_test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 #include "testing/platform_test.h" 15 #include "testing/platform_test.h"
15 #include "third_party/icu/source/i18n/unicode/usearch.h" 16 #include "third_party/icu/source/i18n/unicode/usearch.h"
16 17
17 namespace base { 18 namespace base {
18 namespace i18n { 19 namespace i18n {
19 20
20 namespace { 21 namespace {
21 22
22 // A test utility function to set the application default text direction. 23 // A test utility function to set the application default text direction.
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 LEFT_TO_RIGHT }, 237 LEFT_TO_RIGHT },
237 }; 238 };
238 239
239 for (size_t i = 0; i < arraysize(cases); ++i) 240 for (size_t i = 0; i < arraysize(cases); ++i)
240 EXPECT_EQ(cases[i].direction, 241 EXPECT_EQ(cases[i].direction,
241 GetStringDirection(WideToUTF16(cases[i].text))); 242 GetStringDirection(WideToUTF16(cases[i].text)));
242 } 243 }
243 244
244 TEST_F(RTLTest, WrapPathWithLTRFormatting) { 245 TEST_F(RTLTest, WrapPathWithLTRFormatting) {
245 const wchar_t* cases[] = { 246 const wchar_t* cases[] = {
246 // Test common path, such as "c:\foo\bar".
247 L"c:/foo/bar",
248 // Test path with file name, such as "c:\foo\bar\test.jpg".
249 L"c:/foo/bar/test.jpg",
250 // Test path ending with punctuation, such as "c:\(foo)\bar.".
251 L"c:/(foo)/bar.",
252 // Test path ending with separator, such as "c:\foo\bar\".
253 L"c:/foo/bar/",
254 // Test path with RTL character.
255 L"c:/\x05d0",
256 // Test path with 2 level RTL directory names.
257 L"c:/\x05d0/\x0622",
258 // Test path with mixed RTL/LTR directory names and ending with punctuation.
259 L"c:/\x05d0/\x0622/(foo)/b.a.r.",
260 // Test path without driver name, such as "/foo/bar/test/jpg".
261 L"/foo/bar/test.jpg", 247 L"/foo/bar/test.jpg",
262 // Test path start with current directory, such as "./foo". 248 // Test path start with current directory, such as "./foo".
263 L"./foo", 249 L"./foo",
264 // Test path start with parent directory, such as "../foo/bar.jpg". 250 // Test path start with parent directory, such as "../foo/bar.jpg".
265 L"../foo/bar.jpg", 251 L"../foo/bar.jpg",
266 // Test absolute path, such as "//foo/bar.jpg". 252 // Test absolute path, such as "//foo/bar.jpg".
267 L"//foo/bar.jpg", 253 L"//foo/bar.jpg",
268 // Test path with mixed RTL/LTR directory names.
269 L"c:/foo/\x05d0/\x0622/\x05d1.jpg",
270 // Test empty path. 254 // Test empty path.
271 L"" 255 L""
272 }; 256 };
273 257
274 for (size_t i = 0; i < arraysize(cases); ++i) { 258 for (size_t i = 0; i < arraysize(cases); ++i) {
275 FilePath path; 259 FilePath path;
276 #if defined(OS_WIN)
277 std::wstring win_path(cases[i]);
278 std::replace(win_path.begin(), win_path.end(), '/', '\\');
279 path = FilePath(win_path);
280 std::wstring wrapped_expected =
281 std::wstring(L"\x202a") + win_path + L"\x202c";
282 #else
283 path = FilePath(base::SysWideToNativeMB(cases[i])); 260 path = FilePath(base::SysWideToNativeMB(cases[i]));
284 std::wstring wrapped_expected = 261 std::wstring wrapped_expected =
285 std::wstring(L"\x202a") + cases[i] + L"\x202c"; 262 std::wstring(L"\x202a") + cases[i] + L"\x202c";
286 #endif
287 string16 localized_file_path_string; 263 string16 localized_file_path_string;
288 WrapPathWithLTRFormatting(path, &localized_file_path_string); 264 WrapPathWithLTRFormatting(path, &localized_file_path_string);
289 265
290 std::wstring wrapped_actual = UTF16ToWide(localized_file_path_string); 266 std::wstring wrapped_actual = UTF16ToWide(localized_file_path_string);
291 EXPECT_EQ(wrapped_expected, wrapped_actual); 267 EXPECT_EQ(wrapped_expected, wrapped_actual);
292 } 268 }
293 } 269 }
294 270
295 TEST_F(RTLTest, WrapString) { 271 TEST_F(RTLTest, WrapString) {
296 const wchar_t* cases[] = { 272 const wchar_t* cases[] = {
297 L" . ", 273 L" . ",
298 L"abc", 274 L"abc",
299 L"a" L"\x5d0\x5d1", 275 L"a" L"\x5d0\x5d1",
300 L"a" L"\x5d1" L"b", 276 L"a" L"\x5d1" L"b",
301 L"\x5d0\x5d1\x5d2", 277 L"\x5d0\x5d1\x5d2",
302 L"\x5d0\x5d1" L"a", 278 L"\x5d0\x5d1" L"a",
303 L"\x5d0" L"a" L"\x5d1", 279 L"\x5d0" L"a" L"\x5d1",
304 }; 280 };
305 281
306 const bool was_rtl = IsRTL(); 282 const bool was_rtl = IsRTL();
307 283
284 test::ScopedRestoreICUDefaultLocale restore_locale;
308 for (size_t i = 0; i < 2; ++i) { 285 for (size_t i = 0; i < 2; ++i) {
309 // Toggle the application default text direction (to try each direction). 286 // Toggle the application default text direction (to try each direction).
310 SetRTL(!IsRTL()); 287 SetRTL(!IsRTL());
311 288
312 string16 empty; 289 string16 empty;
313 WrapStringWithLTRFormatting(&empty); 290 WrapStringWithLTRFormatting(&empty);
314 EXPECT_TRUE(empty.empty()); 291 EXPECT_TRUE(empty.empty());
315 WrapStringWithRTLFormatting(&empty); 292 WrapStringWithRTLFormatting(&empty);
316 EXPECT_TRUE(empty.empty()); 293 EXPECT_TRUE(empty.empty());
317 294
(...skipping 27 matching lines...) Expand all
345 { L"\x05d0\x05d1\x05d2", true, true }, 322 { L"\x05d0\x05d1\x05d2", true, true },
346 { L"\x05d0\x05d1\x05d2.txt", true, true }, 323 { L"\x05d0\x05d1\x05d2.txt", true, true },
347 { L"\x05d0" L"abc", true, true }, 324 { L"\x05d0" L"abc", true, true },
348 { L"\x05d0" L"abc.txt", true, true }, 325 { L"\x05d0" L"abc.txt", true, true },
349 { L"abc\x05d0\x05d1", false, true }, 326 { L"abc\x05d0\x05d1", false, true },
350 { L"abc\x05d0\x05d1.jpg", false, true }, 327 { L"abc\x05d0\x05d1.jpg", false, true },
351 }; 328 };
352 329
353 const bool was_rtl = IsRTL(); 330 const bool was_rtl = IsRTL();
354 331
332 test::ScopedRestoreICUDefaultLocale restore_locale;
355 for (size_t i = 0; i < 2; ++i) { 333 for (size_t i = 0; i < 2; ++i) {
356 // Toggle the application default text direction (to try each direction). 334 // Toggle the application default text direction (to try each direction).
357 SetRTL(!IsRTL()); 335 SetRTL(!IsRTL());
358 for (size_t i = 0; i < arraysize(cases); ++i) { 336 for (size_t i = 0; i < arraysize(cases); ++i) {
359 string16 input = WideToUTF16(cases[i].path); 337 string16 input = WideToUTF16(cases[i].path);
360 string16 output = GetDisplayStringInLTRDirectionality(input); 338 string16 output = GetDisplayStringInLTRDirectionality(input);
361 // Test the expected wrapping behavior for the current UI directionality. 339 // Test the expected wrapping behavior for the current UI directionality.
362 if (IsRTL() ? cases[i].wrap_rtl : cases[i].wrap_ltr) 340 if (IsRTL() ? cases[i].wrap_rtl : cases[i].wrap_ltr)
363 EXPECT_NE(output, input); 341 EXPECT_NE(output, input);
364 else 342 else
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 L",\x05d0 foo bar", 387 L",\x05d0 foo bar",
410 L"\x202a \x05d0 foo bar", 388 L"\x202a \x05d0 foo bar",
411 L"\x202d \x05d0 foo bar", 389 L"\x202d \x05d0 foo bar",
412 L"\x202b foo \x05d0 bar", 390 L"\x202b foo \x05d0 bar",
413 L"\x202e foo \x05d0 bar", 391 L"\x202e foo \x05d0 bar",
414 L"\x0622 foo \x05d0 bar", 392 L"\x0622 foo \x05d0 bar",
415 }; 393 };
416 394
417 const bool was_rtl = IsRTL(); 395 const bool was_rtl = IsRTL();
418 396
397 test::ScopedRestoreICUDefaultLocale restore_locale;
419 for (size_t i = 0; i < 2; ++i) { 398 for (size_t i = 0; i < 2; ++i) {
420 // Toggle the application default text direction (to try each direction). 399 // Toggle the application default text direction (to try each direction).
421 SetRTL(!IsRTL()); 400 SetRTL(!IsRTL());
422 401
423 for (size_t i = 0; i < arraysize(cases); ++i) { 402 for (size_t i = 0; i < arraysize(cases); ++i) {
424 string16 test_case = WideToUTF16(cases[i]); 403 string16 test_case = WideToUTF16(cases[i]);
425 string16 adjusted_string = test_case; 404 string16 adjusted_string = test_case;
426 405
427 if (!AdjustStringForLocaleDirection(&adjusted_string)) 406 if (!AdjustStringForLocaleDirection(&adjusted_string))
428 continue; 407 continue;
429 408
430 EXPECT_NE(test_case, adjusted_string); 409 EXPECT_NE(test_case, adjusted_string);
431 EXPECT_TRUE(UnadjustStringForLocaleDirection(&adjusted_string)); 410 EXPECT_TRUE(UnadjustStringForLocaleDirection(&adjusted_string));
432 EXPECT_EQ(test_case, adjusted_string) << " for test case [" << test_case 411 EXPECT_EQ(test_case, adjusted_string) << " for test case [" << test_case
433 << "] with IsRTL() == " << IsRTL(); 412 << "] with IsRTL() == " << IsRTL();
434 } 413 }
435 } 414 }
436 415
437 EXPECT_EQ(was_rtl, IsRTL()); 416 EXPECT_EQ(was_rtl, IsRTL());
438 } 417 }
439 418
440 } // namespace i18n 419 } // namespace i18n
441 } // namespace base 420 } // namespace base
OLDNEW
« no previous file with comments | « base/files/file_path_unittest.cc ('k') | base/test/icu_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698