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

Unified Diff: icu46/source/test/compat/tzdate.c

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/compat/readme.txt ('k') | icu46/source/test/compat/tzone.pl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: icu46/source/test/compat/tzdate.c
===================================================================
--- icu46/source/test/compat/tzdate.c (revision 0)
+++ icu46/source/test/compat/tzdate.c (revision 0)
@@ -0,0 +1,140 @@
+/*
+**********************************************************************
+* Copyright (C) 2007-2007, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+*
+* File tzdate.c
+*
+* Author: Michael Ow
+*
+**********************************************************************
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <string.h>
+
+#include "unicode/utypes.h"
+#include "unicode/ustring.h"
+#include "unicode/uclean.h"
+
+#include "unicode/ucnv.h"
+#include "unicode/udat.h"
+#include "unicode/ucal.h"
+
+#include "putilimp.h"
+
+#define SIZE 80
+#define OFFSET_MONTH 1
+
+int64_t getSystemCurrentTime(char* systime, int year, int month, int day, int hour, int minute, int useCurrentTime);
+void getICUCurrentTime(char* icutime, double timeToCheck);
+void printTime(char* systime, char* icutime);
+
+int main(int argc, char** argv) {
+ char systime[SIZE];
+ char icutime[SIZE];
+ int year, month, day, hour, minute;
+ int sysyear;
+ int useCurrentTime;
+ int64_t systemtime;
+
+ sysyear = year = month = day = 0;
+
+ if (argc <= 6) {
+ fprintf(stderr, "Not enough arguments\n");
+ return -1;
+ }
+
+ year = atoi(argv[1]);
+ month = atoi(argv[2]);
+ day = atoi(argv[3]);
+ hour = atoi(argv[4]);
+ minute = atoi(argv[5]);
+ useCurrentTime = atoi(argv[6]);
+
+ /* format year for system time */
+ sysyear = year - 1900;
+
+ systemtime = getSystemCurrentTime(systime, sysyear, month, day, hour, minute, useCurrentTime);
+ getICUCurrentTime(icutime, systemtime * U_MILLIS_PER_SECOND);
+
+ /* print out the times if failed */
+ if (strcmp(systime, icutime) != 0) {
+ printf("Failed\n");
+ printTime(systime, icutime);
+ }
+
+ return 0;
+}
+
+void getICUCurrentTime(char* icutime, double timeToCheck) {
+ UDateFormat *fmt;
+ const UChar *tz = 0;
+ UChar *s = 0;
+ UDateFormatStyle style = UDAT_RELATIVE;
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t len = 0;
+ int i;
+
+ fmt = udat_open(style, style, 0, tz, -1,NULL,0, &status);
+
+ len = udat_format(fmt, timeToCheck, 0, len, 0, &status);
+
+ if (status == U_BUFFER_OVERFLOW_ERROR)
+ status = U_ZERO_ERROR;
+
+ s = (UChar*) malloc(sizeof(UChar) * (len+1));
+
+ if(s == 0)
+ goto finish;
+
+ udat_format(fmt, timeToCheck, s, len + 1, 0, &status);
+
+ if (U_FAILURE(status))
+ goto finish;
+
+ /* +1 to NULL terminate */
+ for(i = 0; i < len+1; i++) {
+ icutime[i] = (char)s[i];
+ }
+
+finish:
+ udat_close(fmt);
+ free(s);
+}
+
+int64_t getSystemCurrentTime(char* systime, int year, int month, int day, int hour, int minute, int useCurrentTime) {
+ time_t now;
+ struct tm ts;
+
+ if (useCurrentTime){
+ time(&now);
+ ts = *localtime(&now);
+ }
+ else {
+ memset(&ts, 0, sizeof(ts));
+ ts.tm_year = year;
+ ts.tm_mon = month - OFFSET_MONTH;
+ ts.tm_mday = day;
+ ts.tm_hour = hour;
+ ts.tm_min = minute;
+
+ now = mktime(&ts);
+ ts = *localtime(&now);
+ }
+
+ /* Format the string */
+ strftime(systime, sizeof(char) * 80, "%Y%m%d %I:%M %p", &ts);
+
+ return (double)now;
+}
+
+void printTime(char* systime, char* icutime) {
+ printf("System Time: %s\n", systime);
+ printf("ICU Time: %s\n", icutime);
+ printf("STD=%s DST=%s OFFSET=%d\n", uprv_tzname(0), uprv_tzname(1), uprv_timezone());
+}
+
Property changes on: icu46/source/test/compat/tzdate.c
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « icu46/source/test/compat/readme.txt ('k') | icu46/source/test/compat/tzone.pl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698