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

Side by Side Diff: base/string_util_unittest.cc

Issue 267001: Separate out some more ICU from base and into base/i18n.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « base/string_util_icu.cc ('k') | chrome/browser/autocomplete/autocomplete.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) 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 <math.h> 5 #include <math.h>
6 #include <stdarg.h> 6 #include <stdarg.h>
7 7
8 #include <limits> 8 #include <limits>
9 #include <sstream> 9 #include <sstream>
10 10
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 93
94 std::string output_ascii; 94 std::string output_ascii;
95 for (size_t i = 0; i < arraysize(trim_cases_ascii); ++i) { 95 for (size_t i = 0; i < arraysize(trim_cases_ascii); ++i) {
96 const trim_case_ascii& value = trim_cases_ascii[i]; 96 const trim_case_ascii& value = trim_cases_ascii[i];
97 EXPECT_EQ(value.return_value, 97 EXPECT_EQ(value.return_value,
98 TrimWhitespace(value.input, value.positions, &output_ascii)); 98 TrimWhitespace(value.input, value.positions, &output_ascii));
99 EXPECT_EQ(value.output, output_ascii); 99 EXPECT_EQ(value.output, output_ascii);
100 } 100 }
101 } 101 }
102 102
103 static const struct trim_case_utf8 {
104 const char* input;
105 const TrimPositions positions;
106 const char* output;
107 const TrimPositions return_value;
108 } trim_cases_utf8[] = {
109 // UTF-8 strings that start (and end) with Unicode space characters
110 // (including zero-width spaces).
111 {"\xE2\x80\x80Test String\xE2\x80\x81", TRIM_ALL, "Test String", TRIM_ALL},
112 {"\xE2\x80\x82Test String\xE2\x80\x83", TRIM_ALL, "Test String", TRIM_ALL},
113 {"\xE2\x80\x84Test String\xE2\x80\x85", TRIM_ALL, "Test String", TRIM_ALL},
114 {"\xE2\x80\x86Test String\xE2\x80\x87", TRIM_ALL, "Test String", TRIM_ALL},
115 {"\xE2\x80\x88Test String\xE2\x80\x8A", TRIM_ALL, "Test String", TRIM_ALL},
116 {"\xE3\x80\x80Test String\xE3\x80\x80", TRIM_ALL, "Test String", TRIM_ALL},
117 // UTF-8 strings that end with 0x85 (NEL in ISO-8859).
118 {"\xD0\x85", TRIM_TRAILING, "\xD0\x85", TRIM_NONE},
119 {"\xD9\x85", TRIM_TRAILING, "\xD9\x85", TRIM_NONE},
120 {"\xEC\x97\x85", TRIM_TRAILING, "\xEC\x97\x85", TRIM_NONE},
121 {"\xF0\x90\x80\x85", TRIM_TRAILING, "\xF0\x90\x80\x85", TRIM_NONE},
122 // UTF-8 strings that end with 0xA0 (non-break space in ISO-8859-1).
123 {"\xD0\xA0", TRIM_TRAILING, "\xD0\xA0", TRIM_NONE},
124 {"\xD9\xA0", TRIM_TRAILING, "\xD9\xA0", TRIM_NONE},
125 {"\xEC\x97\xA0", TRIM_TRAILING, "\xEC\x97\xA0", TRIM_NONE},
126 {"\xF0\x90\x80\xA0", TRIM_TRAILING, "\xF0\x90\x80\xA0", TRIM_NONE},
127 };
128
129 TEST(StringUtilTest, TrimWhitespaceUTF8) {
130 std::string output_ascii;
131 for (size_t i = 0; i < arraysize(trim_cases_ascii); ++i) {
132 const trim_case_ascii& value = trim_cases_ascii[i];
133 EXPECT_EQ(value.return_value,
134 TrimWhitespaceASCII(value.input, value.positions, &output_ascii));
135 EXPECT_EQ(value.output, output_ascii);
136 }
137
138 // Test that TrimWhiteSpaceUTF8() can remove Unicode space characters and
139 // prevent from removing UTF-8 characters that end with an ISO-8859 NEL.
140 std::string output_utf8;
141 for (size_t i = 0; i < arraysize(trim_cases_utf8); ++i) {
142 const trim_case_utf8& value = trim_cases_utf8[i];
143 EXPECT_EQ(value.return_value,
144 TrimWhitespaceUTF8(value.input, value.positions, &output_utf8));
145 EXPECT_EQ(value.output, output_utf8);
146 }
147 }
148
149 static const struct collapse_case { 103 static const struct collapse_case {
150 const wchar_t* input; 104 const wchar_t* input;
151 const bool trim; 105 const bool trim;
152 const wchar_t* output; 106 const wchar_t* output;
153 } collapse_cases[] = { 107 } collapse_cases[] = {
154 {L" Google Video ", false, L"Google Video"}, 108 {L" Google Video ", false, L"Google Video"},
155 {L"Google Video", false, L"Google Video"}, 109 {L"Google Video", false, L"Google Video"},
156 {L"", false, L""}, 110 {L"", false, L""},
157 {L" ", false, L""}, 111 {L" ", false, L""},
158 {L"\t\rTest String\n", false, L"Test String"}, 112 {L"\t\rTest String\n", false, L"Test String"},
(...skipping 1680 matching lines...) Expand 10 before | Expand all | Expand 10 after
1839 } 1793 }
1840 } 1794 }
1841 1795
1842 TEST(StringUtilTest, HexEncode) { 1796 TEST(StringUtilTest, HexEncode) {
1843 std::string hex(HexEncode(NULL, 0)); 1797 std::string hex(HexEncode(NULL, 0));
1844 EXPECT_EQ(hex.length(), 0U); 1798 EXPECT_EQ(hex.length(), 0U);
1845 unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81}; 1799 unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81};
1846 hex = HexEncode(bytes, sizeof(bytes)); 1800 hex = HexEncode(bytes, sizeof(bytes));
1847 EXPECT_EQ(hex.compare("01FF02FE038081"), 0); 1801 EXPECT_EQ(hex.compare("01FF02FE038081"), 0);
1848 } 1802 }
OLDNEW
« no previous file with comments | « base/string_util_icu.cc ('k') | chrome/browser/autocomplete/autocomplete.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698