16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/********************************************************************
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT:
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1999-2002, International Business Machines Corporation and
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * others. All Rights Reserved.
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/unistr.h"
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/calendar.h"
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/datefmt.h"
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdio.h>
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdlib.h>
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "util.h"
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/**
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If the ID supplied to TimeZone is not a valid system ID,
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * TimeZone::createTimeZone() will return a GMT zone object.  In order
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to detect this error, we check the ID of the returned zone against
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the ID we requested.  If they don't match, we fail with an error.
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZone* createZone(const UnicodeString& id) {
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString str;
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    TimeZone* zone = TimeZone::createTimeZone(id);
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if (zone->getID(str) != id) {
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        delete zone;
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        printf("Error: TimeZone::createTimeZone(");
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        uprintf(id);
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        printf(") returned zone with ID ");
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        uprintf(str);
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        printf("\n");
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        exit(1);
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return zone;
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint main(int argc, char **argv) {
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UErrorCode status = U_ZERO_ERROR;
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString str;
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // The languages in which we will display the date
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static char* LANGUAGE[] = {
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "en", "de", "fr"
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    };
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static const int32_t N_LANGUAGE = sizeof(LANGUAGE)/sizeof(LANGUAGE[0]);
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // The time zones in which we will display the time
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static char* TIMEZONE[] = {
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "America/Los_Angeles",
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "America/New_York",
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "Europe/Paris",
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "Europe/Berlin"
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    };
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static const int32_t N_TIMEZONE = sizeof(TIMEZONE)/sizeof(TIMEZONE[0]);
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    for (int32_t i=0; i<N_LANGUAGE; ++i) {
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        Locale loc(LANGUAGE[i]);
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        // Display the formatted date string
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        printf("Date (%s)\n", LANGUAGE[i]);
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    printf("Exiting successfully\n");
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return 0;
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
65