1 // © 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 3 /* 4 ******************************************************************************* 5 * 6 * Copyright (C) 2012-2013, International Business Machines 7 * Corporation and others. All Rights Reserved. 8 * 9 ******************************************************************************* 10 * file name: listformattertest.cpp 11 * encoding: UTF-8 12 * tab size: 8 (not used) 13 * indentation:4 14 * 15 * created on: 2012aug27 16 * created by: Umesh P. Nair 17 */ 18 19 #ifndef __LISTFORMATTERTEST_H__ 20 #define __LISTFORMATTERTEST_H__ 21 22 #include "unicode/fpositer.h" 23 #include "unicode/listformatter.h" 24 #include "intltest.h" 25 #include "itformat.h" 26 27 #if !UCONFIG_NO_FORMATTING 28 29 class ListFormatterTest : public IntlTestWithFieldPosition { 30 public: 31 ListFormatterTest(); ~ListFormatterTest()32 virtual ~ListFormatterTest() {} 33 34 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0) override; 35 36 void TestRoot(); 37 void TestBogus(); 38 void TestEnglish(); 39 void TestEnglishUS(); 40 void TestEnglishGB(); 41 void TestNynorsk(); 42 void TestChineseTradHK(); 43 void TestRussian(); 44 void TestMalayalam(); 45 void TestZulu(); 46 void TestOutOfOrderPatterns(); 47 void Test9946(); 48 void TestFieldPositionIteratorWith1Item(); 49 void TestFieldPositionIteratorWith2Items(); 50 void TestFieldPositionIteratorWith3Items(); 51 void TestFieldPositionIteratorWith2ItemsPatternShift(); 52 void TestFieldPositionIteratorWith3ItemsPatternShift(); 53 void TestFormattedValue(); 54 void TestDifferentStyles(); 55 void TestCreateStyled(); 56 void TestContextual(); 57 void TestNextPosition(); 58 void TestInt32Overflow(); 59 void Test21871(); 60 61 private: 62 void CheckFormatting( 63 const ListFormatter* formatter, 64 UnicodeString data[], 65 int32_t data_size, 66 const UnicodeString& expected_result, 67 const char* testName); 68 void ExpectPositions( 69 const FormattedList& iter, 70 int32_t *values, 71 int32_t tupleCount, 72 UErrorCode& status); 73 void RunTestFieldPositionIteratorWithNItems( 74 UnicodeString *data, 75 int32_t n, 76 int32_t *values, 77 int32_t tupleCount, 78 const char16_t *expectedFormatted, 79 const char* testName); 80 void RunTestFieldPositionIteratorWithNItemsPatternShift( 81 UnicodeString *data, 82 int32_t n, 83 int32_t *values, 84 int32_t tupleCount, 85 const char16_t *expectedFormatted, 86 const char* testName); 87 void RunTestFieldPositionIteratorWithFormatter( 88 ListFormatter* formatter, 89 UnicodeString *data, 90 int32_t n, 91 int32_t *values, 92 int32_t tupleCount, 93 const char16_t *expectedFormatted, 94 const char* testName); 95 void CheckFourCases( 96 const char* locale_string, 97 UnicodeString one, 98 UnicodeString two, 99 UnicodeString three, 100 UnicodeString four, 101 UnicodeString results[4], 102 const char* testName); 103 UBool RecordFourCases( 104 const Locale& locale, 105 UnicodeString one, 106 UnicodeString two, 107 UnicodeString three, 108 UnicodeString four, 109 UnicodeString results[4], 110 const char* testName); 111 void DoTheRealListStyleTesting( 112 Locale locale, 113 UnicodeString items[], 114 int itemCount, 115 UListFormatterType type, 116 UListFormatterWidth width, 117 const char* expected, 118 IcuTestErrorCode status); 119 120 private: 121 // Reused test data. 122 const UnicodeString prefix; 123 const UnicodeString one; 124 const UnicodeString two; 125 const UnicodeString three; 126 const UnicodeString four; 127 }; 128 129 #endif /* #if !UCONFIG_NO_FORMATTING */ 130 131 #endif 132