| Index: source/test/cintltst/spooftest.c
|
| diff --git a/source/test/cintltst/spooftest.c b/source/test/cintltst/spooftest.c
|
| index d90f8878204a1aedf422ccb90a3de61e740595f4..ea70416f9440e8c7c26dc70240a121f1c2676ad1 100644
|
| --- a/source/test/cintltst/spooftest.c
|
| +++ b/source/test/cintltst/spooftest.c
|
| @@ -1,6 +1,6 @@
|
| /********************************************************************
|
| * COPYRIGHT:
|
| - * Copyright (c) 2009-2013, International Business Machines Corporation and
|
| + * Copyright (c) 2009-2015, International Business Machines Corporation and
|
| * others. All Rights Reserved.
|
| ********************************************************************/
|
| /********************************************************************************
|
| @@ -62,7 +62,7 @@ log_err("Test Failure at file %s, line %d: \"%s\" is false.\n", __FILE__, __LINE
|
| uspoof_close(sc); \
|
| }
|
|
|
| -
|
| +static void TestOpenFromSource(void);
|
| static void TestUSpoofCAPI(void);
|
|
|
| void addUSpoofTest(TestNode** root);
|
| @@ -70,8 +70,9 @@ void addUSpoofTest(TestNode** root);
|
| void addUSpoofTest(TestNode** root)
|
| {
|
| #if !UCONFIG_NO_FILE_IO
|
| - addTest(root, &TestUSpoofCAPI, "uspoof/TestUSpoofCAPI");
|
| + addTest(root, &TestOpenFromSource, "uspoof/TestOpenFromSource");
|
| #endif
|
| + addTest(root, &TestUSpoofCAPI, "uspoof/TestUSpoofCAPI");
|
| }
|
|
|
| /*
|
| @@ -102,33 +103,12 @@ const UChar han_Hiragana[] = {(UChar)0x3086, (UChar)0x308A, (UChar)0x0020, (UCha
|
|
|
| /* Provide better code coverage */
|
| const char goodLatinUTF8[] = {0x75, 0x77, 0};
|
| -/*
|
| - * Spoof Detction C API Tests
|
| - */
|
| -static void TestUSpoofCAPI(void) {
|
| -
|
| - /*
|
| - * basic uspoof_open().
|
| - */
|
| - {
|
| - USpoofChecker *sc;
|
| - UErrorCode status = U_ZERO_ERROR;
|
| - sc = uspoof_open(&status);
|
| - TEST_ASSERT_SUCCESS(status);
|
| - if (U_FAILURE(status)) {
|
| - /* If things are so broken that we can't even open a default spoof checker, */
|
| - /* don't even try the rest of the tests. They would all fail. */
|
| - return;
|
| - }
|
| - uspoof_close(sc);
|
| - }
|
|
|
| -
|
| -
|
| - /*
|
| - * Test Open from source rules.
|
| - */
|
| - TEST_SETUP
|
| +// Test open from source rules.
|
| +// Run this in isolation to verify initialization.
|
| +static void TestOpenFromSource() {
|
| + // No TEST_SETUP because that calls uspoof_open().
|
| + UErrorCode status = U_ZERO_ERROR;
|
| const char *dataSrcDir;
|
| char *fileName;
|
| char *confusables;
|
| @@ -138,8 +118,9 @@ static void TestUSpoofCAPI(void) {
|
| FILE *f;
|
| UParseError pe;
|
| int32_t errType;
|
| + int32_t checkResults;
|
| USpoofChecker *rsc;
|
| -
|
| +
|
| dataSrcDir = ctest_dataSrcDir();
|
| fileName = malloc(strlen(dataSrcDir) + 100);
|
| strcpy(fileName, dataSrcDir);
|
| @@ -163,17 +144,43 @@ static void TestUSpoofCAPI(void) {
|
| }
|
|
|
| rsc = uspoof_openFromSource(confusables, confusablesLength,
|
| - confusablesWholeScript, confusablesWholeScriptLength,
|
| - &errType, &pe, &status);
|
| + confusablesWholeScript, confusablesWholeScriptLength,
|
| + &errType, &pe, &status);
|
| + TEST_ASSERT_SUCCESS(status);
|
| +
|
| + // Ticket #11860: uspoof_openFromSource() did not initialize for use.
|
| + // Verify that the spoof checker does not crash.
|
| + checkResults = uspoof_check(rsc, goodLatin, -1, NULL, &status);
|
| TEST_ASSERT_SUCCESS(status);
|
| + TEST_ASSERT_EQ(0, checkResults);
|
|
|
| free(confusablesWholeScript);
|
| free(confusables);
|
| free(fileName);
|
| uspoof_close(rsc);
|
| /* printf("ParseError Line is %d\n", pe.line); */
|
| - TEST_TEARDOWN;
|
| +}
|
|
|
| +/*
|
| + * Spoof Detection C API Tests
|
| + */
|
| +static void TestUSpoofCAPI(void) {
|
| +
|
| + /*
|
| + * basic uspoof_open().
|
| + */
|
| + {
|
| + USpoofChecker *sc;
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + sc = uspoof_open(&status);
|
| + TEST_ASSERT_SUCCESS(status);
|
| + if (U_FAILURE(status)) {
|
| + /* If things are so broken that we can't even open a default spoof checker, */
|
| + /* don't even try the rest of the tests. They would all fail. */
|
| + return;
|
| + }
|
| + uspoof_close(sc);
|
| + }
|
|
|
| /*
|
| * openFromSerialized and serialize
|
| @@ -529,6 +536,24 @@ static void TestUSpoofCAPI(void) {
|
| status = U_ZERO_ERROR;
|
|
|
| TEST_TEARDOWN;
|
| +
|
| + /*
|
| + * get Inclusion and Recommended sets
|
| + */
|
| + TEST_SETUP
|
| + const USet *inclusions = NULL;
|
| + const USet *recommended = NULL;
|
| +
|
| + inclusions = uspoof_getInclusionSet(&status);
|
| + TEST_ASSERT_SUCCESS(status);
|
| + TEST_ASSERT_EQ(TRUE, uset_isFrozen(inclusions));
|
| +
|
| + status = U_ZERO_ERROR;
|
| + recommended = uspoof_getRecommendedSet(&status);
|
| + TEST_ASSERT_SUCCESS(status);
|
| + TEST_ASSERT_EQ(TRUE, uset_isFrozen(recommended));
|
| + TEST_TEARDOWN;
|
| +
|
| }
|
|
|
| #endif /* UCONFIG_NO_REGULAR_EXPRESSIONS */
|
|
|