diff -r 4332f0f7be53 -r acd3cd4aaceb glib/tests/testgdateparser.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/glib/tests/testgdateparser.c Tue Aug 31 16:54:36 2010 +0300 @@ -0,0 +1,118 @@ +/* Portion Copyright © 2008-09 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.*/ +#undef G_DISABLE_ASSERT +#undef G_LOG_DOMAIN + +#ifdef GLIB_COMPILATION +#undef GLIB_COMPILATION +#endif + +#include "glib.h" + +#include +#include +#include + + +void g_date_debug_print(GDate* d) +{ + if (!d) g_print("NULL!\n"); + else + g_print("julian: %u (%s) DMY: %u %u %u (%s)\n", + d->julian_days, + d->julian ? "valid" : "invalid", + d->day, + d->month, + d->year, + d->dmy ? "valid" : "invalid"); + + fflush(stdout); +} + +/* These only work in the POSIX locale, maybe C too - + * type POSIX into the program to check them + */ +char* posix_tests [] = { + "19981024", + "981024", + "October 1998", + "October 98", + "oCT 98", + "10/24/98", + "10 -- 24 -- 98", + "10/24/1998", + "October 24, 1998", + NULL +}; + +int main(int argc, char** argv) +{ + GDate* d; + gchar* loc; + gchar input[1024]; + + + loc = setlocale(LC_ALL,""); + if (loc) + g_print("\nLocale set to %s\n", loc); + else + g_print("\nLocale unchanged\n"); + + d = g_date_new(); + + while (fgets(input, 10, stdin)) + { + if (input[0] == '\n') + { + g_print("Enter a date to parse and press enter, or type `POSIX':\n"); + continue; + } + + if (strcmp(input,"POSIX\n") == 0) + { + char** s = posix_tests; + while (*s) { + g_date_set_parse(d, *s); + + g_print("POSIXy parse test `%s' ...", *s); + + if (!g_date_valid(d)) + { + g_print(" failed.\n"); + } + else + { + gchar buf[256]; + + g_date_strftime(buf,100," parsed `%x' (%B %d %Y)\n", + d); + g_print("%s", buf); + } + + ++s; + } + } + else + { + g_date_set_parse(d, input); + + if (!g_date_valid(d)) + { + g_print("Parse failed.\n"); + } + else + { + gchar buf[256]; + + g_date_strftime(buf,100,"Parsed: `%x' (%B %d %Y)\n", + d); + g_print("%s", buf); + } + } + } + + g_date_free(d); + + return 0; +} + +