Index: source/test/cintltst/cbiditst.c |
diff --git a/source/test/cintltst/cbiditst.c b/source/test/cintltst/cbiditst.c |
index c896ce3fc2b6d823868ea473c2daad8430644860..dd39b027442382cbf1b55e85eb981de463725175 100644 |
--- a/source/test/cintltst/cbiditst.c |
+++ b/source/test/cintltst/cbiditst.c |
@@ -1,6 +1,6 @@ |
/******************************************************************** |
* COPYRIGHT: |
- * Copyright (c) 1997-2013, International Business Machines Corporation and |
+ * Copyright (c) 1997-2014, International Business Machines Corporation and |
* others. All Rights Reserved. |
********************************************************************/ |
/* file name: cbiditst.c |
@@ -24,7 +24,6 @@ |
#include <stdio.h> |
#define MAXLEN MAX_STRING_LENGTH |
-#define LENGTHOF(array) (sizeof(array)/sizeof((array)[0])) |
/* prototypes ---------------------------------------------------------------*/ |
@@ -70,6 +69,10 @@ static void doArabicShapingTestForBug8703(void); |
static void doArabicShapingTestForBug9024(void); |
+static void _testPresentationForms(const UChar *in); |
+ |
+static void doArabicShapingTestForNewCharacters(void); |
+ |
static void testReorder(void); |
static void testReorderArabicMathSymbols(void); |
@@ -143,6 +146,7 @@ addComplexTest(TestNode** root) { |
addTest(root, doArabicShapingTestForBug8703, "complex/arabic-shaping/bug-8703"); |
addTest(root, testReorderArabicMathSymbols, "complex/bidi/bug-9024"); |
addTest(root, doArabicShapingTestForBug9024, "complex/arabic-shaping/bug-9024"); |
+ addTest(root, doArabicShapingTestForNewCharacters, "complex/arabic-shaping/shaping2"); |
} |
static void |
@@ -728,7 +732,7 @@ testReorder(void) { |
log_verbose("\nEntering TestReorder\n\n"); |
- for(i=0;i<LENGTHOF(logicalOrder);i++){ |
+ for(i=0;i<UPRV_LENGTHOF(logicalOrder);i++){ |
int32_t srcSize = (int32_t)strlen(logicalOrder[i]); |
int32_t destSize = srcSize*2; |
UChar src[MAXLEN]; |
@@ -763,7 +767,7 @@ testReorder(void) { |
checkWhatYouCan(bidi, logicalOrder[i], chars); |
} |
- for(i=0;i<LENGTHOF(logicalOrder);i++){ |
+ for(i=0;i<UPRV_LENGTHOF(logicalOrder);i++){ |
int32_t srcSize = (int32_t)strlen(logicalOrder[i]); |
int32_t destSize = srcSize*2; |
UChar src[MAXLEN]; |
@@ -797,7 +801,7 @@ testReorder(void) { |
} |
} |
- for(i=0;i<LENGTHOF(logicalOrder);i++){ |
+ for(i=0;i<UPRV_LENGTHOF(logicalOrder);i++){ |
int32_t srcSize = (int32_t)strlen(logicalOrder[i]); |
int32_t destSize = srcSize*2; |
UChar src[MAXLEN]; |
@@ -828,7 +832,7 @@ testReorder(void) { |
} |
} |
/* Max Explicit level */ |
- for(i=0;i<LENGTHOF(logicalOrder);i++){ |
+ for(i=0;i<UPRV_LENGTHOF(logicalOrder);i++){ |
int32_t srcSize = (int32_t)strlen(logicalOrder[i]); |
int32_t destSize = srcSize*2; |
UChar src[MAXLEN]; |
@@ -862,7 +866,7 @@ testReorder(void) { |
logicalOrder[i],visualOrder3[i],chars,formatLevels(bidi, formatChars),i); |
} |
} |
- for(i=0;i<LENGTHOF(logicalOrder);i++){ |
+ for(i=0;i<UPRV_LENGTHOF(logicalOrder);i++){ |
int32_t srcSize = (int32_t)strlen(logicalOrder[i]); |
int32_t destSize = srcSize*2; |
UChar src[MAXLEN]; |
@@ -990,7 +994,7 @@ testReorderArabicMathSymbols(void) { |
log_verbose("\nEntering TestReorderArabicMathSymbols\n\n"); |
- for(i=0;i<LENGTHOF(logicalOrder);i++){ |
+ for(i=0;i<UPRV_LENGTHOF(logicalOrder);i++){ |
int32_t srcSize = u_strlen(logicalOrder[i]); |
int32_t destSize = srcSize*2; |
UChar dest[MAXLEN]; |
@@ -1282,7 +1286,7 @@ _testReordering(UBiDi *pBiDi, int testNumber) { |
return; \ |
} \ |
-#define STRING_TEST_CASE(s) { (s), LENGTHOF(s) } |
+#define STRING_TEST_CASE(s) { (s), UPRV_LENGTHOF(s) } |
static void testGetBaseDirection(void) { |
UBiDiDirection dir; |
@@ -1352,9 +1356,9 @@ static void testGetBaseDirection(void) { |
}; |
log_verbose("testGetBaseDirection() with %u test cases ---\n", |
- LENGTHOF(testCases)); |
+ UPRV_LENGTHOF(testCases)); |
/* Run Tests */ |
- for(i=0; i<LENGTHOF(testCases); ++i) { |
+ for(i=0; i<UPRV_LENGTHOF(testCases); ++i) { |
dir = ubidi_getBaseDirection(testCases[i].s, testCases[i].length ); |
log_verbose("Testing case %d\tReceived dir %d\n", i, dir); |
if (dir != expectedDir[i]) |
@@ -2129,7 +2133,7 @@ testMultipleParagraphs(void) { |
*/ |
pBidi = ubidi_open(); |
errorCode = U_ZERO_ERROR; |
- ubidi_setPara(pBidi, multiparaTestString, LENGTHOF(multiparaTestString), |
+ ubidi_setPara(pBidi, multiparaTestString, UPRV_LENGTHOF(multiparaTestString), |
UBIDI_DEFAULT_LTR, NULL, &errorCode); |
if (U_FAILURE(errorCode)) { |
log_err("ubidi_setPara failed for multiparaTestString\n"); |
@@ -2142,7 +2146,7 @@ testMultipleParagraphs(void) { |
ubidi_close(pBidi); |
return; |
} |
- for (i = 0; i < LENGTHOF(multiparaTestString); i++) { |
+ for (i = 0; i < UPRV_LENGTHOF(multiparaTestString); i++) { |
if (gotLevels[i] != multiparaTestLevels[i]) { |
log_err("Error on level for multiparaTestString at index %d, " |
"expected=%d, actual=%d\n", |
@@ -2158,7 +2162,7 @@ testMultipleParagraphs(void) { |
static int countRoundtrips=0, countNonRoundtrips=0; |
-#define STRING_TEST_CASE(s) { (s), LENGTHOF(s) } |
+#define STRING_TEST_CASE(s) { (s), UPRV_LENGTHOF(s) } |
static void |
testInverse(void) { |
@@ -2191,15 +2195,15 @@ testInverse(void) { |
return; |
} |
- log_verbose("inverse Bidi: testInverse(L) with %u test cases ---\n", LENGTHOF(testCases)); |
- for(i=0; i<LENGTHOF(testCases); ++i) { |
+ log_verbose("inverse Bidi: testInverse(L) with %u test cases ---\n", UPRV_LENGTHOF(testCases)); |
+ for(i=0; i<UPRV_LENGTHOF(testCases); ++i) { |
log_verbose("Testing case %d\n", i); |
errorCode=U_ZERO_ERROR; |
_testInverseBidi(pBiDi, testCases[i].s, testCases[i].length, 0, &errorCode); |
} |
- log_verbose("inverse Bidi: testInverse(R) with %u test cases ---\n", LENGTHOF(testCases)); |
- for(i=0; i<LENGTHOF(testCases); ++i) { |
+ log_verbose("inverse Bidi: testInverse(R) with %u test cases ---\n", UPRV_LENGTHOF(testCases)); |
+ for(i=0; i<UPRV_LENGTHOF(testCases); ++i) { |
log_verbose("Testing case %d\n", i); |
errorCode=U_ZERO_ERROR; |
_testInverseBidi(pBiDi, testCases[i].s, testCases[i].length, 1, &errorCode); |
@@ -2276,7 +2280,7 @@ _testInverseBidi(UBiDi *pBiDi, const UChar *src, int32_t srcLength, |
if (src != ubidi_getText(pBiDi)) { |
log_err("Wrong value returned by ubidi_getText\n"); |
} |
- logicalLength=ubidi_writeReordered(pBiDi, logicalDest, LENGTHOF(logicalDest), |
+ logicalLength=ubidi_writeReordered(pBiDi, logicalDest, UPRV_LENGTHOF(logicalDest), |
UBIDI_DO_MIRRORING|UBIDI_INSERT_LRM_FOR_NUMERIC, pErrorCode); |
log_verbose(" v "); |
printUnicode(src, srcLength, ubidi_getLevels(pBiDi, pErrorCode)); |
@@ -2288,13 +2292,13 @@ _testInverseBidi(UBiDi *pBiDi, const UChar *src, int32_t srcLength, |
log_err("Error while doing ubidi_setInverse(FALSE)\n"); |
} |
ubidi_setPara(pBiDi, logicalDest, logicalLength, 0, NULL, pErrorCode); |
- visualLength=ubidi_writeReordered(pBiDi, visualDest, LENGTHOF(visualDest), |
+ visualLength=ubidi_writeReordered(pBiDi, visualDest, UPRV_LENGTHOF(visualDest), |
UBIDI_DO_MIRRORING|UBIDI_REMOVE_BIDI_CONTROLS, pErrorCode); |
} else { |
log_verbose("inverse Bidi: testInverse(R)\n"); |
/* reverse visual from RTL to LTR */ |
- ltrLength=ubidi_writeReverse(src, srcLength, visualLTR, LENGTHOF(visualLTR), 0, pErrorCode); |
+ ltrLength=ubidi_writeReverse(src, srcLength, visualLTR, UPRV_LENGTHOF(visualLTR), 0, pErrorCode); |
log_verbose(" vr"); |
printUnicode(src, srcLength, NULL); |
log_verbose("\n"); |
@@ -2302,7 +2306,7 @@ _testInverseBidi(UBiDi *pBiDi, const UChar *src, int32_t srcLength, |
/* convert visual RTL to logical */ |
ubidi_setInverse(pBiDi, TRUE); |
ubidi_setPara(pBiDi, visualLTR, ltrLength, 0, NULL, pErrorCode); |
- logicalLength=ubidi_writeReordered(pBiDi, logicalDest, LENGTHOF(logicalDest), |
+ logicalLength=ubidi_writeReordered(pBiDi, logicalDest, UPRV_LENGTHOF(logicalDest), |
UBIDI_DO_MIRRORING|UBIDI_INSERT_LRM_FOR_NUMERIC, pErrorCode); |
log_verbose(" vl"); |
printUnicode(visualLTR, ltrLength, ubidi_getLevels(pBiDi, pErrorCode)); |
@@ -2311,7 +2315,7 @@ _testInverseBidi(UBiDi *pBiDi, const UChar *src, int32_t srcLength, |
/* convert back to visual RTL */ |
ubidi_setInverse(pBiDi, FALSE); |
ubidi_setPara(pBiDi, logicalDest, logicalLength, 0, NULL, pErrorCode); |
- visualLength=ubidi_writeReordered(pBiDi, visualDest, LENGTHOF(visualDest), |
+ visualLength=ubidi_writeReordered(pBiDi, visualDest, UPRV_LENGTHOF(visualDest), |
UBIDI_DO_MIRRORING|UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_OUTPUT_REVERSE, pErrorCode); |
} |
log_verbose(" l "); |
@@ -2352,25 +2356,25 @@ _testWriteReverse(void) { |
/* test ubidi_writeReverse() with "interesting" options */ |
errorCode=U_ZERO_ERROR; |
- length=ubidi_writeReverse(forward, LENGTHOF(forward), |
- reverse, LENGTHOF(reverse), |
+ length=ubidi_writeReverse(forward, UPRV_LENGTHOF(forward), |
+ reverse, UPRV_LENGTHOF(reverse), |
UBIDI_KEEP_BASE_COMBINING, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(reverseKeepCombining) || memcmp(reverse, reverseKeepCombining, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(reverseKeepCombining) || memcmp(reverse, reverseKeepCombining, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in ubidi_writeReverse(UBIDI_KEEP_BASE_COMBINING): length=%d (should be %d), error code %s\n", |
- length, LENGTHOF(reverseKeepCombining), u_errorName(errorCode)); |
+ length, UPRV_LENGTHOF(reverseKeepCombining), u_errorName(errorCode)); |
} |
- memset(reverse, 0xa5, LENGTHOF(reverse)*U_SIZEOF_UCHAR); |
+ memset(reverse, 0xa5, UPRV_LENGTHOF(reverse)*U_SIZEOF_UCHAR); |
errorCode=U_ZERO_ERROR; |
- length=ubidi_writeReverse(forward, LENGTHOF(forward), |
- reverse, LENGTHOF(reverse), |
+ length=ubidi_writeReverse(forward, UPRV_LENGTHOF(forward), |
+ reverse, UPRV_LENGTHOF(reverse), |
UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_DO_MIRRORING|UBIDI_KEEP_BASE_COMBINING, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(reverseRemoveControlsKeepCombiningDoMirror) || memcmp(reverse, reverseRemoveControlsKeepCombiningDoMirror, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(reverseRemoveControlsKeepCombiningDoMirror) || memcmp(reverse, reverseRemoveControlsKeepCombiningDoMirror, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in ubidi_writeReverse(UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_DO_MIRRORING|UBIDI_KEEP_BASE_COMBINING):\n" |
" length=%d (should be %d), error code %s\n", |
- length, LENGTHOF(reverseRemoveControlsKeepCombiningDoMirror), u_errorName(errorCode)); |
+ length, UPRV_LENGTHOF(reverseRemoveControlsKeepCombiningDoMirror), u_errorName(errorCode)); |
} |
} |
@@ -2379,16 +2383,16 @@ static void _testManyAddedPoints(void) { |
UBiDi *bidi = ubidi_open(); |
UChar text[90], dest[MAXLEN], expected[120]; |
int destLen, i; |
- for (i = 0; i < LENGTHOF(text); i+=3) { |
+ for (i = 0; i < UPRV_LENGTHOF(text); i+=3) { |
text[i] = 0x0061; /* 'a' */ |
text[i+1] = 0x05d0; |
text[i+2] = 0x0033; /* '3' */ |
} |
ubidi_setReorderingMode(bidi, UBIDI_REORDER_INVERSE_LIKE_DIRECT); |
ubidi_setReorderingOptions(bidi, UBIDI_OPTION_INSERT_MARKS); |
- ubidi_setPara(bidi, text, LENGTHOF(text), UBIDI_LTR, NULL, &errorCode); |
+ ubidi_setPara(bidi, text, UPRV_LENGTHOF(text), UBIDI_LTR, NULL, &errorCode); |
destLen = ubidi_writeReordered(bidi, dest, MAXLEN, 0, &errorCode); |
- for (i = 0; i < LENGTHOF(expected); i+=4) { |
+ for (i = 0; i < UPRV_LENGTHOF(expected); i+=4) { |
expected[i] = 0x0061; /* 'a' */ |
expected[i+1] = 0x05d0; |
expected[i+2] = 0x200e; |
@@ -2397,7 +2401,7 @@ static void _testManyAddedPoints(void) { |
if (memcmp(dest, expected, destLen * sizeof(UChar))) { |
log_err("\nInvalid output with many added points, " |
"expected '%s', got '%s'\n", |
- aescstrdup(expected, LENGTHOF(expected)), |
+ aescstrdup(expected, UPRV_LENGTHOF(expected)), |
aescstrdup(dest, destLen)); |
} |
ubidi_close(bidi); |
@@ -2410,7 +2414,7 @@ static void _testMisc(void) { |
int destLen; |
ubidi_setInverse(bidi, TRUE); |
src[0] = src[1] = src[2] = 0x0020; |
- ubidi_setPara(bidi, src, LENGTHOF(src), UBIDI_RTL, NULL, &errorCode); |
+ ubidi_setPara(bidi, src, UPRV_LENGTHOF(src), UBIDI_RTL, NULL, &errorCode); |
destLen = ubidi_writeReordered(bidi, dest, MAXLEN, |
UBIDI_OUTPUT_REVERSE | UBIDI_INSERT_LRM_FOR_NUMERIC, |
&errorCode); |
@@ -2418,7 +2422,7 @@ static void _testMisc(void) { |
if (memcmp(dest, expected, destLen * sizeof(UChar))) { |
log_err("\nInvalid output with RLM at both sides, " |
"expected '%s', got '%s'\n", |
- aescstrdup(expected, LENGTHOF(expected)), |
+ aescstrdup(expected, UPRV_LENGTHOF(expected)), |
aescstrdup(dest, destLen)); |
} |
ubidi_close(bidi); |
@@ -2460,18 +2464,18 @@ doArabicShapingTest(void) { |
/* european->arabic */ |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(source) || memcmp(dest, en2an, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(source) || memcmp(dest, en2an, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(en2an)\n"); |
} |
/* arabic->european */ |
errorCode=U_ZERO_ERROR; |
length=u_shapeArabic(source, -1, |
- dest, LENGTHOF(dest), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_AN2EN|U_SHAPE_DIGIT_TYPE_AN_EXTENDED, |
&errorCode); |
if(U_FAILURE(errorCode) || length!=u_strlen(source) || memcmp(dest, an2en, length*U_SIZEOF_UCHAR)!=0) { |
@@ -2480,78 +2484,78 @@ doArabicShapingTest(void) { |
/* european->arabic with context, logical order, initial state not AL */ |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_ALEN2AN_INIT_LR|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(source) || memcmp(dest, logical_alen2an_init_lr, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(source) || memcmp(dest, logical_alen2an_init_lr, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(logical_alen2an_init_lr)\n"); |
} |
/* european->arabic with context, logical order, initial state AL */ |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_ALEN2AN_INIT_AL|U_SHAPE_DIGIT_TYPE_AN_EXTENDED, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(source) || memcmp(dest, logical_alen2an_init_al, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(source) || memcmp(dest, logical_alen2an_init_al, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(logical_alen2an_init_al)\n"); |
} |
/* european->arabic with context, reverse order, initial state not AL */ |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_ALEN2AN_INIT_LR|U_SHAPE_DIGIT_TYPE_AN|U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(source) || memcmp(dest, reverse_alen2an_init_lr, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(source) || memcmp(dest, reverse_alen2an_init_lr, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(reverse_alen2an_init_lr)\n"); |
} |
/* european->arabic with context, reverse order, initial state AL */ |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_ALEN2AN_INIT_AL|U_SHAPE_DIGIT_TYPE_AN_EXTENDED|U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(source) || memcmp(dest, reverse_alen2an_init_al, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(source) || memcmp(dest, reverse_alen2an_init_al, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(reverse_alen2an_init_al)\n"); |
} |
/* test noop */ |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
0, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(source) || memcmp(dest, source, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(source) || memcmp(dest, source, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(noop)\n"); |
} |
errorCode=U_ZERO_ERROR; |
length=u_shapeArabic(source, 0, |
- dest, LENGTHOF(dest), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
if(U_FAILURE(errorCode) || length!=0) { |
- log_err("failure in u_shapeArabic(en2an, sourceLength=0), returned %d/%s\n", u_errorName(errorCode), LENGTHOF(source)); |
+ log_err("failure in u_shapeArabic(en2an, sourceLength=0), returned %d/%s\n", u_errorName(errorCode), UPRV_LENGTHOF(source)); |
} |
/* preflight digit shaping */ |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
NULL, 0, |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
- if(errorCode!=U_BUFFER_OVERFLOW_ERROR || length!=LENGTHOF(source)) { |
+ if(errorCode!=U_BUFFER_OVERFLOW_ERROR || length!=UPRV_LENGTHOF(source)) { |
log_err("failure in u_shapeArabic(en2an preflighting), returned %d/%s instead of %d/U_BUFFER_OVERFLOW_ERROR\n", |
- length, u_errorName(errorCode), LENGTHOF(source)); |
+ length, u_errorName(errorCode), UPRV_LENGTHOF(source)); |
} |
/* test illegal arguments */ |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(NULL, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(NULL, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { |
@@ -2560,7 +2564,7 @@ doArabicShapingTest(void) { |
errorCode=U_ZERO_ERROR; |
length=u_shapeArabic(source, -2, |
- dest, LENGTHOF(dest), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { |
@@ -2568,8 +2572,8 @@ doArabicShapingTest(void) { |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- NULL, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ NULL, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { |
@@ -2577,7 +2581,7 @@ doArabicShapingTest(void) { |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
dest, -1, |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
@@ -2586,8 +2590,8 @@ doArabicShapingTest(void) { |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_RESERVED|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { |
@@ -2595,8 +2599,8 @@ doArabicShapingTest(void) { |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_RESERVED, |
&errorCode); |
if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { |
@@ -2604,8 +2608,8 @@ doArabicShapingTest(void) { |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- (UChar *)(source+2), LENGTHOF(dest), /* overlap source and destination */ |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ (UChar *)(source+2), UPRV_LENGTHOF(dest), /* overlap source and destination */ |
U_SHAPE_DIGITS_EN2AN|U_SHAPE_DIGIT_TYPE_AN, |
&errorCode); |
if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR) { |
@@ -2613,11 +2617,11 @@ doArabicShapingTest(void) { |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(lamalef, LENGTHOF(lamalef), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(lamalef, UPRV_LENGTHOF(lamalef), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_UNSHAPE | U_SHAPE_LENGTH_GROW_SHRINK | U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length == LENGTHOF(lamalef)) { |
+ if(U_FAILURE(errorCode) || length == UPRV_LENGTHOF(lamalef)) { |
log_err("failure in u_shapeArabic(U_SHAPE_LETTERS_UNSHAPE | U_SHAPE_LENGTH_GROW_SHRINK | U_SHAPE_TEXT_DIRECTION_VISUAL_LTR)\n"); |
log_err("returned %s instead of U_ZERO_ERROR or returned length %d instead of 3\n", u_errorName(errorCode), length); |
} |
@@ -2677,44 +2681,44 @@ doLamAlefSpecialVLTRArabicShapingTest(void) { |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_LENGTH_FIXED_SPACES_NEAR| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(shape_near) || memcmp(dest, shape_near, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(shape_near) || memcmp(dest, shape_near, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(LAMALEF shape_near)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_LENGTH_FIXED_SPACES_AT_END| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(shape_at_end) || memcmp(dest, shape_at_end, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(shape_at_end) || memcmp(dest, shape_at_end, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(LAMALEF shape_at_end)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_LENGTH_FIXED_SPACES_AT_BEGINNING| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(shape_at_begin) || memcmp(dest, shape_at_begin, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(shape_at_begin) || memcmp(dest, shape_at_begin, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(LAMALEF shape_at_begin)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_LENGTH_GROW_SHRINK| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
@@ -2727,44 +2731,44 @@ doLamAlefSpecialVLTRArabicShapingTest(void) { |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED|U_SHAPE_LENGTH_FIXED_SPACES_NEAR| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(shape_excepttashkeel_near) || memcmp(dest, shape_excepttashkeel_near, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(shape_excepttashkeel_near) || memcmp(dest, shape_excepttashkeel_near, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(LAMALEF shape_excepttashkeel_near)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED|U_SHAPE_LENGTH_FIXED_SPACES_AT_END| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(shape_excepttashkeel_at_end) || memcmp(dest,shape_excepttashkeel_at_end , length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(shape_excepttashkeel_at_end) || memcmp(dest,shape_excepttashkeel_at_end , length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(LAMALEF shape_excepttashkeel_at_end)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED|U_SHAPE_LENGTH_FIXED_SPACES_AT_BEGINNING| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(shape_excepttashkeel_at_begin) || memcmp(dest, shape_excepttashkeel_at_begin, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(shape_excepttashkeel_at_begin) || memcmp(dest, shape_excepttashkeel_at_begin, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(LAMALEF shape_excepttashkeel_at_begin)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED|U_SHAPE_LENGTH_GROW_SHRINK| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
@@ -2803,25 +2807,25 @@ doTashkeelSpecialVLTRArabicShapingTest(void) { |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_LENGTH_FIXED_SPACES_NEAR| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(shape_near) || memcmp(dest, shape_near, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(shape_near) || memcmp(dest, shape_near, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(TASHKEEL shape_near)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED|U_SHAPE_LENGTH_FIXED_SPACES_NEAR| |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(shape_excepttashkeel_near) || memcmp(dest, shape_excepttashkeel_near, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(shape_excepttashkeel_near) || memcmp(dest, shape_excepttashkeel_near, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(TASHKEEL shape_excepttashkeel_near)\n"); |
} |
} |
@@ -2857,44 +2861,44 @@ doLOGICALArabicDeShapingTest(void) { |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_UNSHAPE|U_SHAPE_LENGTH_FIXED_SPACES_NEAR| |
U_SHAPE_TEXT_DIRECTION_LOGICAL, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(unshape_near) || memcmp(dest, unshape_near, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(unshape_near) || memcmp(dest, unshape_near, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(unshape_near)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_UNSHAPE|U_SHAPE_LENGTH_FIXED_SPACES_AT_END| |
U_SHAPE_TEXT_DIRECTION_LOGICAL, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(unshape_at_end) || memcmp(dest, unshape_at_end, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(unshape_at_end) || memcmp(dest, unshape_at_end, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(unshape_at_end)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_UNSHAPE|U_SHAPE_LENGTH_FIXED_SPACES_AT_BEGINNING| |
U_SHAPE_TEXT_DIRECTION_LOGICAL, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(unshape_at_begin) || memcmp(dest, unshape_at_begin, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(unshape_at_begin) || memcmp(dest, unshape_at_begin, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(unshape_at_begin)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(source, LENGTHOF(source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(source, UPRV_LENGTHOF(source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_UNSHAPE|U_SHAPE_LENGTH_GROW_SHRINK| |
U_SHAPE_TEXT_DIRECTION_LOGICAL, |
&errorCode); |
@@ -2918,13 +2922,13 @@ doTailTest(void) { |
log_verbose("Trying old tail\n"); |
status = U_ZERO_ERROR; |
- length = u_shapeArabic(src, -1, dst, LENGTHOF(dst), |
+ length = u_shapeArabic(src, -1, dst, UPRV_LENGTHOF(dst), |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_SEEN_TWOCELL_NEAR, &status); |
if(U_FAILURE(status)) { |
log_err("Fail: status %s\n", u_errorName(status)); |
} else if(length!=2) { |
log_err("Fail: len %d expected 3\n", length); |
- } else if(u_strncmp(dst,dst_old,LENGTHOF(dst))) { |
+ } else if(u_strncmp(dst,dst_old,UPRV_LENGTHOF(dst))) { |
log_err("Fail: got U+%04X U+%04X expected U+%04X U+%04X\n", |
dst[0],dst[1],dst_old[0],dst_old[1]); |
} else { |
@@ -2935,13 +2939,13 @@ doTailTest(void) { |
log_verbose("Trying new tail\n"); |
status = U_ZERO_ERROR; |
- length = u_shapeArabic(src, -1, dst, LENGTHOF(dst), |
+ length = u_shapeArabic(src, -1, dst, UPRV_LENGTHOF(dst), |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_SEEN_TWOCELL_NEAR|U_SHAPE_TAIL_NEW_UNICODE, &status); |
if(U_FAILURE(status)) { |
log_err("Fail: status %s\n", u_errorName(status)); |
} else if(length!=2) { |
log_err("Fail: len %d expected 3\n", length); |
- } else if(u_strncmp(dst,dst_new,LENGTHOF(dst))) { |
+ } else if(u_strncmp(dst,dst_new,UPRV_LENGTHOF(dst))) { |
log_err("Fail: got U+%04X U+%04X expected U+%04X U+%04X\n", |
dst[0],dst[1],dst_new[0],dst_new[1]); |
} else { |
@@ -2979,48 +2983,48 @@ doArabicShapingTestForBug5421(void) { |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(persian_letters_source, LENGTHOF(persian_letters_source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(persian_letters_source, UPRV_LENGTHOF(persian_letters_source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(persian_letters) || memcmp(dest, persian_letters, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(persian_letters) || memcmp(dest, persian_letters, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(persian_letters)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(tashkeel_aggregation_source, LENGTHOF(tashkeel_aggregation_source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(tashkeel_aggregation_source, UPRV_LENGTHOF(tashkeel_aggregation_source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_AGGREGATE_TASHKEEL|U_SHAPE_PRESERVE_PRESENTATION| |
U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED|U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(tashkeel_aggregation) || memcmp(dest, tashkeel_aggregation, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(tashkeel_aggregation) || memcmp(dest, tashkeel_aggregation, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(tashkeel_aggregation)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(untouched_presentation_source, LENGTHOF(untouched_presentation_source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(untouched_presentation_source, UPRV_LENGTHOF(untouched_presentation_source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_PRESERVE_PRESENTATION| |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_TEXT_DIRECTION_VISUAL_LTR, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(untouched_presentation) || memcmp(dest, untouched_presentation, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(untouched_presentation) || memcmp(dest, untouched_presentation, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(untouched_presentation)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(untouched_presentation_r_source, LENGTHOF(untouched_presentation_r_source), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(untouched_presentation_r_source, UPRV_LENGTHOF(untouched_presentation_r_source), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_PRESERVE_PRESENTATION| |
U_SHAPE_LETTERS_SHAPE|U_SHAPE_TEXT_DIRECTION_LOGICAL, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(untouched_presentation_r) || memcmp(dest, untouched_presentation_r, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(untouched_presentation_r) || memcmp(dest, untouched_presentation_r, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(untouched_presentation_r)\n"); |
} |
} |
@@ -3068,89 +3072,89 @@ doArabicShapingTestForBug8703(void) { |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source1, LENGTHOF(letters_source1), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source1, UPRV_LENGTHOF(letters_source1), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_RTL | U_SHAPE_TASHKEEL_BEGIN | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest1) || memcmp(dest, letters_dest1, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest1) || memcmp(dest, letters_dest1, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source1)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source2, LENGTHOF(letters_source2), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source2, UPRV_LENGTHOF(letters_source2), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_RTL | U_SHAPE_TASHKEEL_END | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest2) || memcmp(dest, letters_dest2, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest2) || memcmp(dest, letters_dest2, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source2)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source3, LENGTHOF(letters_source3), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source3, UPRV_LENGTHOF(letters_source3), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_RTL | U_SHAPE_TASHKEEL_RESIZE | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest3) || memcmp(dest, letters_dest3, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest3) || memcmp(dest, letters_dest3, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source3)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source4, LENGTHOF(letters_source4), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source4, UPRV_LENGTHOF(letters_source4), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_RTL | U_SHAPE_TASHKEEL_REPLACE_BY_TATWEEL | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest4) || memcmp(dest, letters_dest4, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest4) || memcmp(dest, letters_dest4, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source4)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source5, LENGTHOF(letters_source5), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source5, UPRV_LENGTHOF(letters_source5), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_TASHKEEL_BEGIN | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest5) || memcmp(dest, letters_dest5, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest5) || memcmp(dest, letters_dest5, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source5)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source6, LENGTHOF(letters_source6), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source6, UPRV_LENGTHOF(letters_source6), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_TASHKEEL_END | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest6) || memcmp(dest, letters_dest6, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest6) || memcmp(dest, letters_dest6, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source6)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source7, LENGTHOF(letters_source7), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source7, UPRV_LENGTHOF(letters_source7), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_TASHKEEL_RESIZE | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest7) || memcmp(dest, letters_dest7, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest7) || memcmp(dest, letters_dest7, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source7)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source8, LENGTHOF(letters_source8), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source8, UPRV_LENGTHOF(letters_source8), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_TASHKEEL_REPLACE_BY_TATWEEL | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest8) || memcmp(dest, letters_dest8, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest8) || memcmp(dest, letters_dest8, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source8)\n"); |
} |
} |
@@ -3250,72 +3254,310 @@ doArabicShapingTestForBug9024(void) { |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source1, LENGTHOF(letters_source1), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source1, UPRV_LENGTHOF(letters_source1), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_RTL | U_SHAPE_TASHKEEL_BEGIN | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest1) || memcmp(dest, letters_dest1, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest1) || memcmp(dest, letters_dest1, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source1)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source2, LENGTHOF(letters_source2), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source2, UPRV_LENGTHOF(letters_source2), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_RTL | U_SHAPE_TASHKEEL_END | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest2) || memcmp(dest, letters_dest2, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest2) || memcmp(dest, letters_dest2, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source2)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source3, LENGTHOF(letters_source3), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source3, UPRV_LENGTHOF(letters_source3), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_RTL | U_SHAPE_TASHKEEL_RESIZE | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest3) || memcmp(dest, letters_dest3, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest3) || memcmp(dest, letters_dest3, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source3)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source4, LENGTHOF(letters_source4), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source4, UPRV_LENGTHOF(letters_source4), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_RTL | U_SHAPE_TASHKEEL_REPLACE_BY_TATWEEL | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest4) || memcmp(dest, letters_dest4, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest4) || memcmp(dest, letters_dest4, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source4)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source5, LENGTHOF(letters_source5), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source5, UPRV_LENGTHOF(letters_source5), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_TASHKEEL_BEGIN | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest5) || memcmp(dest, letters_dest5, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest5) || memcmp(dest, letters_dest5, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source5)\n"); |
} |
errorCode=U_ZERO_ERROR; |
- length=u_shapeArabic(letters_source6, LENGTHOF(letters_source6), |
- dest, LENGTHOF(dest), |
+ length=u_shapeArabic(letters_source6, UPRV_LENGTHOF(letters_source6), |
+ dest, UPRV_LENGTHOF(dest), |
U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_TASHKEEL_END | U_SHAPE_LETTERS_SHAPE, |
&errorCode); |
- if(U_FAILURE(errorCode) || length!=LENGTHOF(letters_dest6) || memcmp(dest, letters_dest6, length*U_SIZEOF_UCHAR)!=0) { |
+ if(U_FAILURE(errorCode) || length!=UPRV_LENGTHOF(letters_dest6) || memcmp(dest, letters_dest6, length*U_SIZEOF_UCHAR)!=0) { |
log_err("failure in u_shapeArabic(letters_source6)\n"); |
} |
} |
+static void _testPresentationForms(const UChar* in) { |
+ enum Forms { GENERIC, ISOLATED, FINAL, INITIAL, MEDIAL }; |
+ /* This character is used to check whether the in-character is rewritten correctly |
+ and whether the surrounding characters are shaped correctly as well. */ |
+ UChar otherChar[] = {0x0628, 0xfe8f, 0xfe90, 0xfe91, 0xfe92}; |
+ UChar src[3]; |
+ UChar dst[3]; |
+ UErrorCode errorCode; |
+ int32_t length; |
+ |
+ /* Testing isolated shaping */ |
+ src[0] = in[GENERIC]; |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(src, 1, |
+ dst, 1, |
+ U_SHAPE_LETTERS_SHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=1 || dst[0] != in[ISOLATED]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: shaping isolated): %x\n", in[GENERIC]); |
+ } |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(dst, 1, |
+ src, 1, |
+ U_SHAPE_LETTERS_UNSHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=1 || src[0] != in[GENERIC]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: unshaping isolated): %x\n", in[GENERIC]); |
+ } |
+ |
+ /* Testing final shaping */ |
+ src[0] = otherChar[GENERIC]; |
+ src[1] = in[GENERIC]; |
+ if (in[FINAL] != 0) { |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(src, 2, |
+ dst, 2, |
+ U_SHAPE_LETTERS_SHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=2 || dst[0] != otherChar[INITIAL] || dst[1] != in[FINAL]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: shaping final): %x\n", in[GENERIC]); |
+ } |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(dst, 2, |
+ src, 2, |
+ U_SHAPE_LETTERS_UNSHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=2 || src[0] != otherChar[GENERIC] || src[1] != in[GENERIC]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: unshaping final): %x\n", in[GENERIC]); |
+ } |
+ } else { |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(src, 2, |
+ dst, 2, |
+ U_SHAPE_LETTERS_SHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=2 || dst[0] != otherChar[ISOLATED] || dst[1] != in[ISOLATED]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: shaping final): %x\n", in[GENERIC]); |
+ } |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(dst, 2, |
+ src, 2, |
+ U_SHAPE_LETTERS_UNSHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=2 || src[0] != otherChar[GENERIC] || src[1] != in[GENERIC]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: unshaping final): %x\n", in[GENERIC]); |
+ } |
+ } |
+ |
+ /* Testing initial shaping */ |
+ src[0] = in[GENERIC]; |
+ src[1] = otherChar[GENERIC]; |
+ if (in[INITIAL] != 0) { |
+ /* Testing characters that have an initial form */ |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(src, 2, |
+ dst, 2, |
+ U_SHAPE_LETTERS_SHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=2 || dst[0] != in[INITIAL] || dst[1] != otherChar[FINAL]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: shaping initial): %x\n", in[GENERIC]); |
+ } |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(dst, 2, |
+ src, 2, |
+ U_SHAPE_LETTERS_UNSHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=2 || src[0] != in[GENERIC] || src[1] != otherChar[GENERIC]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: unshaping initial): %x\n", in[GENERIC]); |
+ } |
+ } else { |
+ /* Testing characters that do not have an initial form */ |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(src, 2, |
+ dst, 2, |
+ U_SHAPE_LETTERS_SHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=2 || dst[0] != in[ISOLATED] || dst[1] != otherChar[ISOLATED]) { |
+ log_err("failure in u_shapeArabic(_testTwoForms: shaping initial): %x\n", in[GENERIC]); |
+ } |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(dst, 2, |
+ src, 2, |
+ U_SHAPE_LETTERS_UNSHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=2 || src[0] != in[GENERIC] || src[1] != otherChar[GENERIC]) { |
+ log_err("failure in u_shapeArabic(_testTwoForms: unshaping initial): %x\n", in[GENERIC]); |
+ } |
+ } |
+ |
+ /* Testing medial shaping */ |
+ src[0] = otherChar[0]; |
+ src[1] = in[GENERIC]; |
+ src[2] = otherChar[0]; |
+ errorCode=U_ZERO_ERROR; |
+ if (in[MEDIAL] != 0) { |
+ /* Testing characters that have an medial form */ |
+ length=u_shapeArabic(src, 3, |
+ dst, 3, |
+ U_SHAPE_LETTERS_SHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=3 || dst[0] != otherChar[INITIAL] || dst[1] != in[MEDIAL] || dst[2] != otherChar[FINAL]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: shaping medial): %x\n", in[GENERIC]); |
+ } |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(dst, 3, |
+ src, 3, |
+ U_SHAPE_LETTERS_UNSHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=3 || src[0] != otherChar[GENERIC] || src[1] != in[GENERIC] || src[2] != otherChar[GENERIC]) { |
+ log_err("failure in u_shapeArabic(_testAllForms: unshaping medial): %x\n", in[GENERIC]); |
+ } |
+ } else { |
+ /* Testing characters that do not have an medial form */ |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(src, 3, |
+ dst, 3, |
+ U_SHAPE_LETTERS_SHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=3 || dst[0] != otherChar[INITIAL] || dst[1] != in[FINAL] || dst[2] != otherChar[ISOLATED]) { |
+ log_err("failure in u_shapeArabic(_testTwoForms: shaping medial): %x\n", in[GENERIC]); |
+ } |
+ errorCode=U_ZERO_ERROR; |
+ length=u_shapeArabic(dst, 3, |
+ src, 3, |
+ U_SHAPE_LETTERS_UNSHAPE, |
+ &errorCode); |
+ if(U_FAILURE(errorCode) || length!=3 || src[0] != otherChar[GENERIC] || src[1] != in[GENERIC] || src[2] != otherChar[GENERIC]) { |
+ log_err("failure in u_shapeArabic(_testTwoForms: unshaping medial): %x\n", in[GENERIC]); |
+ } |
+ } |
+} |
+ |
+static void |
+doArabicShapingTestForNewCharacters(void) { |
+ static const UChar letterForms[][5]={ |
+ { 0x0679, 0xFB66, 0xFB67, 0xFB68, 0xFB69 }, /* TTEH */ |
+ { 0x067A, 0xFB5E, 0xFB5F, 0xFB60, 0xFB61 }, /* TTEHEH */ |
+ { 0x067B, 0xFB52, 0xFB53, 0xFB54, 0xFB55 }, /* BEEH */ |
+ { 0x0688, 0xFB88, 0xFB89, 0, 0 }, /* DDAL */ |
+ { 0x068C, 0xFB84, 0xFB85, 0, 0 }, /* DAHAL */ |
+ { 0x068D, 0xFB82, 0xFB83, 0, 0 }, /* DDAHAL */ |
+ { 0x068E, 0xFB86, 0xFB87, 0, 0 }, /* DUL */ |
+ { 0x0691, 0xFB8C, 0xFB8D, 0, 0 }, /* RREH */ |
+ { 0x06BA, 0xFB9E, 0xFB9F, 0, 0 }, /* NOON GHUNNA */ |
+ { 0x06BB, 0xFBA0, 0xFBA1, 0xFBA2, 0xFBA3 }, /* RNOON */ |
+ { 0x06BE, 0xFBAA, 0xFBAB, 0xFBAC, 0xFBAD }, /* HEH DOACHASHMEE */ |
+ { 0x06C0, 0xFBA4, 0xFBA5, 0, 0 }, /* HEH WITH YEH ABOVE */ |
+ { 0x06C1, 0xFBA6, 0xFBA7, 0xFBA8, 0xFBA9 }, /* HEH GOAL */ |
+ { 0x06C5, 0xFBE0, 0xFBE1, 0, 0 }, /* KIRGIHIZ OE */ |
+ { 0x06C6, 0xFBD9, 0xFBDA, 0, 0 }, /* OE */ |
+ { 0x06C7, 0xFBD7, 0xFBD8, 0, 0 }, /* U */ |
+ { 0x06C8, 0xFBDB, 0xFBDC, 0, 0 }, /* YU */ |
+ { 0x06C9, 0xFBE2, 0xFBE3, 0, 0 }, /* KIRGIZ YU */ |
+ { 0x06CB, 0xFBDE, 0xFBDF, 0, 0}, /* VE */ |
+ { 0x06D0, 0xFBE4, 0xFBE5, 0xFBE6, 0xFBE7 }, /* E */ |
+ { 0x06D2, 0xFBAE, 0xFBAF, 0, 0 }, /* YEH BARREE */ |
+ { 0x06D3, 0xFBB0, 0xFBB1, 0, 0 }, /* YEH BARREE WITH HAMZA ABOVE */ |
+ { 0x0622, 0xFE81, 0xFE82, 0, 0, }, /* ALEF WITH MADDA ABOVE */ |
+ { 0x0623, 0xFE83, 0xFE84, 0, 0, }, /* ALEF WITH HAMZA ABOVE */ |
+ { 0x0624, 0xFE85, 0xFE86, 0, 0, }, /* WAW WITH HAMZA ABOVE */ |
+ { 0x0625, 0xFE87, 0xFE88, 0, 0, }, /* ALEF WITH HAMZA BELOW */ |
+ { 0x0626, 0xFE89, 0xFE8A, 0xFE8B, 0xFE8C, }, /* YEH WITH HAMZA ABOVE */ |
+ { 0x0627, 0xFE8D, 0xFE8E, 0, 0, }, /* ALEF */ |
+ { 0x0628, 0xFE8F, 0xFE90, 0xFE91, 0xFE92, }, /* BEH */ |
+ { 0x0629, 0xFE93, 0xFE94, 0, 0, }, /* TEH MARBUTA */ |
+ { 0x062A, 0xFE95, 0xFE96, 0xFE97, 0xFE98, }, /* TEH */ |
+ { 0x062B, 0xFE99, 0xFE9A, 0xFE9B, 0xFE9C, }, /* THEH */ |
+ { 0x062C, 0xFE9D, 0xFE9E, 0xFE9F, 0xFEA0, }, /* JEEM */ |
+ { 0x062D, 0xFEA1, 0xFEA2, 0xFEA3, 0xFEA4, }, /* HAH */ |
+ { 0x062E, 0xFEA5, 0xFEA6, 0xFEA7, 0xFEA8, }, /* KHAH */ |
+ { 0x062F, 0xFEA9, 0xFEAA, 0, 0, }, /* DAL */ |
+ { 0x0630, 0xFEAB, 0xFEAC, 0, 0, }, /* THAL */ |
+ { 0x0631, 0xFEAD, 0xFEAE, 0, 0, }, /* REH */ |
+ { 0x0632, 0xFEAF, 0xFEB0, 0, 0, }, /* ZAIN */ |
+ { 0x0633, 0xFEB1, 0xFEB2, 0xFEB3, 0xFEB4, }, /* SEEN */ |
+ { 0x0634, 0xFEB5, 0xFEB6, 0xFEB7, 0xFEB8, }, /* SHEEN */ |
+ { 0x0635, 0xFEB9, 0xFEBA, 0xFEBB, 0xFEBC, }, /* SAD */ |
+ { 0x0636, 0xFEBD, 0xFEBE, 0xFEBF, 0xFEC0, }, /* DAD */ |
+ { 0x0637, 0xFEC1, 0xFEC2, 0xFEC3, 0xFEC4, }, /* TAH */ |
+ { 0x0638, 0xFEC5, 0xFEC6, 0xFEC7, 0xFEC8, }, /* ZAH */ |
+ { 0x0639, 0xFEC9, 0xFECA, 0xFECB, 0xFECC, }, /* AIN */ |
+ { 0x063A, 0xFECD, 0xFECE, 0xFECF, 0xFED0, }, /* GHAIN */ |
+ { 0x0641, 0xFED1, 0xFED2, 0xFED3, 0xFED4, }, /* FEH */ |
+ { 0x0642, 0xFED5, 0xFED6, 0xFED7, 0xFED8, }, /* QAF */ |
+ { 0x0643, 0xFED9, 0xFEDA, 0xFEDB, 0xFEDC, }, /* KAF */ |
+ { 0x0644, 0xFEDD, 0xFEDE, 0xFEDF, 0xFEE0, }, /* LAM */ |
+ { 0x0645, 0xFEE1, 0xFEE2, 0xFEE3, 0xFEE4, }, /* MEEM */ |
+ { 0x0646, 0xFEE5, 0xFEE6, 0xFEE7, 0xFEE8, }, /* NOON */ |
+ { 0x0647, 0xFEE9, 0xFEEA, 0xFEEB, 0xFEEC, }, /* HEH */ |
+ { 0x0648, 0xFEED, 0xFEEE, 0, 0, }, /* WAW */ |
+ { 0x0649, 0xFEEF, 0xFEF0, 0, 0, }, /* ALEF MAKSURA */ |
+ { 0x064A, 0xFEF1, 0xFEF2, 0xFEF3, 0xFEF4, }, /* YEH */ |
+ { 0x064E, 0xFE76, 0, 0, 0xFE77, }, /* FATHA */ |
+ { 0x064F, 0xFE78, 0, 0, 0xFE79, }, /* DAMMA */ |
+ { 0x0650, 0xFE7A, 0, 0, 0xFE7B, }, /* KASRA */ |
+ { 0x0651, 0xFE7C, 0, 0, 0xFE7D, }, /* SHADDA */ |
+ { 0x0652, 0xFE7E, 0, 0, 0xFE7F, }, /* SUKUN */ |
+ { 0x0679, 0xFB66, 0xFB67, 0xFB68, 0xFB69, }, /* TTEH */ |
+ { 0x067E, 0xFB56, 0xFB57, 0xFB58, 0xFB59, }, /* PEH */ |
+ { 0x0686, 0xFB7A, 0xFB7B, 0xFB7C, 0xFB7D, }, /* TCHEH */ |
+ { 0x0688, 0xFB88, 0xFB89, 0, 0, }, /* DDAL */ |
+ { 0x0691, 0xFB8C, 0xFB8D, 0, 0, }, /* RREH */ |
+ { 0x0698, 0xFB8A, 0xFB8B, 0, 0, }, /* JEH */ |
+ { 0x06A9, 0xFB8E, 0xFB8F, 0xFB90, 0xFB91, }, /* KEHEH */ |
+ { 0x06AF, 0xFB92, 0xFB93, 0xFB94, 0xFB95, }, /* GAF */ |
+ { 0x06BA, 0xFB9E, 0xFB9F, 0, 0, }, /* NOON GHUNNA */ |
+ { 0x06BE, 0xFBAA, 0xFBAB, 0xFBAC, 0xFBAD, }, /* HEH DOACHASHMEE */ |
+ { 0x06C0, 0xFBA4, 0xFBA5, 0, 0, }, /* HEH WITH YEH ABOVE */ |
+ { 0x06C1, 0xFBA6, 0xFBA7, 0xFBA8, 0xFBA9, }, /* HEH GOAL */ |
+ { 0x06CC, 0xFBFC, 0xFBFD, 0xFBFE, 0xFBFF, }, /* FARSI YEH */ |
+ { 0x06D2, 0xFBAE, 0xFBAF, 0, 0, }, /* YEH BARREE */ |
+ { 0x06D3, 0xFBB0, 0xFBB1, 0, 0, }}; /* YEH BARREE WITH HAMZA ABOVE */ |
+ int32_t i; |
+ for (i = 0; i < UPRV_LENGTHOF(letterForms); ++i) { |
+ _testPresentationForms(letterForms[i]); |
+ } |
+} |
+ |
/* helpers ------------------------------------------------------------------ */ |
static void initCharFromDirProps(void) { |
@@ -3428,10 +3670,10 @@ options[] = { |
{ MAKE_ITEMS(0) } |
}; |
-#define TC_COUNT LENGTHOF(textIn) |
-#define MODES_COUNT LENGTHOF(modes) |
-#define OPTIONS_COUNT LENGTHOF(options) |
-#define LEVELS_COUNT LENGTHOF(paraLevels) |
+#define TC_COUNT UPRV_LENGTHOF(textIn) |
+#define MODES_COUNT UPRV_LENGTHOF(modes) |
+#define OPTIONS_COUNT UPRV_LENGTHOF(options) |
+#define LEVELS_COUNT UPRV_LENGTHOF(paraLevels) |
static const char* const textIn[] = { |
/* (0) 123 */ |
@@ -3956,7 +4198,7 @@ testReorderRunsOnly(void) { |
for (option = 0; option < 2; option++) { |
ubidi_setReorderingOptions(pBiDi, option==0 ? UBIDI_OPTION_REMOVE_CONTROLS |
: UBIDI_OPTION_INSERT_MARKS); |
- for (i = 0, nCases = LENGTHOF(testCases); i < nCases; i++) { |
+ for (i = 0, nCases = UPRV_LENGTHOF(testCases); i < nCases; i++) { |
srcLen = strlen(testCases[i].textIn); |
pseudoToU16(srcLen, testCases[i].textIn, src); |
for(j = 0; j < 2; j++) { |
@@ -4195,7 +4437,7 @@ testStreaming(void) { |
int32_t srcLen, processedLen, chunk, len, nPortions; |
int i, j, levelIndex; |
UBiDiLevel level; |
- int nTests = LENGTHOF(testData), nLevels = LENGTHOF(paraLevels); |
+ int nTests = UPRV_LENGTHOF(testData), nLevels = UPRV_LENGTHOF(paraLevels); |
UBool mismatch, testOK = TRUE; |
char processedLenStr[MAXPORTIONS * 5]; |
@@ -4285,7 +4527,7 @@ overrideBidiClass(const void *context, UChar32 c) { |
DEF, DEF, DEF, DEF, DEF, DEF, DEF, DEF, /* 70-77 */ |
DEF, DEF, DEF, LRO, B, RLO, BN, DEF /* 78-7F */ |
}; |
- static const int nEntries = LENGTHOF(customClasses); |
+ static const int nEntries = UPRV_LENGTHOF(customClasses); |
const char *dummy = context; /* just to avoid a compiler warning */ |
dummy++; |
@@ -4573,7 +4815,7 @@ static const contextCase contextData[] = { |
/*24*/ {"x|G", ".-=", "", "=-.", UBIDI_DEFAULT_LTR}, |
/*25*/ {"x|G", ".-=|-+*", "", "=-.|-+*", UBIDI_DEFAULT_LTR}, |
}; |
-#define CONTEXT_COUNT LENGTHOF(contextData) |
+#define CONTEXT_COUNT UPRV_LENGTHOF(contextData) |
static void |
testContext(void) { |
@@ -4665,7 +4907,6 @@ testBracketOverflow(void) { |
UErrorCode status = U_ZERO_ERROR; |
UBiDi* bidi; |
UChar src[100]; |
- UChar dest[100]; |
int32_t len; |
bidi = ubidi_open(); |