ICU-8874 Fixed test case problem which triggered TestIDNAMonkeyTest failure intermittently. Also updated TestCompareReferenceImpl to cover the case which used to trigger the test failure.

X-SVN-Rev: 30804
This commit is contained in:
Yoshito Umaoka 2011-10-07 22:28:32 +00:00
parent cd5ec415e7
commit d683b867bf
2 changed files with 33 additions and 30 deletions

View File

@ -1,7 +1,7 @@
/*
*******************************************************************************
*
* Copyright (C) 2003-2007, International Business Machines
* Copyright (C) 2003-2011, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
@ -285,31 +285,33 @@ idnaref_toASCII(const UChar* src, int32_t srcLength,
}
b1[b1Len++] = src[j];
}
// step 2
NamePrepTransform* prep = TestIDNA::getInstance(*status);
NamePrepTransform* prep = TestIDNA::getInstance(*status);
if(U_FAILURE(*status)){
goto CLEANUP;
}
b1Len = prep->process(src,srcLength,b1, b1Capacity,allowUnassigned,parseError,*status);
// step 2 is performed only if the source contains non ASCII
if (!srcIsASCII) {
b1Len = prep->process(src,srcLength,b1, b1Capacity,allowUnassigned,parseError,*status);
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
if(b1==NULL){
*status = U_MEMORY_ALLOCATION_ERROR;
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
if(b1==NULL){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
*status = U_ZERO_ERROR; // reset error
b1Len = prep->process(src,srcLength,b1, b1Len,allowUnassigned, parseError, *status);
}
// error bail out
if(U_FAILURE(*status)){
goto CLEANUP;
}
*status = U_ZERO_ERROR; // reset error
b1Len = prep->process(src,srcLength,b1, b1Len,allowUnassigned, parseError, *status);
}
// error bail out
if(U_FAILURE(*status)){
goto CLEANUP;
}
if(b1Len == 0){

View File

@ -1,7 +1,7 @@
/*
*******************************************************************************
*
* Copyright (C) 2003-2010, International Business Machines
* Copyright (C) 2003-2011, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
@ -1520,23 +1520,24 @@ void TestIDNA::TestIDNAMonkeyTest(){
}
void TestIDNA::TestCompareReferenceImpl(){
UChar src [2] = {0,0};
int32_t srcLen = 0;
for(int32_t i = 0x40000 ; i< 0x10ffff; i++){
if(quick==TRUE && i> 0x1FFFF){
for (int32_t i = 0; i <= 0x10FFFF; i++){
if (quick == TRUE && i > 0x0FFF){
return;
}
if(i >= 0x30000 && i <= 0xF0000){
i+=0xB0000;
if(i == 0x30000){
// jump to E0000, no characters assigned in plain 3 to plain 13 as of Unicode 6.0
i = 0xE0000;
}
if(i>0xFFFF){
src[0] = U16_LEAD(i);
src[1] = U16_TRAIL(i);
srcLen =2;
}else{
if (i > 0xFFFF){
src[0] = U16_LEAD(i);
src[1] = U16_TRAIL(i);
srcLen =2;
} else {
src[0] = (UChar)i;
src[1] = 0;
srcLen = 1;