Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Unified Diff: icu46/source/test/perf/normperf/dtfmtrtperf.h

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « icu46/source/test/perf/normperf/NormPerf_r.pl ('k') | icu46/source/test/perf/normperf/dtfmtrtperf.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: icu46/source/test/perf/normperf/dtfmtrtperf.h
===================================================================
--- icu46/source/test/perf/normperf/dtfmtrtperf.h (revision 0)
+++ icu46/source/test/perf/normperf/dtfmtrtperf.h (revision 0)
@@ -0,0 +1,231 @@
+/*
+**********************************************************************
+* Copyright (c) 2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+
+#ifndef _DTFMTRTPERF_H
+#define _DTFMTRTPERF_H
+
+#include "unicode/utypes.h"
+#include "unicode/uperf.h"
+#include "unicode/timezone.h"
+#include "unicode/simpletz.h"
+#include "unicode/calendar.h"
+#include "unicode/strenum.h"
+#include "unicode/smpdtfmt.h"
+#include "unicode/uchar.h"
+#include "unicode/basictz.h"
+#include "cstring.h"
+
+#include "unicode/uperf.h"
+#include "unicode/unistr.h"
+#include "unicode/datefmt.h"
+#include "unicode/calendar.h"
+#include "unicode/uclean.h"
+#include "unicode/brkiter.h"
+#include "util.h"
+
+static const char* PATTERNS[] = {"z", "zzzz", "Z", "ZZZZ", "v", "vvvv", "V", "VVVV"};
+static const int NUM_PATTERNS = sizeof(PATTERNS)/sizeof(const char*);
+
+#include <iostream>
+#include <stdlib.h>
+#include <fstream>
+#include <string>
+using namespace std;
+
+// Stubs for Windows API functions when building on UNIXes.
+//
+#if defined(U_WINDOWS)
+// do nothing
+#else
+#define _UNICODE
+typedef int DWORD;
+inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest);
+#endif
+
+class DateTimeRoundTripFunction : public UPerfFunction
+{
+private:
+ int nLocales;
+public:
+
+ DateTimeRoundTripFunction()
+ {
+ nLocales = 0;
+ }
+
+ DateTimeRoundTripFunction(int locs)
+ {
+ nLocales = locs;
+ }
+
+ virtual void call(UErrorCode* status)
+ {
+ *status = U_ZERO_ERROR;
+
+ SimpleTimeZone unknownZone(-31415, (UnicodeString)"Etc/Unknown");
+ int32_t badDstOffset = -1234;
+ int32_t badZoneOffset = -2345;
+
+ int32_t testDateData[][3] = {
+ {2007, 1, 15},
+ {2007, 6, 15},
+ {1990, 1, 15},
+ {1990, 6, 15},
+ {1960, 1, 15},
+ {1960, 6, 15},
+ };
+
+ Calendar *cal = Calendar::createInstance(*status);
+ if (U_FAILURE(*status)) {
+ //dataerrln("Calendar::createInstance failed: %s", u_errorName(*status));
+ return;
+ }
+
+ // Set up rule equivalency test range
+ UDate low, high;
+ cal->set(1900, UCAL_JANUARY, 1);
+ low = cal->getTime(*status);
+ cal->set(2040, UCAL_JANUARY, 1);
+ high = cal->getTime(*status);
+ if (U_FAILURE(*status)) {
+ //errln("getTime failed");
+ return;
+ }
+
+ // Set up test dates
+ UDate DATES[(sizeof(testDateData)/sizeof(int32_t))/3];
+ const int32_t nDates = (sizeof(testDateData)/sizeof(int32_t))/3;
+ cal->clear();
+ for (int32_t i = 0; i < nDates; i++) {
+ cal->set(testDateData[i][0], testDateData[i][1], testDateData[i][2]);
+ DATES[i] = cal->getTime(*status);
+ if (U_FAILURE(*status)) {
+ //errln("getTime failed");
+ return;
+ }
+ }
+
+ // Set up test locales
+ const Locale testLocales[] = {
+ Locale("en"),
+ Locale("en_US"),
+ Locale("en_AU"),
+ Locale("de_DE"),
+ Locale("fr"),
+ Locale("ja_JP"),
+ Locale("ko"),
+ Locale("pt"),
+ Locale("th_TH"),
+ Locale("zh_Hans"),
+
+ Locale("it"),
+
+ Locale("en"),
+ Locale("en_US"),
+ Locale("en_AU"),
+ Locale("de_DE"),
+ Locale("fr"),
+ Locale("ja_JP"),
+ Locale("ko"),
+ Locale("pt"),
+ Locale("th_TH"),
+ Locale("zh_Hans"),
+ };
+
+ const Locale *LOCALES;
+ LOCALES = testLocales;
+
+ StringEnumeration *tzids = TimeZone::createEnumeration();
+ if (U_FAILURE(*status)) {
+ //errln("tzids->count failed");
+ return;
+ }
+
+ // Run the roundtrip test
+ for (int32_t locidx = 0; locidx < nLocales; locidx++) {
+ for (int32_t patidx = 0; patidx < NUM_PATTERNS; patidx++) {
+ SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)PATTERNS[patidx], LOCALES[locidx], *status);
+ if (U_FAILURE(*status)) {
+ //errcheckln(*status, (UnicodeString)"new SimpleDateFormat failed for pattern " +
+ // PATTERNS[patidx] + " for locale " + LOCALES[locidx].getName() + " - " + u_errorName(*status));
+ *status = U_ZERO_ERROR;
+ continue;
+ }
+
+ tzids->reset(*status);
+ const UnicodeString *tzid;
+ while ((tzid = tzids->snext(*status))) {
+ TimeZone *tz = TimeZone::createTimeZone(*tzid);
+
+ for (int32_t datidx = 0; datidx < nDates; datidx++) {
+ UnicodeString tzstr;
+ FieldPosition fpos(0);
+
+ // Format
+ sdf->setTimeZone(*tz);
+ sdf->format(DATES[datidx], tzstr, fpos);
+
+ // Before parse, set unknown zone to SimpleDateFormat instance
+ // just for making sure that it does not depends on the time zone
+ // originally set.
+ sdf->setTimeZone(unknownZone);
+
+ // Parse
+ ParsePosition pos(0);
+ Calendar *outcal = Calendar::createInstance(unknownZone, *status);
+ if (U_FAILURE(*status)) {
+ //errln("Failed to create an instance of calendar for receiving parse result.");
+ *status = U_ZERO_ERROR;
+ continue;
+ }
+ outcal->set(UCAL_DST_OFFSET, badDstOffset);
+ outcal->set(UCAL_ZONE_OFFSET, badZoneOffset);
+ sdf->parse(tzstr, *outcal, pos);
+
+ // clean loop
+ delete outcal;
+
+ }
+ delete tz;
+ // break time zone loop
+ break;
+
+ }
+ delete sdf;
+ }
+ }
+ delete cal;
+ delete tzids;
+
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ return NUM_PATTERNS * nLocales * 6;
+ }
+};
+
+
+class DateTimeRoundTripPerfTest : public UPerfTest
+{
+private:
+
+public:
+
+ DateTimeRoundTripPerfTest(int32_t argc, const char* argv[], UErrorCode& status);
+ ~DateTimeRoundTripPerfTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par);
+
+ UPerfFunction* RoundTripLocale1();
+ UPerfFunction* RoundTripLocale10();
+ UPerfFunction* RoundTripLocale11();
+ UPerfFunction* RoundTripLocale21();
+};
+
+
+#endif // DateTimeRoundTripPerfTest
Property changes on: icu46/source/test/perf/normperf/dtfmtrtperf.h
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « icu46/source/test/perf/normperf/NormPerf_r.pl ('k') | icu46/source/test/perf/normperf/dtfmtrtperf.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698