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