| Index: source/test/intltest/uts46test.cpp
|
| diff --git a/source/test/intltest/uts46test.cpp b/source/test/intltest/uts46test.cpp
|
| index 1039acdc3aafc4afc063ec2ba043f8fb9dcdb68b..5bdf305a6665ded5aa2a612d32c76cd1ecc13e0c 100644
|
| --- a/source/test/intltest/uts46test.cpp
|
| +++ b/source/test/intltest/uts46test.cpp
|
| @@ -1,6 +1,6 @@
|
| /*
|
| *******************************************************************************
|
| -* Copyright (C) 2010-2011, International Business Machines
|
| +* Copyright (C) 2010-2014, International Business Machines
|
| * Corporation and others. All Rights Reserved.
|
| *******************************************************************************
|
| * file name: uts46test.cpp
|
| @@ -25,8 +25,7 @@
|
| #include "unicode/uidna.h"
|
| #include "unicode/unistr.h"
|
| #include "intltest.h"
|
| -
|
| -#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
|
| +#include "cmemory.h"
|
|
|
| class UTS46Test : public IntlTest {
|
| public:
|
| @@ -147,7 +146,7 @@ void UTS46Test::TestAPI() {
|
| }
|
| // UTF-8
|
| char buffer[100];
|
| - TestCheckedArrayByteSink sink(buffer, LENGTHOF(buffer));
|
| + TestCheckedArrayByteSink sink(buffer, UPRV_LENGTHOF(buffer));
|
| errorCode=U_ZERO_ERROR;
|
| nontrans->labelToUnicodeUTF8(StringPiece(NULL, 5), sink, info, errorCode);
|
| if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR || sink.NumberOfBytesWritten()!=0) {
|
| @@ -214,7 +213,7 @@ void UTS46Test::TestNotSTD3() {
|
| UNICODE_STRING_SIMPLE("\\u0000a_2+2=4\\u000A.essen.net").unescape() ||
|
| info.hasErrors()
|
| ) {
|
| - prettify(result).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| + prettify(result).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| errln("notSTD3.nameToUnicode(non-LDH ASCII) unexpected errors %04lx string %s",
|
| (long)info.getErrors(), buffer);
|
| }
|
| @@ -228,7 +227,7 @@ void UTS46Test::TestNotSTD3() {
|
| input=UNICODE_STRING_SIMPLE("a\\u2260b\\u226Ec\\u226Fd").unescape();
|
| not3->nameToUnicode(input, result, info, errorCode);
|
| if(result!=input || info.hasErrors()) {
|
| - prettify(result).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| + prettify(result).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| errln("notSTD3.nameToUnicode(equiv to non-LDH ASCII) unexpected errors %04lx string %s",
|
| (long)info.getErrors(), buffer);
|
| }
|
| @@ -466,6 +465,9 @@ static const TestCase testCases[]={
|
| "1234567890123456789012345678901234567890123456789012345678901",
|
| UIDNA_ERROR_LABEL_TOO_LONG|UIDNA_ERROR_DOMAIN_NAME_TOO_LONG },
|
| // hyphen errors and empty-label errors
|
| + // Ticket #10883: ToUnicode also checks for empty labels.
|
| + { ".", "B", ".", UIDNA_ERROR_EMPTY_LABEL },
|
| + { "\\uFF0E", "B", ".", UIDNA_ERROR_EMPTY_LABEL },
|
| // "xn---q----jra"=="-q--a-umlaut-"
|
| { "a.b..-q--a-.e", "B", "a.b..-q--a-.e",
|
| UIDNA_ERROR_EMPTY_LABEL|UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN|
|
| @@ -477,11 +479,13 @@ static const TestCase testCases[]={
|
| UIDNA_ERROR_EMPTY_LABEL|UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN|
|
| UIDNA_ERROR_HYPHEN_3_4 },
|
| { "a..c", "B", "a..c", UIDNA_ERROR_EMPTY_LABEL },
|
| + { "a.xn--.c", "B", "a..c", UIDNA_ERROR_EMPTY_LABEL },
|
| { "a.-b.", "B", "a.-b.", UIDNA_ERROR_LEADING_HYPHEN },
|
| { "a.b-.c", "B", "a.b-.c", UIDNA_ERROR_TRAILING_HYPHEN },
|
| { "a.-.c", "B", "a.-.c", UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN },
|
| { "a.bc--de.f", "B", "a.bc--de.f", UIDNA_ERROR_HYPHEN_3_4 },
|
| { "\\u00E4.\\u00AD.c", "B", "\\u00E4..c", UIDNA_ERROR_EMPTY_LABEL },
|
| + { "\\u00E4.xn--.c", "B", "\\u00E4..c", UIDNA_ERROR_EMPTY_LABEL },
|
| { "\\u00E4.-b.", "B", "\\u00E4.-b.", UIDNA_ERROR_LEADING_HYPHEN },
|
| { "\\u00E4.b-.c", "B", "\\u00E4.b-.c", UIDNA_ERROR_TRAILING_HYPHEN },
|
| { "\\u00E4.-.c", "B", "\\u00E4.-.c", UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN },
|
| @@ -581,7 +585,7 @@ void UTS46Test::TestSomeCases() {
|
| IcuTestErrorCode errorCode(*this, "TestSomeCases");
|
| char buffer[400], buffer2[400];
|
| int32_t i;
|
| - for(i=0; i<LENGTHOF(testCases); ++i) {
|
| + for(i=0; i<UPRV_LENGTHOF(testCases); ++i) {
|
| const TestCase &testCase=testCases[i];
|
| UnicodeString input(ctou(testCase.s));
|
| UnicodeString expected(ctou(testCase.u));
|
| @@ -597,10 +601,9 @@ void UTS46Test::TestSomeCases() {
|
| ) {
|
| continue;
|
| }
|
| - // ToUnicode does not set length errors.
|
| + // ToUnicode does not set length-overflow errors.
|
| uint32_t uniErrors=testCase.errors&~
|
| - (UIDNA_ERROR_EMPTY_LABEL|
|
| - UIDNA_ERROR_LABEL_TOO_LONG|
|
| + (UIDNA_ERROR_LABEL_TOO_LONG|
|
| UIDNA_ERROR_DOMAIN_NAME_TOO_LONG);
|
| char mode=testCase.o[0];
|
| if(mode=='B' || mode=='N') {
|
| @@ -610,7 +613,7 @@ void UTS46Test::TestSomeCases() {
|
| continue;
|
| }
|
| if(uN!=expected) {
|
| - prettify(uN).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| + prettify(uN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| errln("N.nameToUnicode([%d] %s) unexpected string %s",
|
| (int)i, testCase.s, buffer);
|
| continue;
|
| @@ -628,7 +631,7 @@ void UTS46Test::TestSomeCases() {
|
| continue;
|
| }
|
| if(uT!=expected) {
|
| - prettify(uT).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| + prettify(uT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| errln("T.nameToUnicode([%d] %s) unexpected string %s",
|
| (int)i, testCase.s, buffer);
|
| continue;
|
| @@ -641,24 +644,24 @@ void UTS46Test::TestSomeCases() {
|
| }
|
| // ToASCII is all-ASCII if no severe errors
|
| if((aNInfo.getErrors()&severeErrors)==0 && !isASCII(aN)) {
|
| - prettify(aN).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| + prettify(aN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| errln("N.nameToASCII([%d] %s) (errors %04lx) result is not ASCII %s",
|
| (int)i, testCase.s, aNInfo.getErrors(), buffer);
|
| continue;
|
| }
|
| if((aTInfo.getErrors()&severeErrors)==0 && !isASCII(aT)) {
|
| - prettify(aT).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| + prettify(aT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| errln("T.nameToASCII([%d] %s) (errors %04lx) result is not ASCII %s",
|
| (int)i, testCase.s, aTInfo.getErrors(), buffer);
|
| continue;
|
| }
|
| if(verbose) {
|
| char m= mode=='B' ? mode : 'N';
|
| - prettify(aN).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| + prettify(aN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| logln("%c.nameToASCII([%d] %s) (errors %04lx) result string: %s",
|
| m, (int)i, testCase.s, aNInfo.getErrors(), buffer);
|
| if(mode!='B') {
|
| - prettify(aT).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| + prettify(aT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| logln("T.nameToASCII([%d] %s) (errors %04lx) result string: %s",
|
| (int)i, testCase.s, aTInfo.getErrors(), buffer);
|
| }
|
| @@ -676,32 +679,32 @@ void UTS46Test::TestSomeCases() {
|
| continue;
|
| }
|
| if(aN!=uNaN) {
|
| - prettify(aN).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| - prettify(uNaN).extract(0, 0x7fffffff, buffer2, LENGTHOF(buffer2));
|
| + prettify(aN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| + prettify(uNaN).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
|
| errln("N.nameToASCII([%d] %s)!=N.nameToUnicode().N.nameToASCII() "
|
| "(errors %04lx) %s vs. %s",
|
| (int)i, testCase.s, aNInfo.getErrors(), buffer, buffer2);
|
| continue;
|
| }
|
| if(aT!=uTaN) {
|
| - prettify(aT).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| - prettify(uTaN).extract(0, 0x7fffffff, buffer2, LENGTHOF(buffer2));
|
| + prettify(aT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| + prettify(uTaN).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
|
| errln("T.nameToASCII([%d] %s)!=T.nameToUnicode().N.nameToASCII() "
|
| "(errors %04lx) %s vs. %s",
|
| (int)i, testCase.s, aNInfo.getErrors(), buffer, buffer2);
|
| continue;
|
| }
|
| if(uN!=aNuN) {
|
| - prettify(uN).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| - prettify(aNuN).extract(0, 0x7fffffff, buffer2, LENGTHOF(buffer2));
|
| + prettify(uN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| + prettify(aNuN).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
|
| errln("N.nameToUnicode([%d] %s)!=N.nameToASCII().N.nameToUnicode() "
|
| "(errors %04lx) %s vs. %s",
|
| (int)i, testCase.s, uNInfo.getErrors(), buffer, buffer2);
|
| continue;
|
| }
|
| if(uT!=aTuN) {
|
| - prettify(uT).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| - prettify(aTuN).extract(0, 0x7fffffff, buffer2, LENGTHOF(buffer2));
|
| + prettify(uT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| + prettify(aTuN).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
|
| errln("T.nameToUnicode([%d] %s)!=T.nameToASCII().N.nameToUnicode() "
|
| "(errors %04lx) %s vs. %s",
|
| (int)i, testCase.s, uNInfo.getErrors(), buffer, buffer2);
|
| @@ -721,8 +724,8 @@ void UTS46Test::TestSomeCases() {
|
| }
|
| if(aN.indexOf((UChar)0x2e)<0) {
|
| if(aN!=aNL || aNInfo.getErrors()!=aNLInfo.getErrors()) {
|
| - prettify(aN).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| - prettify(aNL).extract(0, 0x7fffffff, buffer2, LENGTHOF(buffer2));
|
| + prettify(aN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| + prettify(aNL).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
|
| errln("N.nameToASCII([%d] %s)!=N.labelToASCII() "
|
| "(errors %04lx vs %04lx) %s vs. %s",
|
| (int)i, testCase.s, aNInfo.getErrors(), aNLInfo.getErrors(), buffer, buffer2);
|
| @@ -737,8 +740,8 @@ void UTS46Test::TestSomeCases() {
|
| }
|
| if(aT.indexOf((UChar)0x2e)<0) {
|
| if(aT!=aTL || aTInfo.getErrors()!=aTLInfo.getErrors()) {
|
| - prettify(aT).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| - prettify(aTL).extract(0, 0x7fffffff, buffer2, LENGTHOF(buffer2));
|
| + prettify(aT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| + prettify(aTL).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
|
| errln("T.nameToASCII([%d] %s)!=T.labelToASCII() "
|
| "(errors %04lx vs %04lx) %s vs. %s",
|
| (int)i, testCase.s, aTInfo.getErrors(), aTLInfo.getErrors(), buffer, buffer2);
|
| @@ -753,8 +756,8 @@ void UTS46Test::TestSomeCases() {
|
| }
|
| if(uN.indexOf((UChar)0x2e)<0) {
|
| if(uN!=uNL || uNInfo.getErrors()!=uNLInfo.getErrors()) {
|
| - prettify(uN).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| - prettify(uNL).extract(0, 0x7fffffff, buffer2, LENGTHOF(buffer2));
|
| + prettify(uN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| + prettify(uNL).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
|
| errln("N.nameToUnicode([%d] %s)!=N.labelToUnicode() "
|
| "(errors %04lx vs %04lx) %s vs. %s",
|
| (int)i, testCase.s, uNInfo.getErrors(), uNLInfo.getErrors(), buffer, buffer2);
|
| @@ -769,8 +772,8 @@ void UTS46Test::TestSomeCases() {
|
| }
|
| if(uT.indexOf((UChar)0x2e)<0) {
|
| if(uT!=uTL || uTInfo.getErrors()!=uTLInfo.getErrors()) {
|
| - prettify(uT).extract(0, 0x7fffffff, buffer, LENGTHOF(buffer));
|
| - prettify(uTL).extract(0, 0x7fffffff, buffer2, LENGTHOF(buffer2));
|
| + prettify(uT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
|
| + prettify(uTL).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
|
| errln("T.nameToUnicode([%d] %s)!=T.labelToUnicode() "
|
| "(errors %04lx vs %04lx) %s vs. %s",
|
| (int)i, testCase.s, uTInfo.getErrors(), uTLInfo.getErrors(), buffer, buffer2);
|
|
|