// © 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 TestTimeZoneInLocale(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