16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org********************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (c) 2010-2011,International Business Machines 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org********************************************************************** 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org********************************************************************** 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _DTFMTRTPERF_H 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _DTFMTRTPERF_H 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uperf.h" 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/timezone.h" 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/simpletz.h" 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/calendar.h" 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/strenum.h" 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/smpdtfmt.h" 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uchar.h" 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/basictz.h" 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "cstring.h" 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uperf.h" 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/unistr.h" 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/datefmt.h" 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/calendar.h" 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uclean.h" 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/brkiter.h" 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "util.h" 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic const char* PATTERNS[] = {"z", "zzzz", "Z", "ZZZZ", "v", "vvvv", "V", "VVVV"}; 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic const int NUM_PATTERNS = sizeof(PATTERNS)/sizeof(const char*); 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <iostream> 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdlib.h> 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <fstream> 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <string> 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgusing namespace std; 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Stubs for Windows API functions when building on UNIXes. 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_PLATFORM_USES_ONLY_WIN32_API 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// do nothing 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#else 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _UNICODE 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef int DWORD; 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orginline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest); 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass DateTimeRoundTripFunction : public UPerfFunction 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int nLocales; 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateTimeRoundTripFunction() 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org nLocales = 0; 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateTimeRoundTripFunction(int locs) 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org nLocales = locs; 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void call(UErrorCode* status) 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *status = U_ZERO_ERROR; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleTimeZone unknownZone(-31415, (UnicodeString)"Etc/Unknown"); 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t badDstOffset = -1234; 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t badZoneOffset = -2345; 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t testDateData[][3] = { 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org {2007, 1, 15}, 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org {2007, 6, 15}, 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org {1990, 1, 15}, 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org {1990, 6, 15}, 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org {1960, 1, 15}, 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org {1960, 6, 15}, 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Calendar *cal = Calendar::createInstance(*status); 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(*status)) { 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //dataerrln("Calendar::createInstance failed: %s", u_errorName(*status)); 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Set up rule equivalency test range 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate low, high; 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->set(1900, UCAL_JANUARY, 1); 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org low = cal->getTime(*status); 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->set(2040, UCAL_JANUARY, 1); 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org high = cal->getTime(*status); 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(*status)) { 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //errln("getTime failed"); 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Set up test dates 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate DATES[(sizeof(testDateData)/sizeof(int32_t))/3]; 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const int32_t nDates = (sizeof(testDateData)/sizeof(int32_t))/3; 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->clear(); 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int32_t i = 0; i < nDates; i++) { 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->set(testDateData[i][0], testDateData[i][1], testDateData[i][2]); 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DATES[i] = cal->getTime(*status); 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(*status)) { 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //errln("getTime failed"); 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Set up test locales 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const Locale testLocales[] = { 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("en"), 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("en_US"), 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("en_AU"), 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("de_DE"), 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("fr"), 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("ja_JP"), 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("ko"), 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("pt"), 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("th_TH"), 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("zh_Hans"), 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("it"), 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("en"), 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("en_US"), 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("en_AU"), 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("de_DE"), 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("fr"), 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("ja_JP"), 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("ko"), 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("pt"), 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("th_TH"), 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale("zh_Hans"), 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const Locale *LOCALES; 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org LOCALES = testLocales; 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org StringEnumeration *tzids = TimeZone::createEnumeration(); 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(*status)) { 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //errln("tzids->count failed"); 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Run the roundtrip test 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int32_t locidx = 0; locidx < nLocales; locidx++) { 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int32_t patidx = 0; patidx < NUM_PATTERNS; patidx++) { 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)PATTERNS[patidx], LOCALES[locidx], *status); 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(*status)) { 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //errcheckln(*status, (UnicodeString)"new SimpleDateFormat failed for pattern " + 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // PATTERNS[patidx] + " for locale " + LOCALES[locidx].getName() + " - " + u_errorName(*status)); 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *status = U_ZERO_ERROR; 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org continue; 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org tzids->reset(*status); 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString *tzid; 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org while ((tzid = tzids->snext(*status))) { 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TimeZone *tz = TimeZone::createTimeZone(*tzid); 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int32_t datidx = 0; datidx < nDates; datidx++) { 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString tzstr; 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FieldPosition fpos(0); 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Format 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org sdf->setTimeZone(*tz); 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org sdf->format(DATES[datidx], tzstr, fpos); 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Before parse, set unknown zone to SimpleDateFormat instance 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // just for making sure that it does not depends on the time zone 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // originally set. 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org sdf->setTimeZone(unknownZone); 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Parse 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ParsePosition pos(0); 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Calendar *outcal = Calendar::createInstance(unknownZone, *status); 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(*status)) { 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //errln("Failed to create an instance of calendar for receiving parse result."); 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *status = U_ZERO_ERROR; 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org continue; 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org outcal->set(UCAL_DST_OFFSET, badDstOffset); 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org outcal->set(UCAL_ZONE_OFFSET, badZoneOffset); 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org sdf->parse(tzstr, *outcal, pos); 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // clean loop 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete outcal; 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete tz; 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // break time zone loop 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete sdf; 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete cal; 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete tzids; 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual long getOperationsPerIteration() 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return NUM_PATTERNS * nLocales * 6; 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass DateTimeRoundTripPerfTest : public UPerfTest 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateTimeRoundTripPerfTest(int32_t argc, const char* argv[], UErrorCode& status); 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ~DateTimeRoundTripPerfTest(); 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par); 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UPerfFunction* RoundTripLocale1(); 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UPerfFunction* RoundTripLocale10(); 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UPerfFunction* RoundTripLocale11(); 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UPerfFunction* RoundTripLocale21(); 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif // DateTimeRoundTripPerfTest