/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at http://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "test.h"

#include "memdebug.h"

static const char * const dates[]={
  "Sun, 06 Nov 1994 08:49:37 GMT",
  "Sunday, 06-Nov-94 08:49:37 GMT",
  "Sun Nov  6 08:49:37 1994",
  "06 Nov 1994 08:49:37 GMT",
  "06-Nov-94 08:49:37 GMT",
  "Nov  6 08:49:37 1994",
  "06 Nov 1994 08:49:37",
  "06-Nov-94 08:49:37",
  "1994 Nov 6 08:49:37",
  "GMT 08:49:37 06-Nov-94 Sunday",
  "94 6 Nov 08:49:37",
  "1994 Nov 6",
  "06-Nov-94",
  "Sun Nov 6 94",
  "1994.Nov.6",
  "Sun/Nov/6/94/GMT",
  "Sun, 06 Nov 1994 08:49:37 CET",
  "06 Nov 1994 08:49:37 EST",
  "Sun, 12 Sep 2004 15:05:58 -0700",
  "Sat, 11 Sep 2004 21:32:11 +0200",
  "20040912 15:05:58 -0700",
  "20040911 +0200",
  "Thu, 01-Jan-1970 00:59:59 GMT",
  "Thu, 01-Jan-1970 01:00:00 GMT",
/*  "2094 Nov 6", See ../data/test517 for details */
  "Sat, 15-Apr-17 21:01:22 GMT",
  "Thu, 19-Apr-2007 16:00:00 GMT",
  "Wed, 25 Apr 2007 21:02:13 GMT",
  "Thu, 19/Apr\\2007 16:00:00 GMT",
  "Fri, 1 Jan 2010 01:01:50 GMT",
  "Wednesday, 1-Jan-2003 00:00:00 GMT",
  ", 1-Jan-2003 00:00:00 GMT",
  " 1-Jan-2003 00:00:00 GMT",
  "1-Jan-2003 00:00:00 GMT",
  "Wed,18-Apr-07 22:50:12 GMT",
  "WillyWonka  , 18-Apr-07 22:50:12 GMT",
  "WillyWonka  , 18-Apr-07 22:50:12",
  "WillyWonka  ,  18-apr-07   22:50:12",
  "Mon, 18-Apr-1977 22:50:13 GMT",
  "Mon, 18-Apr-77 22:50:13 GMT",
  "\"Sat, 15-Apr-17\\\"21:01:22\\\"GMT\"",
  "Partyday, 18- April-07 22:50:12",
  "Partyday, 18 - Apri-07 22:50:12",
  "Wednes, 1-Januar-2003 00:00:00 GMT",
  "Sat, 15-Apr-17 21:01:22",
  "Sat, 15-Apr-17 21:01:22 GMT-2",
  "Sat, 15-Apr-17 21:01:22 GMT BLAH",
  "Sat, 15-Apr-17 21:01:22 GMT-0400",
  "Sat, 15-Apr-17 21:01:22 GMT-0400 (EDT)",
  "Sat, 15-Apr-17 21:01:22 DST",
  "Sat, 15-Apr-17 21:01:22 -0400",
  "Sat, 15-Apr-17 21:01:22 (hello there)",
  "Sat, 15-Apr-17 21:01:22 11:22:33",
  "Sat, 15-Apr-17 ::00 21:01:22",
  "Sat, 15-Apr-17 boink:z 21:01:22",
  "Sat, 15-Apr-17 91:22:33 21:01:22",
  "Thu Apr 18 22:50:12 2007 GMT",
  "22:50:12 Thu Apr 18 2007 GMT",
  "Thu 22:50:12 Apr 18 2007 GMT",
  "Thu Apr 22:50:12 18 2007 GMT",
  "Thu Apr 18 22:50:12 2007 GMT",
  "Thu Apr 18 2007 22:50:12 GMT",
  "Thu Apr 18 2007 GMT 22:50:12",
  "Sat, 15-Apr-17 21:01:22 GMT",
  "15-Sat, Apr-17 21:01:22 GMT",
  "15-Sat, Apr 21:01:22 GMT 17",
  "15-Sat, Apr 21:01:22 GMT 2017",
  "15 Apr 21:01:22 2017",
  "15 17 Apr 21:01:22",
  "Apr 15 17 21:01:22",
  "Apr 15 21:01:22 17",
  "2017 April 15 21:01:22",
  "15 April 2017 21:01:22",
  "98 April 17 21:01:22",
  "Thu, 012-Aug-2008 20:49:07 GMT",
#if 0
  /* leaving out these strings since they differ between 32 and 64 bit
     archs and the test suite has no good way to support two different outputs
     like that */
  "Thu, 12-Aug-31841 20:49:07 GMT",
  "Thu, 12-Aug-9999999999 20:49:07 GMT",
#endif
  "Thu, 999999999999-Aug-2007 20:49:07 GMT",
  "Thu, 12-Aug-2007 20:61:99999999999 GMT",
  "IAintNoDateFool",
  "Thu Apr 18 22:50 2007 GMT", /* without seconds */
  "20110623 12:34:56",
  "20110632 12:34:56",
  "20110623 56:34:56",
  "20111323 12:34:56",
  "20110623 12:34:79",
  "Wed, 31 Dec 2008 23:59:60 GMT", /* leap second */
  NULL
};

int test(char *URL)
{
  int i;

  (void)URL; /* not used */

  for(i=0; dates[i]; i++) {
    printf("%d: %s => %ld\n", i, dates[i], (long)curl_getdate(dates[i], NULL));
  }

  return 0;
}
