Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: source/test/intltest/itspoof.cpp

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/test/intltest/itrbnf.cpp ('k') | source/test/intltest/itutil.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/test/intltest/itspoof.cpp
diff --git a/source/test/intltest/itspoof.cpp b/source/test/intltest/itspoof.cpp
index 68f4dfd680682be9e130e5d803468969bfc5556d..b5b90e27e4e31cea47b4bc0d038e9e608afab6f0 100644
--- a/source/test/intltest/itspoof.cpp
+++ b/source/test/intltest/itspoof.cpp
@@ -1,6 +1,6 @@
/*
**********************************************************************
-* Copyright (C) 2011-2013, International Business Machines Corporation
+* Copyright (C) 2011-2014, International Business Machines Corporation
* and others. All Rights Reserved.
**********************************************************************
*/
@@ -45,8 +45,6 @@
errln("Test Failure at file %s, line %d: \"%s\" (%d) == \"%s\" (%d)", \
__FILE__, __LINE__, #a, (a), #b, (b)); }}
-#define LENGTHOF(array) ((int32_t)(sizeof(array)/sizeof((array)[0])))
-
/*
* TEST_SETUP and TEST_TEARDOWN
* macros to handle the boilerplate around setting up test case.
@@ -369,12 +367,11 @@ U_DEFINE_LOCAL_OPEN_POINTER(LocalStdioFilePointer, FILE, fclose);
// verify that it transforms correctly in a skeleton.
//
void IntlTestSpoof::testConfData() {
- UErrorCode status = U_ZERO_ERROR;
-
- const char *testDataDir = IntlTest::getSourceTestData(status);
- TEST_ASSERT_SUCCESS(status);
char buffer[2000];
- uprv_strcpy(buffer, testDataDir);
+ if (getUnidataPath(buffer) == NULL) {
+ errln("Skipping test spoof/testConfData. Unable to find path to source/data/unidata/.");
+ return;
+ }
uprv_strcat(buffer, "confusables.txt");
LocalStdioFilePointer f(fopen(buffer, "rb"));
@@ -394,6 +391,7 @@ void IntlTestSpoof::testConfData() {
}
UnicodeString confusablesTxt = UnicodeString::fromUTF8(StringPiece(fileBuf.getAlias(), fileSize));
+ UErrorCode status = U_ZERO_ERROR;
LocalUSpoofCheckerPointer sc(uspoof_open(&status));
TEST_ASSERT_SUCCESS(status);
@@ -505,13 +503,13 @@ void IntlTestSpoof::testIdentifierInfo() {
{"\\u0061\\u0031\\u0661", USPOOF_UNRESTRICTIVE, "[\\u0030\\u0660]", "Latn", "Arab Thaa", "Arab Thaa"},
{"\\u0061\\u0031\\u0661\\u06F1", USPOOF_UNRESTRICTIVE, "[\\u0030\\u0660\\u06F0]", "Latn Arab", "", ""},
{"\\u0661\\u30FC\\u3006\\u0061\\u30A2\\u0031\\u0967\\u06F1", USPOOF_UNRESTRICTIVE,
- "[\\u0030\\u0660\\u06F0\\u0966]", "Latn Kana Arab", "Deva Kthi", "Deva Kthi"},
+ "[\\u0030\\u0660\\u06F0\\u0966]", "Latn Kana Arab", "Deva Kthi Mahj", "Deva Kthi Mahj"},
{"\\u0061\\u30A2\\u30FC\\u3006\\u0031\\u0967\\u0661\\u06F1", USPOOF_UNRESTRICTIVE,
- "[\\u0030\\u0660\\u06F0\\u0966]", "Latn Kana Arab", "Deva Kthi", "Deva Kthi"}
+ "[\\u0030\\u0660\\u06F0\\u0966]", "Latn Kana Arab", "Deva Kthi Mahj", "Deva Kthi Mahj"}
};
int testNum;
- for (testNum = 0; testNum < LENGTHOF(tests); testNum++) {
+ for (testNum = 0; testNum < UPRV_LENGTHOF(tests); testNum++) {
char testNumStr[40];
sprintf(testNumStr, "testNum = %d", testNum);
Test &test = tests[testNum];
@@ -575,7 +573,7 @@ void IntlTestSpoof::testIdentifierInfo() {
status = U_ZERO_ERROR;
IdentifierInfo identifierInfo(status);
- for (testNum=0; testNum<LENGTHOF(scriptTests); testNum++) {
+ for (testNum=0; testNum<UPRV_LENGTHOF(scriptTests); testNum++) {
ScriptTest &test = scriptTests[testNum];
char msgBuf[100];
sprintf(msgBuf, "testNum = %d ", testNum);
@@ -675,22 +673,23 @@ void IntlTestSpoof::testRestrictionLevel() {
} tests[] = {
{"\\u0061\\u03B3\\u2665", USPOOF_UNRESTRICTIVE},
{"a", USPOOF_ASCII},
- {"\\u03B3", USPOOF_HIGHLY_RESTRICTIVE},
+ {"\\u03B3", USPOOF_SINGLE_SCRIPT_RESTRICTIVE},
{"\\u0061\\u30A2\\u30FC", USPOOF_HIGHLY_RESTRICTIVE},
{"\\u0061\\u0904", USPOOF_MODERATELY_RESTRICTIVE},
{"\\u0061\\u03B3", USPOOF_MINIMALLY_RESTRICTIVE}
};
char msgBuffer[100];
- URestrictionLevel restrictionLevels[] = { USPOOF_ASCII, USPOOF_HIGHLY_RESTRICTIVE,
- USPOOF_MODERATELY_RESTRICTIVE, USPOOF_MINIMALLY_RESTRICTIVE, USPOOF_UNRESTRICTIVE};
+ URestrictionLevel restrictionLevels[] = { USPOOF_ASCII, USPOOF_SINGLE_SCRIPT_RESTRICTIVE,
+ USPOOF_HIGHLY_RESTRICTIVE, USPOOF_MODERATELY_RESTRICTIVE, USPOOF_MINIMALLY_RESTRICTIVE,
+ USPOOF_UNRESTRICTIVE};
UErrorCode status = U_ZERO_ERROR;
IdentifierInfo idInfo(status);
TEST_ASSERT_SUCCESS(status);
idInfo.setIdentifierProfile(*uspoof_getRecommendedUnicodeSet(&status));
TEST_ASSERT_SUCCESS(status);
- for (int32_t testNum=0; testNum < LENGTHOF(tests); testNum++) {
+ for (int32_t testNum=0; testNum < UPRV_LENGTHOF(tests); testNum++) {
status = U_ZERO_ERROR;
const Test &test = tests[testNum];
UnicodeString testString = UnicodeString(test.fId).unescape();
@@ -699,21 +698,39 @@ void IntlTestSpoof::testRestrictionLevel() {
sprintf(msgBuffer, "testNum = %d ", testNum);
TEST_ASSERT_SUCCESS(status);
TEST_ASSERT_MSG(expectedLevel == idInfo.getRestrictionLevel(status), msgBuffer);
- for (int levelIndex=0; levelIndex<LENGTHOF(restrictionLevels); levelIndex++) {
+ for (int levelIndex=0; levelIndex<UPRV_LENGTHOF(restrictionLevels); levelIndex++) {
status = U_ZERO_ERROR;
URestrictionLevel levelSetInSpoofChecker = restrictionLevels[levelIndex];
USpoofChecker *sc = uspoof_open(&status);
uspoof_setChecks(sc, USPOOF_RESTRICTION_LEVEL, &status);
uspoof_setAllowedChars(sc, uspoof_getRecommendedSet(&status), &status);
uspoof_setRestrictionLevel(sc, levelSetInSpoofChecker);
- UBool actualValue = uspoof_checkUnicodeString(sc, testString, NULL, &status) != 0;
-
+ int32_t actualValue = uspoof_checkUnicodeString(sc, testString, NULL, &status);
+
// we want to fail if the text is (say) MODERATE and the testLevel is ASCII
- UBool expectedFailure = expectedLevel > levelSetInSpoofChecker ||
- !uspoof_getRecommendedUnicodeSet(&status)->containsAll(testString);
- sprintf(msgBuffer, "testNum = %d, levelIndex = %d", testNum, levelIndex);
- TEST_ASSERT_MSG(expectedFailure == actualValue, msgBuffer);
+ int32_t expectedValue = 0;
+ if (expectedLevel > levelSetInSpoofChecker) {
+ expectedValue |= USPOOF_RESTRICTION_LEVEL;
+ }
+ if (!uspoof_getRecommendedUnicodeSet(&status)->containsAll(testString)) {
+ expectedValue |= USPOOF_CHAR_LIMIT;
+ }
+ sprintf(msgBuffer, "testNum = %d, levelIndex = %d, expected = %#x, actual = %#x",
+ testNum, levelIndex, expectedValue, actualValue);
+ TEST_ASSERT_MSG(expectedValue == actualValue, msgBuffer);
TEST_ASSERT_SUCCESS(status);
+
+ // Run the same check again, with the Spoof Checker configured to return
+ // the actual restriction level.
+ uspoof_setChecks(sc, USPOOF_AUX_INFO | USPOOF_RESTRICTION_LEVEL, &status);
+ uspoof_setAllowedChars(sc, uspoof_getRecommendedSet(&status), &status);
+ uspoof_setRestrictionLevel(sc, levelSetInSpoofChecker);
+ int32_t result = uspoof_checkUnicodeString(sc, testString, NULL, &status);
+ TEST_ASSERT_SUCCESS(status);
+ if (U_SUCCESS(status)) {
+ TEST_ASSERT_EQ(expectedLevel, result & USPOOF_RESTRICTION_LEVEL_MASK);
+ TEST_ASSERT_EQ(expectedValue, result & USPOOF_ALL_CHECKS);
+ }
uspoof_close(sc);
}
}
@@ -732,7 +749,7 @@ void IntlTestSpoof::testMixedNumbers() {
};
UErrorCode status = U_ZERO_ERROR;
IdentifierInfo idInfo(status);
- for (int32_t testNum=0; testNum < LENGTHOF(tests); testNum++) {
+ for (int32_t testNum=0; testNum < UPRV_LENGTHOF(tests); testNum++) {
char msgBuf[100];
sprintf(msgBuf, "testNum = %d ", testNum);
Test &test = tests[testNum];
« no previous file with comments | « source/test/intltest/itrbnf.cpp ('k') | source/test/intltest/itutil.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698