diff options
Diffstat (limited to 'Build/source/libs/icu/icu-xetex/test/intltest/dtfmtrtts.h')
-rw-r--r-- | Build/source/libs/icu/icu-xetex/test/intltest/dtfmtrtts.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-xetex/test/intltest/dtfmtrtts.h b/Build/source/libs/icu/icu-xetex/test/intltest/dtfmtrtts.h new file mode 100644 index 00000000000..1749d0e6826 --- /dev/null +++ b/Build/source/libs/icu/icu-xetex/test/intltest/dtfmtrtts.h @@ -0,0 +1,96 @@ +/******************************************************************** + * COPYRIGHT: + * Copyright (c) 1997-2006, International Business Machines Corporation and + * others. All Rights Reserved. + ********************************************************************/ + +#ifndef _DATEFORMATROUNDTRIPTEST_ +#define _DATEFORMATROUNDTRIPTEST_ + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_FORMATTING + +#include "unicode/unistr.h" +#include "unicode/datefmt.h" +#include "unicode/smpdtfmt.h" +#include "unicode/calendar.h" +#include "intltest.h" + +/** + * Performs round-trip tests for DateFormat + **/ +class DateFormatRoundTripTest : public IntlTest { + + // IntlTest override + void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ); + +public: + DateFormatRoundTripTest(); + virtual ~DateFormatRoundTripTest(); + + void TestDateFormatRoundTrip(void); + void TestCentury(void); + void test(const Locale& loc); + void test(DateFormat *fmt, const Locale &origLocale, UBool timeOnly = FALSE ); + int32_t getField(UDate d, int32_t f); + UnicodeString& escape(const UnicodeString& src, UnicodeString& dst); + UDate generateDate(void); + UDate generateDate(UDate minDate); + + +//============================================================ +// statics +//============================================================ + +/** + * Return a random uint32_t + **/ +static uint32_t randLong() { + // The portable IntlTest::random() function has sufficient + // resolution for a 16-bit value, but not for 32 bits. + return ((uint32_t) (IntlTest::random() * (1<<16))) | + (((uint32_t) (IntlTest::random() * (1<<16))) << 16); +} + +/** + * Return a random double 0 <= x <= 1.0 + **/ +static double randFraction() +{ + return (double)randLong() / (double)0xFFFFFFFF; +} + +/** + * Return a random value from -range..+range (closed). + **/ +static double randDouble(double range) +{ + double a = randFraction(); + //while(TPlatformUtilities::isInfinite(a) || TPlatformUtilities::isNaN(a)) + // a = randFraction(); + return (2.0 * range * a) - range; +} + +protected: + UBool failure(UErrorCode status, const char* msg); + UBool failure(UErrorCode status, const char* msg, const UnicodeString& str); + + const UnicodeString& fullFormat(UDate d); + +private: + + static int32_t SPARSENESS; + static int32_t TRIALS; + static int32_t DEPTH; + + UBool optionv; // TRUE if @v option is given on command line + SimpleDateFormat *dateFormat; + UnicodeString fgStr; + Calendar *getFieldCal; +}; + +#endif /* #if !UCONFIG_NO_FORMATTING */ + +#endif // _DATEFORMATROUNDTRIPTEST_ +//eof |