| OLD | NEW |
| 1 /* | 1 /* |
| 2 ******************************************************************************* | 2 ******************************************************************************* |
| 3 * | 3 * |
| 4 * Copyright (C) 2009-2013, International Business Machines | 4 * Copyright (C) 2009-2014, International Business Machines |
| 5 * Corporation and others. All Rights Reserved. | 5 * Corporation and others. All Rights Reserved. |
| 6 * | 6 * |
| 7 ******************************************************************************* | 7 ******************************************************************************* |
| 8 * file name: bidiconf.cpp | 8 * file name: bidiconf.cpp |
| 9 * encoding: US-ASCII | 9 * encoding: US-ASCII |
| 10 * tab size: 8 (not used) | 10 * tab size: 8 (not used) |
| 11 * indentation:4 | 11 * indentation:4 |
| 12 * | 12 * |
| 13 * created on: 2009oct16 | 13 * created on: 2009oct16 |
| 14 * created by: Markus W. Scherer | 14 * created by: Markus W. Scherer |
| (...skipping 17 matching lines...) Expand all Loading... |
| 32 public: | 32 public: |
| 33 BiDiConformanceTest() : | 33 BiDiConformanceTest() : |
| 34 directionBits(0), lineNumber(0), levelsCount(0), orderingCount(0), | 34 directionBits(0), lineNumber(0), levelsCount(0), orderingCount(0), |
| 35 errorCount(0) {} | 35 errorCount(0) {} |
| 36 | 36 |
| 37 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=
NULL); | 37 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=
NULL); |
| 38 | 38 |
| 39 void TestBidiTest(); | 39 void TestBidiTest(); |
| 40 void TestBidiCharacterTest(); | 40 void TestBidiCharacterTest(); |
| 41 private: | 41 private: |
| 42 char *getUnidataPath(char path[]); | |
| 43 | |
| 44 UBool parseLevels(const char *&start); | 42 UBool parseLevels(const char *&start); |
| 45 UBool parseOrdering(const char *start); | 43 UBool parseOrdering(const char *start); |
| 46 UBool parseInputStringFromBiDiClasses(const char *&start); | 44 UBool parseInputStringFromBiDiClasses(const char *&start); |
| 47 | 45 |
| 48 UBool checkLevels(const UBiDiLevel actualLevels[], int32_t actualCount); | 46 UBool checkLevels(const UBiDiLevel actualLevels[], int32_t actualCount); |
| 49 UBool checkOrdering(UBiDi *ubidi); | 47 UBool checkOrdering(UBiDi *ubidi); |
| 50 | 48 |
| 51 void printErrorLine(); | 49 void printErrorLine(); |
| 52 | 50 |
| 53 char line[10000]; | 51 char line[10000]; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 70 void BiDiConformanceTest::runIndexedTest(int32_t index, UBool exec, const char *
&name, char * /*par*/) { | 68 void BiDiConformanceTest::runIndexedTest(int32_t index, UBool exec, const char *
&name, char * /*par*/) { |
| 71 if(exec) { | 69 if(exec) { |
| 72 logln("TestSuite BiDiConformanceTest: "); | 70 logln("TestSuite BiDiConformanceTest: "); |
| 73 } | 71 } |
| 74 TESTCASE_AUTO_BEGIN; | 72 TESTCASE_AUTO_BEGIN; |
| 75 TESTCASE_AUTO(TestBidiTest); | 73 TESTCASE_AUTO(TestBidiTest); |
| 76 TESTCASE_AUTO(TestBidiCharacterTest); | 74 TESTCASE_AUTO(TestBidiCharacterTest); |
| 77 TESTCASE_AUTO_END; | 75 TESTCASE_AUTO_END; |
| 78 } | 76 } |
| 79 | 77 |
| 80 // TODO: Move to a common place (IntlTest?) to avoid duplication with UnicodeTes
t (ucdtest.cpp). | |
| 81 char *BiDiConformanceTest::getUnidataPath(char path[]) { | |
| 82 IcuTestErrorCode errorCode(*this, "getUnidataPath"); | |
| 83 const int kUnicodeDataTxtLength=15; // strlen("UnicodeData.txt") | |
| 84 | |
| 85 // Look inside ICU_DATA first. | |
| 86 strcpy(path, pathToDataDirectory()); | |
| 87 strcat(path, "unidata" U_FILE_SEP_STRING "UnicodeData.txt"); | |
| 88 FILE *f=fopen(path, "r"); | |
| 89 if(f!=NULL) { | |
| 90 fclose(f); | |
| 91 *(strchr(path, 0)-kUnicodeDataTxtLength)=0; // Remove the basename. | |
| 92 return path; | |
| 93 } | |
| 94 | |
| 95 // As a fallback, try to guess where the source data was located | |
| 96 // at the time ICU was built, and look there. | |
| 97 # ifdef U_TOPSRCDIR | |
| 98 strcpy(path, U_TOPSRCDIR U_FILE_SEP_STRING "data"); | |
| 99 # else | |
| 100 strcpy(path, loadTestData(errorCode)); | |
| 101 strcat(path, U_FILE_SEP_STRING ".." U_FILE_SEP_STRING ".." | |
| 102 U_FILE_SEP_STRING ".." U_FILE_SEP_STRING ".." | |
| 103 U_FILE_SEP_STRING "data"); | |
| 104 # endif | |
| 105 strcat(path, U_FILE_SEP_STRING); | |
| 106 strcat(path, "unidata" U_FILE_SEP_STRING "UnicodeData.txt"); | |
| 107 f=fopen(path, "r"); | |
| 108 if(f!=NULL) { | |
| 109 fclose(f); | |
| 110 *(strchr(path, 0)-kUnicodeDataTxtLength)=0; // Remove the basename. | |
| 111 return path; | |
| 112 } | |
| 113 return NULL; | |
| 114 } | |
| 115 | |
| 116 U_DEFINE_LOCAL_OPEN_POINTER(LocalStdioFilePointer, FILE, fclose); | 78 U_DEFINE_LOCAL_OPEN_POINTER(LocalStdioFilePointer, FILE, fclose); |
| 117 | 79 |
| 118 UBool BiDiConformanceTest::parseLevels(const char *&start) { | 80 UBool BiDiConformanceTest::parseLevels(const char *&start) { |
| 119 directionBits=0; | 81 directionBits=0; |
| 120 levelsCount=0; | 82 levelsCount=0; |
| 121 while(*start!=0 && *(start=u_skipWhitespace(start))!=0 && *start!=';') { | 83 while(*start!=0 && *(start=u_skipWhitespace(start))!=0 && *start!=';') { |
| 122 if(*start=='x') { | 84 if(*start=='x') { |
| 123 levels[levelsCount++]=UBIDI_DEFAULT_LTR; | 85 levels[levelsCount++]=UBIDI_DEFAULT_LTR; |
| 124 ++start; | 86 ++start; |
| 125 } else { | 87 } else { |
| (...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 } | 669 } |
| 708 return isOk; | 670 return isOk; |
| 709 } | 671 } |
| 710 | 672 |
| 711 void BiDiConformanceTest::printErrorLine() { | 673 void BiDiConformanceTest::printErrorLine() { |
| 712 ++errorCount; | 674 ++errorCount; |
| 713 errln("Input line %5d: %s", (int)lineNumber, line); | 675 errln("Input line %5d: %s", (int)lineNumber, line); |
| 714 errln(UnicodeString("Input string: ")+inputString); | 676 errln(UnicodeString("Input string: ")+inputString); |
| 715 errln("Para level: %s", paraLevelName); | 677 errln("Para level: %s", paraLevelName); |
| 716 } | 678 } |
| OLD | NEW |