298 lines
7.5 KiB
C++
298 lines
7.5 KiB
C++
// © 2016 and later: Unicode, Inc. and others.
|
|
// License & terms of use: http://www.unicode.org/copyright.html
|
|
/********************************************************************
|
|
* COPYRIGHT:
|
|
* Copyright (c) 1997-2016, International Business Machines Corporation and
|
|
* others. All Rights Reserved.
|
|
********************************************************************/
|
|
|
|
#ifndef _DATEFORMATTEST_
|
|
#define _DATEFORMATTEST_
|
|
|
|
#include "unicode/utypes.h"
|
|
|
|
#if !UCONFIG_NO_FORMATTING
|
|
|
|
#include "unicode/datefmt.h"
|
|
#include "unicode/smpdtfmt.h"
|
|
#include "caltztst.h"
|
|
|
|
/**
|
|
* Performs many different tests for DateFormat and SimpleDateFormat
|
|
**/
|
|
class DateFormatTest: public CalendarTimeZoneTest {
|
|
// IntlTest override
|
|
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par );
|
|
public:
|
|
/**
|
|
* Verify that patterns have the correct values and could produce
|
|
* the DateFormat instances that contain the correct localized patterns.
|
|
*/
|
|
void TestPatterns();
|
|
/**
|
|
* "Test written by Wally Wedel and emailed to me."
|
|
* Test handling of timezone offsets
|
|
**/
|
|
virtual void TestWallyWedel(void);
|
|
/**
|
|
* Test operator==
|
|
*/
|
|
virtual void TestEquals(void);
|
|
/**
|
|
* Test the parsing of 2-digit years.
|
|
*/
|
|
virtual void TestTwoDigitYearDSTParse(void);
|
|
|
|
public: // package
|
|
// internal utility routine (genrates escape sequences for characters)
|
|
static UnicodeString& escape(UnicodeString& s);
|
|
|
|
public:
|
|
/**
|
|
* Verify that returned field position indices are correct.
|
|
*/
|
|
void TestFieldPosition(void);
|
|
|
|
void TestGeneral();
|
|
|
|
public: // package
|
|
// internal utility function
|
|
static void getFieldText(DateFormat* df, int32_t field, UDate date, UnicodeString& str);
|
|
|
|
public:
|
|
/**
|
|
* Verify that strings which contain incomplete specifications are parsed
|
|
* correctly. In some instances, this means not being parsed at all, and
|
|
* returning an appropriate error.
|
|
*/
|
|
virtual void TestPartialParse994(void);
|
|
|
|
public: // package
|
|
// internal test subroutine, used by TestPartialParse994
|
|
virtual void tryPat994(SimpleDateFormat* format, const char* pat, const char* str, UDate expected);
|
|
|
|
public:
|
|
/**
|
|
* Verify the behavior of patterns in which digits for different fields run together
|
|
* without intervening separators.
|
|
*/
|
|
virtual void TestRunTogetherPattern985(void);
|
|
/**
|
|
* Verify the behavior of patterns in which digits for different fields run together
|
|
* without intervening separators.
|
|
*/
|
|
virtual void TestRunTogetherPattern917(void);
|
|
|
|
public: // package
|
|
// internal test subroutine, used by TestRunTogetherPattern917
|
|
virtual void testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expected);
|
|
|
|
public:
|
|
/**
|
|
* Verify the handling of Czech June and July, which have the unique attribute that
|
|
* one is a proper prefix substring of the other.
|
|
*/
|
|
virtual void TestCzechMonths459(void);
|
|
/**
|
|
* Test the handling of 'D' in patterns.
|
|
*/
|
|
virtual void TestLetterDPattern212(void);
|
|
/**
|
|
* Test the day of year pattern.
|
|
*/
|
|
virtual void TestDayOfYearPattern195(void);
|
|
|
|
public: // package
|
|
// interl test subroutine, used by TestDayOfYearPattern195
|
|
virtual void tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected);
|
|
|
|
public:
|
|
/**
|
|
* Test the handling of single quotes in patterns.
|
|
*/
|
|
virtual void TestQuotePattern161(void);
|
|
/**
|
|
* Verify the correct behavior when handling invalid input strings.
|
|
*/
|
|
virtual void TestBadInput135(void);
|
|
|
|
public:
|
|
/**
|
|
* Verify the correct behavior when parsing an array of inputs against an
|
|
* array of patterns, with known results. The results are encoded after
|
|
* the input strings in each row.
|
|
*/
|
|
virtual void TestBadInput135a(void);
|
|
/**
|
|
* Test the parsing of two-digit years.
|
|
*/
|
|
virtual void TestTwoDigitYear(void);
|
|
|
|
public: // package
|
|
// internal test subroutine, used by TestTwoDigitYear
|
|
virtual void parse2DigitYear(DateFormat& fmt, const char* str, UDate expected);
|
|
|
|
public:
|
|
/**
|
|
* Test the formatting of time zones.
|
|
*/
|
|
virtual void TestDateFormatZone061(void);
|
|
/**
|
|
* Further test the formatting of time zones.
|
|
*/
|
|
virtual void TestDateFormatZone146(void);
|
|
|
|
void TestTimeZoneStringsAPI(void);
|
|
|
|
void TestGMTParsing(void);
|
|
|
|
public: // package
|
|
/**
|
|
* Test the formatting of dates in different locales.
|
|
*/
|
|
virtual void TestLocaleDateFormat(void);
|
|
|
|
virtual void TestFormattingLocaleTimeSeparator(void);
|
|
|
|
virtual void TestDateFormatCalendar(void);
|
|
|
|
virtual void TestSpaceParsing(void);
|
|
|
|
void TestExactCountFormat(void);
|
|
|
|
void TestWhiteSpaceParsing(void);
|
|
|
|
void TestInvalidPattern(void);
|
|
|
|
void TestGreekMay(void);
|
|
|
|
void TestGenericTime(void);
|
|
|
|
void TestGenericTimeZoneOrder(void);
|
|
|
|
void Test6338(void);
|
|
|
|
void Test6726(void);
|
|
|
|
void Test6880(void);
|
|
|
|
void TestISOEra(void);
|
|
|
|
void TestFormalChineseDate(void);
|
|
|
|
void TestStandAloneGMTParse(void);
|
|
|
|
void TestParsePosition(void);
|
|
|
|
void TestMonthPatterns(void);
|
|
|
|
void TestContext(void);
|
|
|
|
void TestNonGregoFmtParse(void);
|
|
|
|
void TestFormatsWithNumberSystems(void);
|
|
|
|
public:
|
|
/**
|
|
* Test host-specific formatting.
|
|
*/
|
|
void TestHost(void);
|
|
|
|
public:
|
|
/**
|
|
* Test patterns added in CLDR 1.4, CLDR 23
|
|
*/
|
|
void TestEras(void);
|
|
|
|
void TestNarrowNames(void);
|
|
|
|
void TestShortDays(void);
|
|
|
|
void TestStandAloneDays(void);
|
|
|
|
void TestStandAloneMonths(void);
|
|
|
|
void TestQuarters(void);
|
|
|
|
void TestZTimeZoneParsing(void);
|
|
|
|
void TestRelativeClone(void);
|
|
|
|
void TestHostClone(void);
|
|
|
|
void TestHebrewClone(void);
|
|
|
|
void TestDateFormatSymbolsClone(void);
|
|
|
|
void TestTimeZoneDisplayName(void);
|
|
|
|
void TestRoundtripWithCalendar(void);
|
|
|
|
public:
|
|
/***
|
|
* Test Relative Dates
|
|
*/
|
|
void TestRelative(void);
|
|
/* void TestRelativeError(void);
|
|
void TestRelativeOther(void);
|
|
*/
|
|
|
|
void TestDotAndAtLeniency();
|
|
|
|
void TestDateFormatLeniency();
|
|
|
|
void TestParseMultiPatternMatch();
|
|
|
|
void TestParseLeniencyAPIs();
|
|
|
|
// test override NumberFormat
|
|
void TestNumberFormatOverride();
|
|
void TestCreateInstanceForSkeleton();
|
|
void TestCreateInstanceForSkeletonDefault();
|
|
void TestCreateInstanceForSkeletonWithCalendar();
|
|
void TestDFSCreateForLocaleNonGregorianLocale();
|
|
void TestDFSCreateForLocaleWithCalendarInLocale();
|
|
void TestChangeCalendar();
|
|
|
|
void TestPatternFromSkeleton();
|
|
|
|
void TestAmPmMidnightNoon();
|
|
void TestFlexibleDayPeriod();
|
|
void TestDayPeriodWithLocales();
|
|
void TestMinuteSecondFieldsInOddPlaces();
|
|
void TestDayPeriodParsing();
|
|
void TestParseRegression13744();
|
|
void TestAdoptCalendarLeak();
|
|
void Test20741_ABFields();
|
|
|
|
private:
|
|
UBool showParse(DateFormat &format, const UnicodeString &formattedString);
|
|
|
|
public:
|
|
/**
|
|
* Test parsing a number as a string
|
|
*/
|
|
void TestNumberAsStringParsing(void);
|
|
|
|
private:
|
|
void TestRelative(int daysdelta,
|
|
const Locale& loc,
|
|
const char *expectChars);
|
|
|
|
private:
|
|
void expectParse(const char** data, int32_t data_length,
|
|
const Locale& locale);
|
|
|
|
void expect(const char** data, int32_t data_length,
|
|
const Locale& loc);
|
|
|
|
void expectFormat(const char **data, int32_t data_length,
|
|
const Locale &locale);
|
|
|
|
};
|
|
|
|
#endif /* #if !UCONFIG_NO_FORMATTING */
|
|
|
|
#endif // _DATEFORMATTEST_
|
|
//eof
|