glib/tests/testgdateparser.c
changeset 18 47c74d1534e1
child 34 5fae379060a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/glib/tests/testgdateparser.c	Fri Apr 16 16:46:38 2010 +0300
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#undef G_DISABLE_ASSERT
+#undef G_LOG_DOMAIN
+
+#ifdef GLIB_COMPILATION
+#undef GLIB_COMPILATION
+#endif
+
+#include "glib.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <locale.h>
+
+
+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;
+}
+
+