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

Side by Side Diff: source/test/cintltst/spooftest.c

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/cintltst/reapits.c ('k') | source/test/cintltst/udatpg_test.c » ('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 * COPYRIGHT: 2 * COPYRIGHT:
3 * Copyright (c) 2009-2013, International Business Machines Corporation and 3 * Copyright (c) 2009-2015, International Business Machines Corporation and
4 * others. All Rights Reserved. 4 * others. All Rights Reserved.
5 ********************************************************************/ 5 ********************************************************************/
6 /******************************************************************************* * 6 /******************************************************************************* *
7 * 7 *
8 * File spooftest.c 8 * File spooftest.c
9 * 9 *
10 ******************************************************************************** */ 10 ******************************************************************************** */
11 /*C API TEST for the uspoof Unicode Indentifier Spoofing and Security API */ 11 /*C API TEST for the uspoof Unicode Indentifier Spoofing and Security API */
12 /** 12 /**
13 * This is an API test for ICU spoof detection in plain C. It doesn't test ver y many cases, and doesn't 13 * This is an API test for ICU spoof detection in plain C. It doesn't test ver y many cases, and doesn't
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 sc = uspoof_open(&status); \ 55 sc = uspoof_open(&status); \
56 TEST_ASSERT_SUCCESS(status); \ 56 TEST_ASSERT_SUCCESS(status); \
57 if (U_SUCCESS(status)){ 57 if (U_SUCCESS(status)){
58 58
59 #define TEST_TEARDOWN \ 59 #define TEST_TEARDOWN \
60 } \ 60 } \
61 TEST_ASSERT_SUCCESS(status); \ 61 TEST_ASSERT_SUCCESS(status); \
62 uspoof_close(sc); \ 62 uspoof_close(sc); \
63 } 63 }
64 64
65 65 static void TestOpenFromSource(void);
66 static void TestUSpoofCAPI(void); 66 static void TestUSpoofCAPI(void);
67 67
68 void addUSpoofTest(TestNode** root); 68 void addUSpoofTest(TestNode** root);
69 69
70 void addUSpoofTest(TestNode** root) 70 void addUSpoofTest(TestNode** root)
71 { 71 {
72 #if !UCONFIG_NO_FILE_IO 72 #if !UCONFIG_NO_FILE_IO
73 addTest(root, &TestOpenFromSource, "uspoof/TestOpenFromSource");
74 #endif
73 addTest(root, &TestUSpoofCAPI, "uspoof/TestUSpoofCAPI"); 75 addTest(root, &TestUSpoofCAPI, "uspoof/TestUSpoofCAPI");
74 #endif
75 } 76 }
76 77
77 /* 78 /*
78 * Identifiers for verifying that spoof checking is minimally alive and working . 79 * Identifiers for verifying that spoof checking is minimally alive and working .
79 */ 80 */
80 const UChar goodLatin[] = {(UChar)0x75, (UChar)0x7a, 0}; /* "uz", all ASCII */ 81 const UChar goodLatin[] = {(UChar)0x75, (UChar)0x7a, 0}; /* "uz", all ASCII */
81 /* (not confusable ) */ 82 /* (not confusable ) */
82 const UChar scMixed[] = {(UChar)0x73, (UChar)0x0441, 0}; /* "sc", with Cyrill ic 'c' */ 83 const UChar scMixed[] = {(UChar)0x73, (UChar)0x0441, 0}; /* "sc", with Cyrill ic 'c' */
83 /* (mixed script, confusable */ 84 /* (mixed script, confusable */
84 85
(...skipping 10 matching lines...) Expand all
95 96
96 const UChar lll_Cyrl[] = {(UChar)0x0406, (UChar)0x04C0, (UChar)0x31, 0}; 97 const UChar lll_Cyrl[] = {(UChar)0x0406, (UChar)0x04C0, (UChar)0x31, 0};
97 98
98 /* The skeleton transform for all of thes 'lll' lookalikes is all lower case l. */ 99 /* The skeleton transform for all of thes 'lll' lookalikes is all lower case l. */
99 const UChar lll_Skel[] = {(UChar)0x6c, (UChar)0x6c, (UChar)0x6c, 0}; 100 const UChar lll_Skel[] = {(UChar)0x6c, (UChar)0x6c, (UChar)0x6c, 0};
100 101
101 const UChar han_Hiragana[] = {(UChar)0x3086, (UChar)0x308A, (UChar)0x0020, (UCha r)0x77F3, (UChar)0x7530, 0}; 102 const UChar han_Hiragana[] = {(UChar)0x3086, (UChar)0x308A, (UChar)0x0020, (UCha r)0x77F3, (UChar)0x7530, 0};
102 103
103 /* Provide better code coverage */ 104 /* Provide better code coverage */
104 const char goodLatinUTF8[] = {0x75, 0x77, 0}; 105 const char goodLatinUTF8[] = {0x75, 0x77, 0};
105 /*
106 * Spoof Detction C API Tests
107 */
108 static void TestUSpoofCAPI(void) {
109 106
110 /* 107 // Test open from source rules.
111 * basic uspoof_open(). 108 // Run this in isolation to verify initialization.
112 */ 109 static void TestOpenFromSource() {
113 { 110 // No TEST_SETUP because that calls uspoof_open().
114 USpoofChecker *sc; 111 UErrorCode status = U_ZERO_ERROR;
115 UErrorCode status = U_ZERO_ERROR;
116 sc = uspoof_open(&status);
117 TEST_ASSERT_SUCCESS(status);
118 if (U_FAILURE(status)) {
119 /* If things are so broken that we can't even open a default spoof c hecker, */
120 /* don't even try the rest of the tests. They would all fail. */
121 return;
122 }
123 uspoof_close(sc);
124 }
125
126
127
128 /*
129 * Test Open from source rules.
130 */
131 TEST_SETUP
132 const char *dataSrcDir; 112 const char *dataSrcDir;
133 char *fileName; 113 char *fileName;
134 char *confusables; 114 char *confusables;
135 int confusablesLength = 0; 115 int confusablesLength = 0;
136 char *confusablesWholeScript; 116 char *confusablesWholeScript;
137 int confusablesWholeScriptLength = 0; 117 int confusablesWholeScriptLength = 0;
138 FILE *f; 118 FILE *f;
139 UParseError pe; 119 UParseError pe;
140 int32_t errType; 120 int32_t errType;
121 int32_t checkResults;
141 USpoofChecker *rsc; 122 USpoofChecker *rsc;
142 123
143 dataSrcDir = ctest_dataSrcDir(); 124 dataSrcDir = ctest_dataSrcDir();
144 fileName = malloc(strlen(dataSrcDir) + 100); 125 fileName = malloc(strlen(dataSrcDir) + 100);
145 strcpy(fileName, dataSrcDir); 126 strcpy(fileName, dataSrcDir);
146 strcat(fileName, U_FILE_SEP_STRING "unidata" U_FILE_SEP_STRING "confusables. txt"); 127 strcat(fileName, U_FILE_SEP_STRING "unidata" U_FILE_SEP_STRING "confusables. txt");
147 f = fopen(fileName, "rb"); 128 f = fopen(fileName, "rb");
148 TEST_ASSERT_NE(f, NULL); 129 TEST_ASSERT_NE(f, NULL);
149 confusables = malloc(3000000); 130 confusables = malloc(3000000);
150 if (f != NULL) { 131 if (f != NULL) {
151 confusablesLength = fread(confusables, 1, 3000000, f); 132 confusablesLength = fread(confusables, 1, 3000000, f);
152 fclose(f); 133 fclose(f);
153 } 134 }
154 135
155 strcpy(fileName, dataSrcDir); 136 strcpy(fileName, dataSrcDir);
156 strcat(fileName, U_FILE_SEP_STRING "unidata" U_FILE_SEP_STRING "confusablesW holeScript.txt"); 137 strcat(fileName, U_FILE_SEP_STRING "unidata" U_FILE_SEP_STRING "confusablesW holeScript.txt");
157 f = fopen(fileName, "rb"); 138 f = fopen(fileName, "rb");
158 TEST_ASSERT_NE(f, NULL); 139 TEST_ASSERT_NE(f, NULL);
159 confusablesWholeScript = malloc(1000000); 140 confusablesWholeScript = malloc(1000000);
160 if (f != NULL) { 141 if (f != NULL) {
161 confusablesWholeScriptLength = fread(confusablesWholeScript, 1, 1000000, f); 142 confusablesWholeScriptLength = fread(confusablesWholeScript, 1, 1000000, f);
162 fclose(f); 143 fclose(f);
163 } 144 }
164 145
165 rsc = uspoof_openFromSource(confusables, confusablesLength, 146 rsc = uspoof_openFromSource(confusables, confusablesLength,
166 confusablesWholeScript, confusable sWholeScriptLength, 147 confusablesWholeScript, confusablesWholeScriptLe ngth,
167 &errType, &pe, &status); 148 &errType, &pe, &status);
168 TEST_ASSERT_SUCCESS(status); 149 TEST_ASSERT_SUCCESS(status);
169 150
151 // Ticket #11860: uspoof_openFromSource() did not initialize for use.
152 // Verify that the spoof checker does not crash.
153 checkResults = uspoof_check(rsc, goodLatin, -1, NULL, &status);
154 TEST_ASSERT_SUCCESS(status);
155 TEST_ASSERT_EQ(0, checkResults);
156
170 free(confusablesWholeScript); 157 free(confusablesWholeScript);
171 free(confusables); 158 free(confusables);
172 free(fileName); 159 free(fileName);
173 uspoof_close(rsc); 160 uspoof_close(rsc);
174 /* printf("ParseError Line is %d\n", pe.line); */ 161 /* printf("ParseError Line is %d\n", pe.line); */
175 TEST_TEARDOWN; 162 }
176 163
164 /*
165 * Spoof Detection C API Tests
166 */
167 static void TestUSpoofCAPI(void) {
168
169 /*
170 * basic uspoof_open().
171 */
172 {
173 USpoofChecker *sc;
174 UErrorCode status = U_ZERO_ERROR;
175 sc = uspoof_open(&status);
176 TEST_ASSERT_SUCCESS(status);
177 if (U_FAILURE(status)) {
178 /* If things are so broken that we can't even open a default spoof c hecker, */
179 /* don't even try the rest of the tests. They would all fail. */
180 return;
181 }
182 uspoof_close(sc);
183 }
177 184
178 /* 185 /*
179 * openFromSerialized and serialize 186 * openFromSerialized and serialize
180 */ 187 */
181 TEST_SETUP 188 TEST_SETUP
182 int32_t serializedSize = 0; 189 int32_t serializedSize = 0;
183 int32_t actualLength = 0; 190 int32_t actualLength = 0;
184 char *buf; 191 char *buf;
185 USpoofChecker *sc2; 192 USpoofChecker *sc2;
186 int32_t checkResults; 193 int32_t checkResults;
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 skelLength = uspoof_getSkeletonUTF8(sc, USPOOF_ANY_CASE, goodLatinUTF8, -1, (char*)dest, 529 skelLength = uspoof_getSkeletonUTF8(sc, USPOOF_ANY_CASE, goodLatinUTF8, -1, (char*)dest,
523 sizeof(dest)/sizeof(UChar), &status) ; 530 sizeof(dest)/sizeof(UChar), &status) ;
524 TEST_ASSERT_SUCCESS(status); 531 TEST_ASSERT_SUCCESS(status);
525 532
526 skelLength = uspoof_getSkeleton(sc, USPOOF_ANY_CASE, lll_Latin_a, -1, NU LL, 0, &status); 533 skelLength = uspoof_getSkeleton(sc, USPOOF_ANY_CASE, lll_Latin_a, -1, NU LL, 0, &status);
527 TEST_ASSERT_EQ(U_BUFFER_OVERFLOW_ERROR, status); 534 TEST_ASSERT_EQ(U_BUFFER_OVERFLOW_ERROR, status);
528 TEST_ASSERT_EQ(3, skelLength); 535 TEST_ASSERT_EQ(3, skelLength);
529 status = U_ZERO_ERROR; 536 status = U_ZERO_ERROR;
530 537
531 TEST_TEARDOWN; 538 TEST_TEARDOWN;
539
540 /*
541 * get Inclusion and Recommended sets
542 */
543 TEST_SETUP
544 const USet *inclusions = NULL;
545 const USet *recommended = NULL;
546
547 inclusions = uspoof_getInclusionSet(&status);
548 TEST_ASSERT_SUCCESS(status);
549 TEST_ASSERT_EQ(TRUE, uset_isFrozen(inclusions));
550
551 status = U_ZERO_ERROR;
552 recommended = uspoof_getRecommendedSet(&status);
553 TEST_ASSERT_SUCCESS(status);
554 TEST_ASSERT_EQ(TRUE, uset_isFrozen(recommended));
555 TEST_TEARDOWN;
556
532 } 557 }
533 558
534 #endif /* UCONFIG_NO_REGULAR_EXPRESSIONS */ 559 #endif /* UCONFIG_NO_REGULAR_EXPRESSIONS */
OLDNEW
« no previous file with comments | « source/test/cintltst/reapits.c ('k') | source/test/cintltst/udatpg_test.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698