ICU-5273 fix IDNAToUnicode to not fail on error

X-SVN-Rev: 21291
This commit is contained in:
Ram Viswanadha 2007-03-19 14:33:15 +00:00
parent 6d0424e16d
commit 17b9524e72

View File

@ -37,7 +37,7 @@ static void TestUnicode32Norm(void);
static void TestJB4490(void);
static void TestJB4475(void);
static void TestLength(void);
static void TestJB5273(void);
void addIDNATest(TestNode** root);
@ -65,6 +65,7 @@ addIDNATest(TestNode** root)
addTest(root, &TestJB4490, "idna/TestJB4490");
addTest(root, &TestJB4475, "idna/TestJB4475");
addTest(root, &TestLength, "idna/TestLength");
addTest(root, &TestJB5273, "idna/TestJB5273");
}
static void
@ -656,9 +657,8 @@ static void TestUnicode32Norm() {
errorCode=U_ZERO_ERROR;
length=uidna_toASCII(strings[i], -1, ascii, LENGTHOF(ascii), 0, NULL, &errorCode);
length=uidna_toUnicode(ascii, length, unicode, LENGTHOF(unicode), 0, NULL, &errorCode);
if(errorCode!=U_IDNA_VERIFICATION_ERROR) {
log_err("string %d yields %s instead of U_IDNA_VERIFICATION_ERROR\n",
i, u_errorName(errorCode));
if(u_strncmp(ascii, unicode, length)!=0) {
log_err("Did not get the correct output\n");
}
}
}
@ -844,6 +844,34 @@ static void TestLength(){
}
}
}
static void TestJB5273(){
char* INVALID_DOMAIN_NAME = "xn--m\u00FCller.de";
UChar invalid_idn[25] = {'\0'};
int32_t len = u_unescape(INVALID_DOMAIN_NAME, invalid_idn, strlen(INVALID_DOMAIN_NAME));
UChar output[50] = {'\0'};
UErrorCode status = U_ZERO_ERROR;
UParseError prsError;
int32_t outLen = uidna_toUnicode(invalid_idn, len, output, 50, UIDNA_DEFAULT, &prsError, &status);
if(U_FAILURE(status)){
log_err("uidna_toUnicode failed with error: %s\n", u_errorName(status));
}
status = U_ZERO_ERROR;
outLen = uidna_toUnicode(invalid_idn, len, output, 50, UIDNA_USE_STD3_RULES, &prsError, &status);
if(U_FAILURE(status)){
log_err("uidna_toUnicode failed with error: %s\n", u_errorName(status));
}
status = U_ZERO_ERROR;
outLen = uidna_IDNToUnicode(invalid_idn, len, output, 50, UIDNA_DEFAULT, &prsError, &status);
if(U_FAILURE(status)){
log_err("uidna_toUnicode failed with error: %s\n", u_errorName(status));
}
status = U_ZERO_ERROR;
outLen = uidna_IDNToUnicode(invalid_idn, len, output, 50, UIDNA_USE_STD3_RULES, &prsError, &status);
if(U_FAILURE(status)){
log_err("uidna_toUnicode failed with error: %s\n", u_errorName(status));
}
}
#endif
/*