12e5b6d6dSopenharmony_ci// © 2016 and later: Unicode, Inc. and others. 22e5b6d6dSopenharmony_ci// License & terms of use: http://www.unicode.org/copyright.html 32e5b6d6dSopenharmony_ci/******************************************************************** 42e5b6d6dSopenharmony_ci * COPYRIGHT: 52e5b6d6dSopenharmony_ci * Copyright (c) 2008-2016 International Business Machines Corporation and 62e5b6d6dSopenharmony_ci * others. All Rights Reserved. 72e5b6d6dSopenharmony_ci ********************************************************************/ 82e5b6d6dSopenharmony_ci 92e5b6d6dSopenharmony_ci#ifndef _INTLTESTDATEINTERVALFORMAT 102e5b6d6dSopenharmony_ci#define _INTLTESTDATEINTERVALFORMAT 112e5b6d6dSopenharmony_ci 122e5b6d6dSopenharmony_ci#include "unicode/utypes.h" 132e5b6d6dSopenharmony_ci#include "unicode/locid.h" 142e5b6d6dSopenharmony_ci 152e5b6d6dSopenharmony_ci#if !UCONFIG_NO_FORMATTING 162e5b6d6dSopenharmony_ci 172e5b6d6dSopenharmony_ci#include "intltest.h" 182e5b6d6dSopenharmony_ci#include "itformat.h" 192e5b6d6dSopenharmony_ci 202e5b6d6dSopenharmony_ciU_NAMESPACE_BEGIN 212e5b6d6dSopenharmony_ciclass FormattedDateInterval; 222e5b6d6dSopenharmony_ciU_NAMESPACE_END 232e5b6d6dSopenharmony_ci 242e5b6d6dSopenharmony_ci/** 252e5b6d6dSopenharmony_ci * Test basic functionality of various API functions 262e5b6d6dSopenharmony_ci **/ 272e5b6d6dSopenharmony_ciclass DateIntervalFormatTest: public IntlTestWithFieldPosition { 282e5b6d6dSopenharmony_ci void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override; 292e5b6d6dSopenharmony_ci 302e5b6d6dSopenharmony_cipublic: 312e5b6d6dSopenharmony_ci /** 322e5b6d6dSopenharmony_ci * Performs tests on many API functions, see detailed comments in source code 332e5b6d6dSopenharmony_ci **/ 342e5b6d6dSopenharmony_ci void testAPI(); 352e5b6d6dSopenharmony_ci 362e5b6d6dSopenharmony_ci /** 372e5b6d6dSopenharmony_ci * Test formatting 382e5b6d6dSopenharmony_ci */ 392e5b6d6dSopenharmony_ci void testFormat(); 402e5b6d6dSopenharmony_ci 412e5b6d6dSopenharmony_ci 422e5b6d6dSopenharmony_ci /** 432e5b6d6dSopenharmony_ci * Test handling of hour and day period metacharacters 442e5b6d6dSopenharmony_ci */ 452e5b6d6dSopenharmony_ci void testHourMetacharacters(); 462e5b6d6dSopenharmony_ci 472e5b6d6dSopenharmony_ci void testFormatMillisecond(); 482e5b6d6dSopenharmony_ci 492e5b6d6dSopenharmony_ci /** 502e5b6d6dSopenharmony_ci * Test formatting using user defined DateIntervalInfo 512e5b6d6dSopenharmony_ci */ 522e5b6d6dSopenharmony_ci void testFormatUserDII(); 532e5b6d6dSopenharmony_ci 542e5b6d6dSopenharmony_ci /* 552e5b6d6dSopenharmony_ci * Test format using UDisplayContext 562e5b6d6dSopenharmony_ci */ 572e5b6d6dSopenharmony_ci void testContext(); 582e5b6d6dSopenharmony_ci 592e5b6d6dSopenharmony_ci /** 602e5b6d6dSopenharmony_ci * Test for no unwanted side effects when setting 612e5b6d6dSopenharmony_ci * interval patterns. 622e5b6d6dSopenharmony_ci */ 632e5b6d6dSopenharmony_ci void testSetIntervalPatternNoSideEffect(); 642e5b6d6dSopenharmony_ci 652e5b6d6dSopenharmony_ci /** 662e5b6d6dSopenharmony_ci * Tests different year formats. 672e5b6d6dSopenharmony_ci */ 682e5b6d6dSopenharmony_ci void testYearFormats(); 692e5b6d6dSopenharmony_ci 702e5b6d6dSopenharmony_ci /** 712e5b6d6dSopenharmony_ci * Stress test -- stress test formatting on 40 locales 722e5b6d6dSopenharmony_ci */ 732e5b6d6dSopenharmony_ci void testStress(); 742e5b6d6dSopenharmony_ci 752e5b6d6dSopenharmony_ci void testTicket11583_2(); 762e5b6d6dSopenharmony_ci 772e5b6d6dSopenharmony_ci void testTicket11985(); 782e5b6d6dSopenharmony_ci 792e5b6d6dSopenharmony_ci void testTicket11669(); 802e5b6d6dSopenharmony_ci void threadFunc11669(int32_t threadNum); 812e5b6d6dSopenharmony_ci 822e5b6d6dSopenharmony_ci void testTicket12065(); 832e5b6d6dSopenharmony_ci 842e5b6d6dSopenharmony_ci void testFormattedDateInterval(); 852e5b6d6dSopenharmony_ci void testCreateInstanceForAllLocales(); 862e5b6d6dSopenharmony_ci 872e5b6d6dSopenharmony_ci void testTicket20707(); 882e5b6d6dSopenharmony_ci void testTicket21222GregorianEraDiff(); 892e5b6d6dSopenharmony_ci void testTicket21222ROCEraDiff(); 902e5b6d6dSopenharmony_ci void testTicket21222JapaneseEraDiff(); 912e5b6d6dSopenharmony_ci 922e5b6d6dSopenharmony_ci void testTicket21939(); 932e5b6d6dSopenharmony_ci 942e5b6d6dSopenharmony_ciprivate: 952e5b6d6dSopenharmony_ci /** 962e5b6d6dSopenharmony_ci * Test formatting against expected result 972e5b6d6dSopenharmony_ci */ 982e5b6d6dSopenharmony_ci void expect(const char** data, int32_t data_length); 992e5b6d6dSopenharmony_ci 1002e5b6d6dSopenharmony_ci /** 1012e5b6d6dSopenharmony_ci * Test formatting against expected result using user defined 1022e5b6d6dSopenharmony_ci * DateIntervalInfo 1032e5b6d6dSopenharmony_ci */ 1042e5b6d6dSopenharmony_ci void expectUserDII(const char** data, int32_t data_length); 1052e5b6d6dSopenharmony_ci 1062e5b6d6dSopenharmony_ci /** 1072e5b6d6dSopenharmony_ci * Stress test formatting 1082e5b6d6dSopenharmony_ci */ 1092e5b6d6dSopenharmony_ci void stress(const char** data, int32_t data_length, const Locale& loc, 1102e5b6d6dSopenharmony_ci const char* locName); 1112e5b6d6dSopenharmony_ci 1122e5b6d6dSopenharmony_ci void getCategoryAndField( 1132e5b6d6dSopenharmony_ci const FormattedDateInterval& formatted, 1142e5b6d6dSopenharmony_ci std::vector<int32_t>& categories, 1152e5b6d6dSopenharmony_ci std::vector<int32_t>& fields, 1162e5b6d6dSopenharmony_ci IcuTestErrorCode& status); 1172e5b6d6dSopenharmony_ci 1182e5b6d6dSopenharmony_ci void verifyCategoryAndField( 1192e5b6d6dSopenharmony_ci const FormattedDateInterval& formatted, 1202e5b6d6dSopenharmony_ci const std::vector<int32_t>& categories, 1212e5b6d6dSopenharmony_ci const std::vector<int32_t>& fields, 1222e5b6d6dSopenharmony_ci IcuTestErrorCode& status); 1232e5b6d6dSopenharmony_ci 1242e5b6d6dSopenharmony_ci}; 1252e5b6d6dSopenharmony_ci 1262e5b6d6dSopenharmony_ci#endif /* #if !UCONFIG_NO_FORMATTING */ 1272e5b6d6dSopenharmony_ci 1282e5b6d6dSopenharmony_ci#endif 129