16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2012-2013, International Business Machines 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* file name: listformattertest.cpp 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* encoding: US-ASCII 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* tab size: 8 (not used) 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* indentation:4 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created on: 2012aug27 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created by: Umesh P. Nair 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "listformattertest.h" 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <string.h> 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgListFormatterTest::ListFormatterTest() : 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org prefix("Prefix: ", -1, US_INV), 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one("Alice", -1, US_INV), two("Bob", -1, US_INV), 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org three("Charlie", -1, US_INV), four("Delta", -1, US_INV) { 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::CheckFormatting(const ListFormatter* formatter, UnicodeString data[], int32_t dataSize, 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString& expected_result) { 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString actualResult(prefix); 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode errorCode = U_ZERO_ERROR; 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatter->format(data, dataSize, actualResult, errorCode); 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString expectedStringWithPrefix = prefix + expected_result; 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (expectedStringWithPrefix != actualResult) { 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln(UnicodeString("Expected: |") + expectedStringWithPrefix + "|, Actual: |" + actualResult + "|"); 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::CheckFourCases(const char* locale_string, UnicodeString one, UnicodeString two, 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString three, UnicodeString four, UnicodeString results[4]) { 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode errorCode = U_ZERO_ERROR; 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LocalPointer<ListFormatter> formatter(ListFormatter::createInstance(Locale(locale_string), errorCode)); 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(errorCode)) { 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dataerrln("ListFormatter::createInstance(Locale(\"%s\"), errorCode) failed in CheckFourCases: %s", locale_string, u_errorName(errorCode)); 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input1[] = {one}; 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFormatting(formatter.getAlias(), input1, 1, results[0]); 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input2[] = {one, two}; 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFormatting(formatter.getAlias(), input2, 2, results[1]); 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input3[] = {one, two, three}; 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFormatting(formatter.getAlias(), input3, 3, results[2]); 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input4[] = {one, two, three, four}; 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFormatting(formatter.getAlias(), input4, 4, results[3]); 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUBool ListFormatterTest::RecordFourCases(const Locale& locale, UnicodeString one, UnicodeString two, 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString three, UnicodeString four, UnicodeString results[4]) { 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode errorCode = U_ZERO_ERROR; 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LocalPointer<ListFormatter> formatter(ListFormatter::createInstance(locale, errorCode)); 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(errorCode)) { 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dataerrln("ListFormatter::createInstance(\"%s\", errorCode) failed in RecordFourCases: %s", locale.getName(), u_errorName(errorCode)); 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return FALSE; 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input1[] = {one}; 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatter->format(input1, 1, results[0], errorCode); 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input2[] = {one, two}; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatter->format(input2, 2, results[1], errorCode); 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input3[] = {one, two, three}; 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatter->format(input3, 3, results[2], errorCode); 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input4[] = {one, two, three, four}; 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatter->format(input4, 4, results[3], errorCode); 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(errorCode)) { 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("RecordFourCases failed: %s", u_errorName(errorCode)); 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return FALSE; 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return TRUE; 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::TestRoot() { 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString results[4] = { 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one, 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two, 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", " + three, 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", " + three + ", " + four 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFourCases("", one, two, three, four, results); 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Bogus locale should fallback to root. 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::TestBogus() { 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString results[4]; 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (RecordFourCases(Locale::getDefault(), one, two, three, four, results)) { 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFourCases("ex_PY", one, two, three, four, results); 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Formatting in English. 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// "and" is used before the last element, and all elements up to (and including) the penultimate are followed by a comma. 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::TestEnglish() { 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString results[4] = { 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one, 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + " and " + two, 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", and " + three, 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", " + three + ", and " + four 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFourCases("en", one, two, three, four, results); 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::Test9946() { 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode errorCode = U_ZERO_ERROR; 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LocalPointer<ListFormatter> formatter(ListFormatter::createInstance(Locale("en"), errorCode)); 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(errorCode)) { 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dataerrln( 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "ListFormatter::createInstance(Locale(\"en\"), errorCode) failed in Test9946: %s", 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_errorName(errorCode)); 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString data[3] = {"{0}", "{1}", "{2}"}; 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString actualResult; 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatter->format(data, 3, actualResult, errorCode); 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(errorCode)) { 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dataerrln( 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "ListFormatter::createInstance(Locale(\"en\"), errorCode) failed in Test9946: %s", 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_errorName(errorCode)); 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString expected("{0}, {1}, and {2}"); 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (expected != actualResult) { 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("Expected " + expected + ", got " + actualResult); 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::TestEnglishUS() { 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString results[4] = { 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one, 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + " and " + two, 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", and " + three, 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", " + three + ", and " + four 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFourCases("en_US", one, two, three, four, results); 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Formatting in Russian. 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// "\\u0438" is used before the last element, and all elements up to (but not including) the penultimate are followed by a comma. 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::TestRussian() { 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString and_string = UnicodeString(" \\u0438 ", -1, US_INV).unescape(); 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString results[4] = { 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one, 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + and_string + two, 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + and_string + three, 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", " + three + and_string + four 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFourCases("ru", one, two, three, four, results); 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Formatting in Malayalam. 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// For two elements, "\\u0d15\\u0d42\\u0d1f\\u0d3e\\u0d24\\u0d46" is inserted in between. 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// For more than two elements, comma is inserted between all elements up to (and including) the penultimate, 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// and the word \\u0d0e\\u0d28\\u0d4d\\u0d28\\u0d3f\\u0d35 is inserted in the end. 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::TestMalayalam() { 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString pair_string = UnicodeString(" \\u0d15\\u0d42\\u0d1f\\u0d3e\\u0d24\\u0d46 ", -1, US_INV).unescape(); 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString total_string = UnicodeString(" \\u0d0e\\u0d28\\u0d4d\\u0d28\\u0d3f\\u0d35", -1, US_INV).unescape(); 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString results[4] = { 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one, 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + pair_string + two, 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", " + three + total_string, 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", " + three + ", " + four + total_string 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFourCases("ml", one, two, three, four, results); 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Formatting in Zulu. 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// "and" is used before the last element, and all elements up to (and including) the penultimate are followed by a comma. 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::TestZulu() { 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString results[4] = { 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one, 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "I-" + one + " ne-" + two, 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", no-" + three, 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one + ", " + two + ", " + three + ", no-" + four 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFourCases("zu", one, two, three, four, results); 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::TestOutOfOrderPatterns() { 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString results[4] = { 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org one, 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org two + " after " + one, 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org three + " in the last after " + two + " after the first " + one, 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org four + " in the last after " + three + " after " + two + " after the first " + one 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ListFormatData data("{1} after {0}", "{1} after the first {0}", 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "{1} after {0}", "{1} in the last after {0}"); 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ListFormatter formatter(&data); 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input1[] = {one}; 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFormatting(&formatter, input1, 1, results[0]); 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input2[] = {one, two}; 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFormatting(&formatter, input2, 2, results[1]); 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input3[] = {one, two, three}; 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFormatting(&formatter, input3, 3, results[2]); 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString input4[] = {one, two, three, four}; 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CheckFormatting(&formatter, input4, 4, results[3]); 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ListFormatterTest::runIndexedTest(int32_t index, UBool exec, 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* &name, char* /*par */) { 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org switch(index) { 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 0: name = "TestRoot"; if (exec) TestRoot(); break; 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 1: name = "TestBogus"; if (exec) TestBogus(); break; 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 2: name = "TestEnglish"; if (exec) TestEnglish(); break; 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 3: name = "TestEnglishUS"; if (exec) TestEnglishUS(); break; 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 4: name = "TestRussian"; if (exec) TestRussian(); break; 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 5: name = "TestMalayalam"; if (exec) TestMalayalam(); break; 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 6: name = "TestZulu"; if (exec) TestZulu(); break; 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 7: name = "TestOutOfOrderPatterns"; if (exec) TestOutOfOrderPatterns(); break; 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 8: name = "Test9946"; if (exec) Test9946(); break; 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org default: name = ""; break; 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 233