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

Side by Side Diff: source/test/intltest/itspoof.cpp

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 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
« no previous file with comments | « source/test/intltest/itrbnf.cpp ('k') | source/test/intltest/itutil.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ********************************************************************** 2 **********************************************************************
3 * Copyright (C) 2011-2014, International Business Machines Corporation 3 * Copyright (C) 2011-2015, International Business Machines Corporation
4 * and others. All Rights Reserved. 4 * and others. All Rights Reserved.
5 ********************************************************************** 5 **********************************************************************
6 */ 6 */
7 /** 7 /**
8 * IntlTestSpoof tests for USpoofDetector 8 * IntlTestSpoof tests for USpoofDetector
9 */ 9 */
10 10
11 #include "unicode/utypes.h" 11 #include "unicode/utypes.h"
12 12
13 #if !UCONFIG_NO_REGULAR_EXPRESSIONS && !UCONFIG_NO_NORMALIZATION && !UCONFIG_NO_ FILE_IO 13 #if !UCONFIG_NO_REGULAR_EXPRESSIONS && !UCONFIG_NO_NORMALIZATION && !UCONFIG_NO_ FILE_IO
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 170
171 #define CHECK_SKELETON(type, input, expected) { \ 171 #define CHECK_SKELETON(type, input, expected) { \
172 checkSkeleton(sc, type, input, expected, __LINE__); \ 172 checkSkeleton(sc, type, input, expected, __LINE__); \
173 } 173 }
174 174
175 175
176 // testSkeleton. Spot check a number of confusable skeleton substitutions from the 176 // testSkeleton. Spot check a number of confusable skeleton substitutions from the
177 // Unicode data file confusables.txt 177 // Unicode data file confusables.txt
178 // Test cases chosen for substitutions of various lengths, and 178 // Test cases chosen for substitutions of various lengths, and
179 // membership in different mapping tables. 179 // membership in different mapping tables.
180 // Note: for ICU 55, all tables collapsed to the MA table data.
181 // TODO: for ICU 56 with Unicode 8, revisit this test.
182 //
180 void IntlTestSpoof::testSkeleton() { 183 void IntlTestSpoof::testSkeleton() {
181 const uint32_t ML = 0; 184 const uint32_t ML = 0;
182 const uint32_t SL = USPOOF_SINGLE_SCRIPT_CONFUSABLE; 185 const uint32_t SL = USPOOF_SINGLE_SCRIPT_CONFUSABLE;
183 const uint32_t MA = USPOOF_ANY_CASE; 186 const uint32_t MA = USPOOF_ANY_CASE;
184 const uint32_t SA = USPOOF_SINGLE_SCRIPT_CONFUSABLE | USPOOF_ANY_CASE; 187 const uint32_t SA = USPOOF_SINGLE_SCRIPT_CONFUSABLE | USPOOF_ANY_CASE;
185 188
186 TEST_SETUP 189 TEST_SETUP
187 // A long "identifier" that will overflow implementation stack buffers, forcing heap allocations.
188 CHECK_SKELETON(SL, " A 1ong \\u02b9identifier' that will overflow implem entation stack buffers, forcing heap allocations."
189 " A 1ong 'identifier' that will overflow implementati on stack buffers, forcing heap allocations."
190 " A 1ong 'identifier' that will overflow implementati on stack buffers, forcing heap allocations."
191 " A 1ong 'identifier' that will overflow implementati on stack buffers, forcing heap allocations.",
192
193 " A long 'identifier' that vvill overflovv irnplernentation stack buffers, forcing heap allocations."
194 " A long 'identifier' that vvill overflovv irnplernentation stack buffers, forcing heap allocations."
195 " A long 'identifier' that vvill overflovv irnplernentation stack buffers, forcing heap allocations."
196 " A long 'identifier' that vvill overflovv irnplernentation stack buffers, forcing heap allocations.")
197
198 CHECK_SKELETON(SL, "nochange", "nochange"); 190 CHECK_SKELETON(SL, "nochange", "nochange");
191 CHECK_SKELETON(SA, "nochange", "nochange");
192 CHECK_SKELETON(ML, "nochange", "nochange");
193 CHECK_SKELETON(MA, "nochange", "nochange");
199 CHECK_SKELETON(MA, "love", "love"); 194 CHECK_SKELETON(MA, "love", "love");
200 CHECK_SKELETON(MA, "1ove", "love"); // Digit 1 to letter l 195 CHECK_SKELETON(MA, "1ove", "love"); // Digit 1 to letter l
201 CHECK_SKELETON(ML, "OOPS", "OOPS"); 196 CHECK_SKELETON(ML, "OOPS", "OOPS");
202 CHECK_SKELETON(ML, "00PS", "00PS"); // Digit 0 unchanged in lower case mode. 197 CHECK_SKELETON(ML, "00PS", "OOPS");
203 CHECK_SKELETON(MA, "OOPS", "OOPS"); 198 CHECK_SKELETON(MA, "OOPS", "OOPS");
204 CHECK_SKELETON(MA, "00PS", "OOPS"); // Digit 0 to letter O in any case mode only 199 CHECK_SKELETON(MA, "00PS", "OOPS"); // Digit 0 to letter O in any case mode only
205 CHECK_SKELETON(SL, "\\u059c", "\\u0301"); 200 CHECK_SKELETON(SL, "\\u059c", "\\u0301");
206 CHECK_SKELETON(SL, "\\u2A74", "\\u003A\\u003A\\u003D"); 201 CHECK_SKELETON(SL, "\\u2A74", "\\u003A\\u003A\\u003D");
207 CHECK_SKELETON(SL, "\\u247E", "\\u0028\\u006C\\u006C\\u0029"); // "(ll) " 202 CHECK_SKELETON(SL, "\\u247E", "\\u0028\\u006C\\u006C\\u0029"); // "(ll) "
208 CHECK_SKELETON(SL, "\\uFDFB", "\\u062C\\u0644\\u0020\\u062C\\u0644\\u062 7\\u0644\\u0647"); 203 CHECK_SKELETON(SL, "\\uFDFB", "\\u062C\\u0644\\u0020\\u062C\\u0644\\u006 c\\u0644\\u006f");
209 204
210 // This mapping exists in the ML and MA tables, does not exist in SL, SA 205 // This mapping exists in the ML and MA tables, does not exist in SL, SA
211 //0C83 ;» 0C03 ;» 206 // 0C83 ;» 0983 ;» ML
212 CHECK_SKELETON(SL, "\\u0C83", "\\u0C83"); 207 // 0C83 ;» 0983 ;» MA
213 CHECK_SKELETON(SA, "\\u0C83", "\\u0C83"); 208 //
209
210 CHECK_SKELETON(SL, "\\u0C83", "\\u0983");
211 CHECK_SKELETON(SA, "\\u0C83", "\\u0983");
214 CHECK_SKELETON(ML, "\\u0C83", "\\u0983"); 212 CHECK_SKELETON(ML, "\\u0C83", "\\u0983");
215 CHECK_SKELETON(MA, "\\u0C83", "\\u0983"); 213 CHECK_SKELETON(MA, "\\u0C83", "\\u0983");
216 214
217 // 0391 ; 0041 ; 215 // 0391 mappings exist only in MA and SA tables.
218 // This mapping exists only in the MA table.
219 CHECK_SKELETON(MA, "\\u0391", "A"); 216 CHECK_SKELETON(MA, "\\u0391", "A");
220 CHECK_SKELETON(SA, "\\u0391", "\\u0391"); 217 CHECK_SKELETON(SA, "\\u0391", "A");
221 CHECK_SKELETON(ML, "\\u0391", "\\u0391"); 218 CHECK_SKELETON(ML, "\\u0391", "A");
222 CHECK_SKELETON(SL, "\\u0391", "\\u0391"); 219 CHECK_SKELETON(SL, "\\u0391", "A");
223 220
224 // 13CF ; 0062 ; 221 // 13CF Mappings in all four tables, different in MA.
225 // This mapping exists in the ML and MA tables
226 CHECK_SKELETON(ML, "\\u13CF", "b"); 222 CHECK_SKELETON(ML, "\\u13CF", "b");
227 CHECK_SKELETON(MA, "\\u13CF", "b"); 223 CHECK_SKELETON(MA, "\\u13CF", "b");
228 CHECK_SKELETON(SL, "\\u13CF", "\\u13CF"); 224 CHECK_SKELETON(SL, "\\u13CF", "b");
229 CHECK_SKELETON(SA, "\\u13CF", "\\u13CF"); 225 CHECK_SKELETON(SA, "\\u13CF", "b");
230 226
231 // 0022 ; 0027 0027 ; 227 // 0022 ; 0027 0027 ;
232 // all tables. 228 // all tables.
233 CHECK_SKELETON(SL, "\\u0022", "\\u0027\\u0027"); 229 CHECK_SKELETON(SL, "\\u0022", "\\u0027\\u0027");
234 CHECK_SKELETON(SA, "\\u0022", "\\u0027\\u0027"); 230 CHECK_SKELETON(SA, "\\u0022", "\\u0027\\u0027");
235 CHECK_SKELETON(ML, "\\u0022", "\\u0027\\u0027"); 231 CHECK_SKELETON(ML, "\\u0022", "\\u0027\\u0027");
236 CHECK_SKELETON(MA, "\\u0022", "\\u0027\\u0027"); 232 CHECK_SKELETON(MA, "\\u0022", "\\u0027\\u0027");
237 233
238 // 017F ; 0066 ; 234 // 017F mappings exist only in MA and SA tables.
239 // This mapping exists in the SA and MA tables
240 CHECK_SKELETON(MA, "\\u017F", "f"); 235 CHECK_SKELETON(MA, "\\u017F", "f");
241 CHECK_SKELETON(SA, "\\u017F", "f"); 236 CHECK_SKELETON(SA, "\\u017F", "f");
237 CHECK_SKELETON(ML, "\\u017F", "f");
238 CHECK_SKELETON(SL, "\\u017F", "f");
242 239
243 TEST_TEARDOWN; 240 TEST_TEARDOWN;
244 } 241 }
245 242
246 243
247 // 244 //
248 // Run a single confusable skeleton transformation test case. 245 // Run a single confusable skeleton transformation test case.
249 // 246 //
250 void IntlTestSpoof::checkSkeleton(const USpoofChecker *sc, uint32_t type, 247 void IntlTestSpoof::checkSkeleton(const USpoofChecker *sc, uint32_t type,
251 const char *input, const char *expected, int32 _t lineNum) { 248 const char *input, const char *expected, int32 _t lineNum) {
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 USpoofChecker *sc = uspoof_open(&status); 762 USpoofChecker *sc = uspoof_open(&status);
766 uspoof_setChecks(sc, USPOOF_MIXED_NUMBERS, &status); // only check this 763 uspoof_setChecks(sc, USPOOF_MIXED_NUMBERS, &status); // only check this
767 int32_t result = uspoof_checkUnicodeString(sc, testString, NULL, &status ); 764 int32_t result = uspoof_checkUnicodeString(sc, testString, NULL, &status );
768 UBool mixedNumberFailure = ((result & USPOOF_MIXED_NUMBERS) != 0); 765 UBool mixedNumberFailure = ((result & USPOOF_MIXED_NUMBERS) != 0);
769 TEST_ASSERT_MSG((expectedSet.size() > 1) == mixedNumberFailure, msgBuf); 766 TEST_ASSERT_MSG((expectedSet.size() > 1) == mixedNumberFailure, msgBuf);
770 uspoof_close(sc); 767 uspoof_close(sc);
771 } 768 }
772 } 769 }
773 770
774 #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS && !UCONFIG_NO_NORMALIZATION && !UCONF IG_NO_FILE_IO */ 771 #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS && !UCONFIG_NO_NORMALIZATION && !UCONF IG_NO_FILE_IO */
OLDNEW
« no previous file with comments | « source/test/intltest/itrbnf.cpp ('k') | source/test/intltest/itutil.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698