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:
parent
cd5ec415e7
commit
d683b867bf
@ -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){
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user