Index: source/test/cintltst/cstrcase.c |
diff --git a/source/test/cintltst/cstrcase.c b/source/test/cintltst/cstrcase.c |
index 4f6463012a3ad5fa4dbfea54d3b0348d5f378db6..5f7a6e3114fbb49e05980b72ce9f7e3e25ee65b9 100644 |
--- a/source/test/cintltst/cstrcase.c |
+++ b/source/test/cintltst/cstrcase.c |
@@ -1,7 +1,7 @@ |
/* |
******************************************************************************* |
* |
-* Copyright (C) 2002-2014, International Business Machines |
+* Copyright (C) 2002-2015, International Business Machines |
* Corporation and others. All Rights Reserved. |
* |
******************************************************************************* |
@@ -25,6 +25,7 @@ |
#include "unicode/ucasemap.h" |
#include "cmemory.h" |
#include "cintltst.h" |
+#include "ustr_imp.h" |
/* test string case mapping functions --------------------------------------- */ |
@@ -989,6 +990,49 @@ TestUCaseMapToTitle(void) { |
#endif |
+/* Test case for internal API u_caseInsensitivePrefixMatch */ |
+static void |
+TestUCaseInsensitivePrefixMatch(void) { |
+ struct { |
+ const char *s1; |
+ const char *s2; |
+ int32_t r1; |
+ int32_t r2; |
+ } testCases[] = { |
+ {"ABC", "ab", 2, 2}, |
+ {"ABCD", "abcx", 3, 3}, |
+ {"ABC", "xyz", 0, 0}, |
+ /* U+00DF LATIN SMALL LETTER SHARP S */ |
+ {"A\\u00dfBC", "Ass", 2, 3}, |
+ {"Fust", "Fu\\u00dfball", 2, 2}, |
+ {"\\u00dfsA", "s\\u00dfB", 2, 2}, |
+ {"\\u00dfs", "s\\u00df", 2, 2}, |
+ /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */ |
+ {"XYZ\\u0130i\\u0307xxx", "xyzi\\u0307\\u0130yyy", 6, 6}, |
+ {0, 0, 0, 0} |
+ }; |
+ int32_t i; |
+ |
+ for (i = 0; testCases[i].s1 != 0; i++) { |
+ UErrorCode sts = U_ZERO_ERROR; |
+ UChar u1[64], u2[64]; |
+ int32_t matchLen1, matchLen2; |
+ |
+ u_unescape(testCases[i].s1, u1, 64); |
+ u_unescape(testCases[i].s2, u2, 64); |
+ |
+ u_caseInsensitivePrefixMatch(u1, -1, u2, -1, 0, &matchLen1, &matchLen2, &sts); |
+ if (U_FAILURE(sts)) { |
+ log_err("error: %s, s1=%s, s2=%s", u_errorName(sts), testCases[i].s1, testCases[i].s2); |
+ } else if (matchLen1 != testCases[i].r1 || matchLen2 != testCases[i].r2) { |
+ log_err("s1=%s, s2=%2 / match len1=%d, len2=%d / expected len1=%d, len2=%d", |
+ testCases[i].s1, testCases[i].s2, |
+ matchLen1, matchLen2, |
+ testCases[i].r1, testCases[i].r2); |
+ } |
+ } |
+} |
+ |
void addCaseTest(TestNode** root); |
void addCaseTest(TestNode** root) { |
@@ -1005,4 +1049,5 @@ void addCaseTest(TestNode** root) { |
#if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILE_IO |
addTest(root, &TestUCaseMapToTitle, "tsutil/cstrcase/TestUCaseMapToTitle"); |
#endif |
+ addTest(root, &TestUCaseInsensitivePrefixMatch, "tsutil/cstrcase/TestUCaseInsensitivePrefixMatch"); |
} |