| Index: source/test/cintltst/udatatst.c
|
| diff --git a/source/test/cintltst/udatatst.c b/source/test/cintltst/udatatst.c
|
| index 70c4f66baa1179b428fda370f4e582a21c17c692..b0740dae1b32d972223ad102e0322cd3699887f1 100644
|
| --- a/source/test/cintltst/udatatst.c
|
| +++ b/source/test/cintltst/udatatst.c
|
| @@ -1,10 +1,10 @@
|
| /********************************************************************
|
| * COPYRIGHT:
|
| - * Copyright (c) 1998-2013, International Business Machines Corporation and
|
| + * Copyright (c) 1998-2014, International Business Machines Corporation and
|
| * others. All Rights Reserved.
|
| ********************************************************************/
|
| /*
|
| -* File test.c
|
| +* File udatatst.c
|
| *
|
| * Modification History:
|
| *
|
| @@ -16,6 +16,7 @@
|
| #include "unicode/utypes.h"
|
| #include "unicode/putil.h"
|
| #include "unicode/udata.h"
|
| +#include "unicode/ucal.h"
|
| #include "unicode/uchar.h"
|
| #include "unicode/ucnv.h"
|
| #include "unicode/ures.h"
|
| @@ -55,8 +56,6 @@ unorm2_swap(const UDataSwapper *ds,
|
|
|
| /* other definitions and prototypes */
|
|
|
| -#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
|
| -
|
| #if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
|
| static void TestUDataOpen(void);
|
| static void TestUDataOpenChoiceDemo1(void);
|
| @@ -72,7 +71,9 @@ static void TestICUDataName(void);
|
| static void PointerTableOfContents(void);
|
| static void SetBadCommonData(void);
|
| static void TestUDataFileAccess(void);
|
| -
|
| +#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
|
| +static void TestTZDataDir(void);
|
| +#endif
|
|
|
| void addUDataTest(TestNode** root);
|
|
|
| @@ -94,6 +95,9 @@ addUDataTest(TestNode** root)
|
| addTest(root, &PointerTableOfContents, "udatatst/PointerTableOfContents" );
|
| addTest(root, &SetBadCommonData, "udatatst/SetBadCommonData" );
|
| addTest(root, &TestUDataFileAccess, "udatatst/TestUDataFileAccess" );
|
| +#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
|
| + addTest(root, &TestTZDataDir, "udatatst/TestTZDataDir" );
|
| +#endif
|
| }
|
|
|
| #if 0
|
| @@ -1304,8 +1308,11 @@ static const struct {
|
| #if !UCONFIG_NO_COLLATION
|
| /* standalone collation data files */
|
| {"ucadata", "icu", ucol_swap},
|
| +#if 0
|
| + /* Starting with ICU 53, the "inverse UCA" data is integrated into ucadata.icu. */
|
| {"invuca", "icu", ucol_swapInverseUCA},
|
| #endif
|
| +#endif
|
|
|
| #if !UCONFIG_NO_LEGACY_CONVERSION
|
| /* conversion table files */
|
| @@ -1364,15 +1371,18 @@ static const struct {
|
| * to testdata) for code coverage in tests.
|
| * See Jitterbug 4497.
|
| *
|
| - * ICU4C 4.4 adds normalization data files again, e.g., nfc.nrm.
|
| + * ICU4C 4.4 adds normalization data files again, e.g., nfkc.nrm.
|
| */
|
| {"uprops", "icu", uprops_swap},
|
| {"ucase", "icu", ucase_swap},
|
| {"ubidi", "icu", ubidi_swap},
|
| #endif
|
| #if !UCONFIG_NO_NORMALIZATION && !UCONFIG_ONLY_COLLATION
|
| - {"nfc", "nrm", unorm2_swap},
|
| - {"confusables", "cfu", uspoof_swap},
|
| + {"nfkc", "nrm", unorm2_swap},
|
| +#if !UCONFIG_NO_REGULAR_EXPRESSIONS
|
| + {"confusables", "cfu", uspoof_swap}, /* spoof data missing without regex */
|
| +#endif
|
| +
|
| #endif
|
| {"unames", "icu", uchar_swapNames}
|
| /* the last item should not be #if'ed so that it can reliably omit the last comma */
|
| @@ -1676,17 +1686,16 @@ TestSwapData() {
|
| }
|
| errorCode=U_ZERO_ERROR;
|
|
|
| - /* Test argument checking. ucol_swapBinary is normally tested via ures_swap, and isn't normally called directly. */
|
| + /* Test argument checking. ucol_swap is normally tested via ures_swap, and isn't normally called directly. */
|
| #if !UCONFIG_NO_COLLATION
|
| - ucol_swapBinary(NULL, NULL, -1, NULL, NULL);
|
| - ucol_swapBinary(NULL, NULL, -1, NULL, &errorCode);
|
| + ucol_swap(NULL, NULL, -1, NULL, &errorCode);
|
| if (errorCode != U_ILLEGAL_ARGUMENT_ERROR) {
|
| - log_err("ucol_swapBinary did not fail as expected\n", name);
|
| + log_err("ucol_swap did not fail as expected\n", name);
|
| }
|
| errorCode=U_ZERO_ERROR;
|
| #endif
|
|
|
| - for(i=0; i<LENGTHOF(swapCases); ++i) {
|
| + for(i=0; i<UPRV_LENGTHOF(swapCases); ++i) {
|
| /* build the name for logging */
|
| errorCode=U_ZERO_ERROR;
|
| if(swapCases[i].name[0]=='*') {
|
| @@ -1698,11 +1707,13 @@ TestSwapData() {
|
| pkg=U_ICUDATA_BRKITR;
|
| nm=swapCases[i].name;
|
| uprv_strcpy(name, U_ICUDATA_BRKITR);
|
| +#if !UCONFIG_NO_COLLATION
|
| } else if (uprv_strcmp(swapCases[i].name, "ucadata")==0
|
| || uprv_strcmp(swapCases[i].name, "invuca")==0) {
|
| pkg=U_ICUDATA_COLL;
|
| nm=swapCases[i].name;
|
| uprv_strcpy(name, U_ICUDATA_COLL);
|
| +#endif /* !UCONFIG_NO_COLLATION */
|
| } else {
|
| pkg=NULL;
|
| nm=swapCases[i].name;
|
| @@ -1809,3 +1820,49 @@ static void SetBadCommonData(void) {
|
| }
|
| }
|
|
|
| +// Check the override loading of time zone .res files from a specified path
|
| +//
|
| +// Hand testing notes:
|
| +// 1. Run this test with the environment variable set. The following should induce faiures:
|
| +// ICU_TIMEZONE_FILES_DIR=../testdata/out/build LD_LIBRARY_PATH=../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH ./cintltst /udatatst/TestTZDataDir
|
| +// 2. Build ICU with with U_TIMEZONE_FILES_DIR defined. This should also induce failures.
|
| +// CPPFLAGS=-DU_TIMEZONE_FILES_DIR\=`pwd`/test/testdata/out/testdata ./runConfigureICU Linux
|
| +// make check
|
| +
|
| +static void TestTZDataDir(void) {
|
| +#if !UCONFIG_NO_FORMATTING
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + const char *tzDataVersion;
|
| + const char *testDataPath;
|
| +
|
| + // Verify that default ICU time zone data version is something newer than 2014a.
|
| + tzDataVersion = ucal_getTZDataVersion(&status);
|
| + // printf("tz data version is %s\n", tzDataVersion);
|
| + if (U_FAILURE(status)) {
|
| + log_data_err("Failed call to ucal_getTZDataVersion - %s\n", u_errorName(status));
|
| + return;
|
| + } else if (strcmp("2014a", tzDataVersion) == 0) {
|
| + log_err("File %s:%d - expected something newer than time zone data 2014a.\n", __FILE__, __LINE__, tzDataVersion);
|
| + }
|
| +
|
| + testDataPath = loadTestData(&status);
|
| + // The path produced by loadTestData() will look something like
|
| + // whatever/.../testdata/out/testdata
|
| + // The test data puts an old (2014a) version of the time zone data there.
|
| +
|
| + // Switch ICU to the testdata version of zoneinfo64.res, which is verison 2014a.
|
| + ctest_resetICU();
|
| + u_setTimeZoneFilesDirectory(testDataPath, &status);
|
| + tzDataVersion = ucal_getTZDataVersion(&status);
|
| + if (strcmp("2014a", tzDataVersion) != 0) {
|
| + log_err("File %s:%d - expected \"2014a\"; actual \"%s\"\n", __FILE__, __LINE__, tzDataVersion);
|
| + }
|
| +
|
| + ctest_resetICU(); // Return ICU to using its standard tz data.
|
| + tzDataVersion = ucal_getTZDataVersion(&status);
|
| + // printf("tz data version is %s\n", tzDataVersion);
|
| + if (strcmp("2014a", tzDataVersion) == 0) {
|
| + log_err("File %s:%d - expected something newer than time zone data 2014a.\n", __FILE__, __LINE__, tzDataVersion);
|
| + }
|
| +#endif
|
| +}
|
|
|