]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/cintltst/ulistfmttest.c
ICU-66108.tar.gz
[apple/icu.git] / icuSources / test / cintltst / ulistfmttest.c
index 5eb5a1eaa4b700034c2094c44e8b9413e8423d03..5b827bb85b0736c9b5c1c5f7f9b215ee11e811cc 100644 (file)
@@ -19,6 +19,7 @@
 
 static void TestUListFmt(void);
 static void TestUListFmtToValue(void);
+static void TestUListOpenStyled(void);
 
 void addUListFmtTest(TestNode** root);
 
@@ -28,6 +29,7 @@ void addUListFmtTest(TestNode** root)
 {
     TESTCASE(TestUListFmt);
     TESTCASE(TestUListFmtToValue);
+    TESTCASE(TestUListOpenStyled);
 }
 
 static const UChar str0[] = { 0x41,0 }; /* "A" */
@@ -55,6 +57,9 @@ static ListFmtTestEntry listFmtTestEntries[] = {
     { "ja" ,  2,          "A\\u3001Bb" },
     { "zh" ,  5,          "A\\u3001Bb\\u3001Ccc\\u3001Dddd\\u548CEeeee" },
     { "zh" ,  2,          "A\\u548CBb" },
+    // Apple <rdar://problem/60081228>:
+    { "cs" ,  5,          "A, Bb, Ccc, Dddd a\\u00A0Eeeee" },
+    { "cs" ,  2,          "A a\\u00A0Bb" },
     { NULL ,  0,          NULL } /* terminator */
     };
 
@@ -210,5 +215,43 @@ static void TestUListFmtToValue() {
     ulistfmt_closeResult(fl);
 }
 
+static void TestUListOpenStyled() {
+    UErrorCode ec = U_ZERO_ERROR;
+    UListFormatter* fmt = ulistfmt_openForType("en", ULISTFMT_TYPE_OR, ULISTFMT_WIDTH_SHORT, &ec);
+    UFormattedList* fl = ulistfmt_openResult(&ec);
+    assertSuccess("Opening", &ec);
+
+    {
+        const char* message = "openStyled test 1";
+        const UChar* expectedString = u"A, B, or C";
+        const UChar* inputs[] = {
+            u"A",
+            u"B",
+            u"C",
+        };
+        ulistfmt_formatStringsToResult(fmt, inputs, NULL, UPRV_LENGTHOF(inputs), fl, &ec);
+        assertSuccess("Formatting", &ec);
+        static const UFieldPositionWithCategory expectedFieldPositions[] = {
+            // field, begin index, end index
+            {UFIELD_CATEGORY_LIST_SPAN, 0, 0,  1},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 0,  1},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 1,  3},
+            {UFIELD_CATEGORY_LIST_SPAN, 1, 3,  4},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 3,  4},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 4,  9},
+            {UFIELD_CATEGORY_LIST_SPAN, 2, 9, 10},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 9, 10}};
+        checkMixedFormattedValue(
+            message,
+            ulistfmt_resultAsValue(fl, &ec),
+            expectedString,
+            expectedFieldPositions,
+            UPRV_LENGTHOF(expectedFieldPositions));
+    }
+
+    ulistfmt_close(fmt);
+    ulistfmt_closeResult(fl);
+}
+
 
 #endif /* #if !UCONFIG_NO_FORMATTING */