/******************************************************************** * COPYRIGHT: * Copyright (c) 1997-2001, International Business Machines Corporation and * others. All Rights Reserved. ********************************************************************/ /* file name: cbididat.c * encoding: US-ASCII * tab size: 8 (not used) * indentation:4 * * created on: 1999sep22 * created by: Markus W. Scherer */ #ifndef _BIDITST_H #define _BIDITST_H #include "unicode/utypes.h" #include "unicode/uchar.h" #include "intltest.h" #ifdef ICU_UBIDI_USE_DEPRECATES #include "unicode/bidi.h" #define MAX_STRING_LENGTH 200 /* length of an array */ #define ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0])) /* Comparing the description of the BiDi algorithm with this implementation is easier with the same names for the BiDi types in the code as there. See UCharDirection in uchar.h . */ enum { L= U_LEFT_TO_RIGHT, R= U_RIGHT_TO_LEFT, EN= U_EUROPEAN_NUMBER, ES= U_EUROPEAN_NUMBER_SEPARATOR, ET= U_EUROPEAN_NUMBER_TERMINATOR, AN= U_ARABIC_NUMBER, CS= U_COMMON_NUMBER_SEPARATOR, B= U_BLOCK_SEPARATOR, S= U_SEGMENT_SEPARATOR, WS= U_WHITE_SPACE_NEUTRAL, ON= U_OTHER_NEUTRAL, LRE=U_LEFT_TO_RIGHT_EMBEDDING, LRO=U_LEFT_TO_RIGHT_OVERRIDE, AL= U_RIGHT_TO_LEFT_ARABIC, RLE=U_RIGHT_TO_LEFT_EMBEDDING, RLO=U_RIGHT_TO_LEFT_OVERRIDE, PDF=U_POP_DIRECTIONAL_FORMAT, NSM=U_DIR_NON_SPACING_MARK, BN= U_BOUNDARY_NEUTRAL, dirPropCount }; typedef struct { const uint8_t *text; int32_t length; UBiDiLevel paraLevel; int32_t lineStart, lineLimit; UBiDiDirection direction; UBiDiLevel resultLevel; const UBiDiLevel *levels; const uint8_t *visualMap; } BiDiTestData; class BiDiTest: public IntlTest{ private: public: void TestBiDi(void); void TestBiDi(BiDi& bidi, BiDi& line); void TestBiDi(BiDi& bidi, int testNumber, BiDiTestData *test, int32_t lineStart); void TestReordering(BiDi& bidi, int testNumber); void TestInverseBiDi(void); void TestInverseBiDi(BiDi& bidi, UBiDiLevel direction); void TestInverseBiDi(BiDi& bidi, const UChar* src,int32_t srcLength, UBiDiLevel direction, UErrorCode& errorCode); void TestWriteReverse(void); UChar* getStringFromDirProps(const uint8_t *dirProps, int32_t length); void printUnicode(const UChar* s,int32_t length, const UBiDiLevel *levels); void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = NULL */); }; #endif /* ICU_UBIDI_USE_DEPRECATES */ #endif