| OLD | NEW |
| 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" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 #if defined(WCHAR_T_IS_UTF32) | 89 #if defined(WCHAR_T_IS_UTF32) |
| 90 L" ! \x10401" L"abc 123", | 90 L" ! \x10401" L"abc 123", |
| 91 #elif defined(WCHAR_T_IS_UTF16) | 91 #elif defined(WCHAR_T_IS_UTF16) |
| 92 L" ! \xd801\xdc01" L"abc 123", | 92 L" ! \xd801\xdc01" L"abc 123", |
| 93 #else | 93 #else |
| 94 #error wchar_t should be either UTF-16 or UTF-32 | 94 #error wchar_t should be either UTF-16 or UTF-32 |
| 95 #endif | 95 #endif |
| 96 LEFT_TO_RIGHT }, | 96 LEFT_TO_RIGHT }, |
| 97 }; | 97 }; |
| 98 | 98 |
| 99 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) | 99 for (size_t i = 0; i < arraysize(cases); ++i) |
| 100 EXPECT_EQ(cases[i].direction, | 100 EXPECT_EQ(cases[i].direction, |
| 101 GetFirstStrongCharacterDirection(WideToUTF16(cases[i].text))); | 101 GetFirstStrongCharacterDirection(WideToUTF16(cases[i].text))); |
| 102 } | 102 } |
| 103 | 103 |
| 104 | 104 |
| 105 // Note that the cases with LRE, LRO, RLE and RLO are invalid for | 105 // Note that the cases with LRE, LRO, RLE and RLO are invalid for |
| 106 // GetLastStrongCharacterDirection because they should be followed by PDF | 106 // GetLastStrongCharacterDirection because they should be followed by PDF |
| 107 // character. | 107 // character. |
| 108 TEST_F(RTLTest, GetLastStrongCharacterDirection) { | 108 TEST_F(RTLTest, GetLastStrongCharacterDirection) { |
| 109 struct { | 109 struct { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 #if defined(WCHAR_T_IS_UTF32) | 151 #if defined(WCHAR_T_IS_UTF32) |
| 152 L"abc 123" L" ! \x10401 !", | 152 L"abc 123" L" ! \x10401 !", |
| 153 #elif defined(WCHAR_T_IS_UTF16) | 153 #elif defined(WCHAR_T_IS_UTF16) |
| 154 L"abc 123" L" ! \xd801\xdc01 !", | 154 L"abc 123" L" ! \xd801\xdc01 !", |
| 155 #else | 155 #else |
| 156 #error wchar_t should be either UTF-16 or UTF-32 | 156 #error wchar_t should be either UTF-16 or UTF-32 |
| 157 #endif | 157 #endif |
| 158 LEFT_TO_RIGHT }, | 158 LEFT_TO_RIGHT }, |
| 159 }; | 159 }; |
| 160 | 160 |
| 161 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) | 161 for (size_t i = 0; i < arraysize(cases); ++i) |
| 162 EXPECT_EQ(cases[i].direction, | 162 EXPECT_EQ(cases[i].direction, |
| 163 GetLastStrongCharacterDirection(WideToUTF16(cases[i].text))); | 163 GetLastStrongCharacterDirection(WideToUTF16(cases[i].text))); |
| 164 } | 164 } |
| 165 | 165 |
| 166 TEST_F(RTLTest, GetStringDirection) { | 166 TEST_F(RTLTest, GetStringDirection) { |
| 167 struct { | 167 struct { |
| 168 const wchar_t* text; | 168 const wchar_t* text; |
| 169 TextDirection direction; | 169 TextDirection direction; |
| 170 } cases[] = { | 170 } cases[] = { |
| 171 // Test pure LTR string. | 171 // Test pure LTR string. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 #if defined(WCHAR_T_IS_UTF32) | 229 #if defined(WCHAR_T_IS_UTF32) |
| 230 L" ! \x10401" L"abc 123", | 230 L" ! \x10401" L"abc 123", |
| 231 #elif defined(WCHAR_T_IS_UTF16) | 231 #elif defined(WCHAR_T_IS_UTF16) |
| 232 L" ! \xd801\xdc01" L"abc 123", | 232 L" ! \xd801\xdc01" L"abc 123", |
| 233 #else | 233 #else |
| 234 #error wchar_t should be either UTF-16 or UTF-32 | 234 #error wchar_t should be either UTF-16 or UTF-32 |
| 235 #endif | 235 #endif |
| 236 LEFT_TO_RIGHT }, | 236 LEFT_TO_RIGHT }, |
| 237 }; | 237 }; |
| 238 | 238 |
| 239 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) | 239 for (size_t i = 0; i < arraysize(cases); ++i) |
| 240 EXPECT_EQ(cases[i].direction, | 240 EXPECT_EQ(cases[i].direction, |
| 241 GetStringDirection(WideToUTF16(cases[i].text))); | 241 GetStringDirection(WideToUTF16(cases[i].text))); |
| 242 } | 242 } |
| 243 | 243 |
| 244 TEST_F(RTLTest, WrapPathWithLTRFormatting) { | 244 TEST_F(RTLTest, WrapPathWithLTRFormatting) { |
| 245 const wchar_t* cases[] = { | 245 const wchar_t* cases[] = { |
| 246 // Test common path, such as "c:\foo\bar". | 246 // Test common path, such as "c:\foo\bar". |
| 247 L"c:/foo/bar", | 247 L"c:/foo/bar", |
| 248 // Test path with file name, such as "c:\foo\bar\test.jpg". | 248 // Test path with file name, such as "c:\foo\bar\test.jpg". |
| 249 L"c:/foo/bar/test.jpg", | 249 L"c:/foo/bar/test.jpg", |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 { L"\x05d0" L"abc.txt", true, true }, | 348 { L"\x05d0" L"abc.txt", true, true }, |
| 349 { L"abc\x05d0\x05d1", false, true }, | 349 { L"abc\x05d0\x05d1", false, true }, |
| 350 { L"abc\x05d0\x05d1.jpg", false, true }, | 350 { L"abc\x05d0\x05d1.jpg", false, true }, |
| 351 }; | 351 }; |
| 352 | 352 |
| 353 const bool was_rtl = IsRTL(); | 353 const bool was_rtl = IsRTL(); |
| 354 | 354 |
| 355 for (size_t i = 0; i < 2; ++i) { | 355 for (size_t i = 0; i < 2; ++i) { |
| 356 // Toggle the application default text direction (to try each direction). | 356 // Toggle the application default text direction (to try each direction). |
| 357 SetRTL(!IsRTL()); | 357 SetRTL(!IsRTL()); |
| 358 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | 358 for (size_t i = 0; i < arraysize(cases); ++i) { |
| 359 string16 input = WideToUTF16(cases[i].path); | 359 string16 input = WideToUTF16(cases[i].path); |
| 360 string16 output = GetDisplayStringInLTRDirectionality(input); | 360 string16 output = GetDisplayStringInLTRDirectionality(input); |
| 361 // Test the expected wrapping behavior for the current UI directionality. | 361 // Test the expected wrapping behavior for the current UI directionality. |
| 362 if (IsRTL() ? cases[i].wrap_rtl : cases[i].wrap_ltr) | 362 if (IsRTL() ? cases[i].wrap_rtl : cases[i].wrap_ltr) |
| 363 EXPECT_NE(output, input); | 363 EXPECT_NE(output, input); |
| 364 else | 364 else |
| 365 EXPECT_EQ(output, input); | 365 EXPECT_EQ(output, input); |
| 366 } | 366 } |
| 367 } | 367 } |
| 368 | 368 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 EXPECT_EQ(test_case, adjusted_string) << " for test case [" << test_case | 432 EXPECT_EQ(test_case, adjusted_string) << " for test case [" << test_case |
| 433 << "] with IsRTL() == " << IsRTL(); | 433 << "] with IsRTL() == " << IsRTL(); |
| 434 } | 434 } |
| 435 } | 435 } |
| 436 | 436 |
| 437 EXPECT_EQ(was_rtl, IsRTL()); | 437 EXPECT_EQ(was_rtl, IsRTL()); |
| 438 } | 438 } |
| 439 | 439 |
| 440 } // namespace i18n | 440 } // namespace i18n |
| 441 } // namespace base | 441 } // namespace base |
| OLD | NEW |