Blame tests/testgdate.c

Packit Service d3d246
#undef G_DISABLE_ASSERT
Packit Service d3d246
#undef G_LOG_DOMAIN
Packit Service d3d246
Packit Service d3d246
#ifdef GLIB_COMPILATION
Packit Service d3d246
#undef GLIB_COMPILATION
Packit Service d3d246
#endif
Packit Service d3d246
Packit Service d3d246
#include "glib.h"
Packit Service d3d246
Packit Service d3d246
#include <stdio.h>
Packit Service d3d246
#include <string.h>
Packit Service d3d246
#include <locale.h>
Packit Service d3d246
#include <time.h>
Packit Service d3d246
Packit Service d3d246
gboolean failed = FALSE;
Packit Service d3d246
guint32 passed = 0;
Packit Service d3d246
guint32 notpassed = 0;
Packit Service d3d246
Packit Service d3d246
#define	TEST(m,cond)	G_STMT_START { failed = !(cond); \
Packit Service d3d246
if (failed) \
Packit Service d3d246
  { ++notpassed; \
Packit Service d3d246
    if (!m) \
Packit Service d3d246
      g_print ("\n(%s:%d) failed for: %s\n", __FILE__, __LINE__, ( # cond )); \
Packit Service d3d246
    else \
Packit Service d3d246
      g_print ("\n(%s:%d) failed for: %s: (%s)\n", __FILE__, __LINE__, ( # cond ), (gchar*)m); \
Packit Service d3d246
  } \
Packit Service d3d246
else \
Packit Service d3d246
  ++passed;    \
Packit Service d3d246
  if ((passed+notpassed) % 10000 == 0) g_print ("."); fflush (stdout); \
Packit Service d3d246
} G_STMT_END
Packit Service d3d246
Packit Service d3d246
static void
Packit Service d3d246
g_date_debug_print (GDate* d)
Packit Service d3d246
{
Packit Service d3d246
  if (!d) g_print("NULL!\n");
Packit Service d3d246
  else 
Packit Service d3d246
    g_print("julian: %u (%s) DMY: %u %u %u (%s)\n",
Packit Service d3d246
	    d->julian_days, 
Packit Service d3d246
	    d->julian ? "valid" : "invalid",
Packit Service d3d246
	    d->day,
Packit Service d3d246
	    d->month,
Packit Service d3d246
	    d->year,
Packit Service d3d246
	    d->dmy ? "valid" : "invalid");
Packit Service d3d246
  
Packit Service d3d246
  fflush(stdout);
Packit Service d3d246
}
Packit Service d3d246
Packit Service d3d246
int main(int argc, char** argv)
Packit Service d3d246
{
Packit Service d3d246
  GDate* d;
Packit Service d3d246
  guint32 j;
Packit Service d3d246
  GDateMonth m;
Packit Service d3d246
  GDateYear y, prev_y;
Packit Service d3d246
  GDateDay day;
Packit Service d3d246
  gchar buf[101];
Packit Service d3d246
  gchar* loc;
Packit Service d3d246
  /* Try to get all the leap year cases. */
Packit Service d3d246
  GDateYear check_years[] = { 
Packit Service d3d246
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
Packit Service d3d246
    11, 12, 13, 14, 98, 99, 100, 101, 102, 103, 397, 
Packit Service d3d246
    398, 399, 400, 401, 402, 403, 404, 405, 406,
Packit Service d3d246
    1598, 1599, 1600, 1601, 1602, 1650, 1651,
Packit Service d3d246
    1897, 1898, 1899, 1900, 1901, 1902, 1903, 
Packit Service d3d246
    1961, 1962, 1963, 1964, 1965, 1967,
Packit Service d3d246
    1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976,
Packit Service d3d246
    1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 
Packit Service d3d246
    1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 
Packit Service d3d246
    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 
Packit Service d3d246
    2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
Packit Service d3d246
    3000, 3001, 3002, 3998, 3999, 4000, 4001, 4002, 4003
Packit Service d3d246
  };
Packit Service d3d246
  guint n_check_years = sizeof(check_years)/sizeof(GDateYear);
Packit Service d3d246
  guint i, k;
Packit Service d3d246
  gboolean discontinuity;
Packit Service d3d246
Packit Service d3d246
  g_print("checking GDate...");
Packit Service d3d246
  
Packit Service d3d246
  TEST("sizeof(GDate) is not more than 8 bytes on this platform", sizeof(GDate) < 9);
Packit Service d3d246
Packit Service d3d246
  d = g_date_new();
Packit Service d3d246
Packit Service d3d246
  TEST("Empty constructor produces invalid date", !g_date_valid(d));
Packit Service d3d246
Packit Service d3d246
  g_date_free(d);
Packit Service d3d246
Packit Service d3d246
  d = g_date_new_dmy(1,1,1);
Packit Service d3d246
Packit Service d3d246
  TEST("January 1, Year 1 created and valid", g_date_valid(d));
Packit Service d3d246
Packit Service d3d246
  j = g_date_get_julian(d);
Packit Service d3d246
  
Packit Service d3d246
  TEST("January 1, Year 1 is Julian date 1", j == 1);
Packit Service d3d246
Packit Service d3d246
  TEST("Returned month is January", g_date_get_month(d) == G_DATE_JANUARY);
Packit Service d3d246
  TEST("Returned day is 1", g_date_get_day(d) == 1);
Packit Service d3d246
  TEST("Returned year is 1", g_date_get_year(d) == 1);
Packit Service d3d246
Packit Service d3d246
  TEST("Bad month is invalid", !g_date_valid_month(G_DATE_BAD_MONTH));
Packit Service d3d246
  TEST("Month 13 is invalid",  !g_date_valid_month(13));
Packit Service d3d246
  TEST("Bad day is invalid",   !g_date_valid_day(G_DATE_BAD_DAY));
Packit Service d3d246
  TEST("Day 32 is invalid",     !g_date_valid_day(32));
Packit Service d3d246
  TEST("Bad year is invalid",  !g_date_valid_year(G_DATE_BAD_YEAR));
Packit Service d3d246
  TEST("Bad julian is invalid", !g_date_valid_julian(G_DATE_BAD_JULIAN));
Packit Service d3d246
  TEST("Bad weekday is invalid", !g_date_valid_weekday(G_DATE_BAD_WEEKDAY));
Packit Service d3d246
  TEST("Year 2000 is a leap year", g_date_is_leap_year(2000));
Packit Service d3d246
  TEST("Year 1999 is not a leap year", !g_date_is_leap_year(1999));
Packit Service d3d246
  TEST("Year 1996 is a leap year", g_date_is_leap_year(1996));
Packit Service d3d246
  TEST("Year 1600 is a leap year", g_date_is_leap_year(1600));
Packit Service d3d246
  TEST("Year 2100 is not a leap year", !g_date_is_leap_year(2100));
Packit Service d3d246
  TEST("Year 1800 is not a leap year", !g_date_is_leap_year(1800));
Packit Service d3d246
Packit Service d3d246
  g_date_free(d);
Packit Service d3d246
  
Packit Service d3d246
  loc = setlocale(LC_ALL,"");
Packit Service d3d246
  if (loc) 
Packit Service d3d246
    g_print("\nLocale set to %s\n", loc);
Packit Service d3d246
  else 
Packit Service d3d246
    g_print("\nLocale unchanged\n");
Packit Service d3d246
Packit Service d3d246
  d = g_date_new();
Packit Service d3d246
  g_date_set_time(d, time(NULL));
Packit Service d3d246
  TEST("Today is valid", g_date_valid(d));
Packit Service d3d246
Packit Service d3d246
  g_date_strftime(buf,100,"Today is a %A, %x\n", d);
Packit Service d3d246
  g_print("%s", buf);
Packit Service d3d246
Packit Service d3d246
  g_date_set_time(d, 1);
Packit Service d3d246
  TEST("Beginning of Unix epoch is valid", g_date_valid(d));
Packit Service d3d246
Packit Service d3d246
  g_date_strftime(buf,100,"1 second into the Unix epoch it was a %A, in the month of %B, %x\n", d);
Packit Service d3d246
  g_print("%s", buf);
Packit Service d3d246
Packit Service d3d246
  g_date_set_julian(d, 1);
Packit Service d3d246
  TEST("GDate's \"Julian\" epoch's first day is valid", g_date_valid(d));
Packit Service d3d246
Packit Service d3d246
  g_date_strftime(buf,100,"Our \"Julian\" epoch begins on a %A, in the month of %B, %x\n",
Packit Service d3d246
		  d);
Packit Service d3d246
  g_print("%s", buf);
Packit Service d3d246
Packit Service d3d246
  g_date_set_dmy(d, 10, 1, 2000);
Packit Service d3d246
Packit Service d3d246
  g_date_strftime(buf,100,"%x", d);
Packit Service d3d246
Packit Service d3d246
  g_date_set_parse(d, buf);
Packit Service d3d246
  /* Note: this test will hopefully work, but no promises. */
Packit Service d3d246
  TEST("Successfully parsed a %x-formatted string", 
Packit Service d3d246
       g_date_valid(d) && 
Packit Service d3d246
       g_date_get_month(d) == 1 && 
Packit Service d3d246
       g_date_get_day(d) == 10 && 
Packit Service d3d246
       g_date_get_year(d) == 2000);
Packit Service d3d246
  if (failed)
Packit Service d3d246
    g_date_debug_print(d);
Packit Service d3d246
  
Packit Service d3d246
  g_date_free(d);
Packit Service d3d246
Packit Service d3d246
  j = G_DATE_BAD_JULIAN;
Packit Service d3d246
Packit Service d3d246
  i = 0;
Packit Service d3d246
  discontinuity = TRUE;
Packit Service d3d246
  y      = check_years[0];
Packit Service d3d246
  prev_y = G_DATE_BAD_YEAR;
Packit Service d3d246
g_print ("testing %d years\n", n_check_years);
Packit Service d3d246
  while (i < n_check_years)
Packit Service d3d246
    {
Packit Service d3d246
      guint32 first_day_of_year = G_DATE_BAD_JULIAN;
Packit Service d3d246
      guint16 days_in_year = g_date_is_leap_year(y) ? 366 : 365;
Packit Service d3d246
      guint   sunday_week_of_year = 0;
Packit Service d3d246
      guint   sunday_weeks_in_year = g_date_get_sunday_weeks_in_year(y);
Packit Service d3d246
      guint   monday_week_of_year = 0;
Packit Service d3d246
      guint   monday_weeks_in_year = g_date_get_monday_weeks_in_year(y);
Packit Service d3d246
      guint   iso8601_week_of_year = 0;
Packit Service d3d246
Packit Service d3d246
      if (discontinuity)
Packit Service d3d246
        g_print(" (Break in sequence of requested years to check)\n");
Packit Service d3d246
Packit Service d3d246
      g_print("Checking year %u", y);
Packit Service d3d246
Packit Service d3d246
      TEST("Year is valid", g_date_valid_year(y));
Packit Service d3d246
Packit Service d3d246
      TEST("Number of Sunday weeks in year is 52 or 53", 
Packit Service d3d246
	   sunday_weeks_in_year == 52 || sunday_weeks_in_year == 53);
Packit Service d3d246
      
Packit Service d3d246
      TEST("Number of Monday weeks in year is 52 or 53", 
Packit Service d3d246
	   monday_weeks_in_year == 52 || monday_weeks_in_year == 53);
Packit Service d3d246
	   
Packit Service d3d246
      m = 1;
Packit Service d3d246
      while (m < 13) 
Packit Service d3d246
	{
Packit Service d3d246
	  guint8 dim = g_date_get_days_in_month(m,y);
Packit Service d3d246
	  GDate days[31];         /* This is the fast way, no allocation */
Packit Service d3d246
Packit Service d3d246
	  TEST("Sensible number of days in month", (dim > 0 && dim < 32));
Packit Service d3d246
Packit Service d3d246
	  TEST("Month between 1 and 12 is valid", g_date_valid_month(m));
Packit Service d3d246
Packit Service d3d246
	  day = 1;
Packit Service d3d246
Packit Service d3d246
	  g_date_clear(days, 31);
Packit Service d3d246
Packit Service d3d246
	  while (day <= dim) 
Packit Service d3d246
	    {
Packit Service d3d246
              GDate tmp;
Packit Service d3d246
Packit Service d3d246
	      TEST("DMY triplet is valid", g_date_valid_dmy(day,m,y));
Packit Service d3d246
Packit Service d3d246
	      /* Create GDate with triplet */
Packit Service d3d246
	      
Packit Service d3d246
	      d = &days[day-1];
Packit Service d3d246
Packit Service d3d246
	      TEST("Cleared day is invalid", !g_date_valid(d));
Packit Service d3d246
Packit Service d3d246
	      g_date_set_dmy(d,day,m,y);
Packit Service d3d246
Packit Service d3d246
	      TEST("Set day is valid", g_date_valid(d));
Packit Service d3d246
Packit Service d3d246
	      if (m == G_DATE_JANUARY && day == 1) 
Packit Service d3d246
		{
Packit Service d3d246
		  first_day_of_year = g_date_get_julian(d);
Packit Service d3d246
		}
Packit Service d3d246
Packit Service d3d246
	      g_assert(first_day_of_year != G_DATE_BAD_JULIAN);
Packit Service d3d246
Packit Service d3d246
	      TEST("Date with DMY triplet is valid", g_date_valid(d));
Packit Service d3d246
	      TEST("Month accessor works", g_date_get_month(d) == m);
Packit Service d3d246
	      TEST("Year accessor works", g_date_get_year(d) == y);
Packit Service d3d246
	      TEST("Day of month accessor works", g_date_get_day(d) == day);
Packit Service d3d246
Packit Service d3d246
	      TEST("Day of year is consistent with Julian dates",
Packit Service d3d246
		   ((g_date_get_julian(d) + 1 - first_day_of_year) ==
Packit Service d3d246
		    (g_date_get_day_of_year(d))));
Packit Service d3d246
Packit Service d3d246
	      if (failed) 
Packit Service d3d246
		{
Packit Service d3d246
		  g_print("first day: %u this day: %u day of year: %u\n", 
Packit Service d3d246
			  first_day_of_year, 
Packit Service d3d246
			  g_date_get_julian(d),
Packit Service d3d246
			  g_date_get_day_of_year(d));
Packit Service d3d246
		}
Packit Service d3d246
	      
Packit Service d3d246
	      if (m == G_DATE_DECEMBER && day == 31) 
Packit Service d3d246
		{
Packit Service d3d246
		  TEST("Last day of year equals number of days in year", 
Packit Service d3d246
		       g_date_get_day_of_year(d) == days_in_year);
Packit Service d3d246
		  if (failed) 
Packit Service d3d246
		    {
Packit Service d3d246
		      g_print("last day: %u days in year: %u\n", 
Packit Service d3d246
			      g_date_get_day_of_year(d), days_in_year);
Packit Service d3d246
		    }
Packit Service d3d246
		}
Packit Service d3d246
Packit Service d3d246
	      TEST("Day of year is not more than number of days in the year",
Packit Service d3d246
		   g_date_get_day_of_year(d) <= days_in_year);
Packit Service d3d246
Packit Service d3d246
	      TEST("Monday week of year is not more than number of weeks in the year",
Packit Service d3d246
		   g_date_get_monday_week_of_year(d) <= monday_weeks_in_year);
Packit Service d3d246
	      if (failed)
Packit Service d3d246
		{
Packit Service d3d246
		  g_print("Weeks in year: %u\n", monday_weeks_in_year);
Packit Service d3d246
		  g_date_debug_print(d);
Packit Service d3d246
		}
Packit Service d3d246
	      TEST("Monday week of year is >= than last week of year",
Packit Service d3d246
		   g_date_get_monday_week_of_year(d) >= monday_week_of_year);
Packit Service d3d246
Packit Service d3d246
	      if (g_date_get_weekday(d) == G_DATE_MONDAY) 
Packit Service d3d246
		{
Packit Service d3d246
		  
Packit Service d3d246
		  TEST("Monday week of year on Monday 1 more than previous day's week of year",
Packit Service d3d246
		       (g_date_get_monday_week_of_year(d) - monday_week_of_year) == 1);
Packit Service d3d246
		  if ((m == G_DATE_JANUARY && day <= 4) ||
Packit Service d3d246
		      (m == G_DATE_DECEMBER && day >= 29)) {
Packit Service d3d246
		    TEST("ISO 8601 week of year on Monday Dec 29 - Jan 4 is 1",
Packit Service d3d246
			 (g_date_get_iso8601_week_of_year(d) == 1));
Packit Service d3d246
		  } else {
Packit Service d3d246
		    TEST("ISO 8601 week of year on Monday 1 more than previous day's week of year",
Packit Service d3d246
			 (g_date_get_iso8601_week_of_year(d) - iso8601_week_of_year) == 1);
Packit Service d3d246
		  }
Packit Service d3d246
		}
Packit Service d3d246
	      else 
Packit Service d3d246
		{
Packit Service d3d246
		  TEST("Monday week of year on non-Monday 0 more than previous day's week of year",
Packit Service d3d246
		       (g_date_get_monday_week_of_year(d) - monday_week_of_year) == 0);
Packit Service d3d246
		  if (!(day == 1 && m == G_DATE_JANUARY)) {
Packit Service d3d246
		    TEST("ISO 8601 week of year on non-Monday 0 more than previous day's week of year (",
Packit Service d3d246
			 (g_date_get_iso8601_week_of_year(d) - iso8601_week_of_year) == 0);
Packit Service d3d246
		  }
Packit Service d3d246
		}
Packit Service d3d246
Packit Service d3d246
Packit Service d3d246
	      monday_week_of_year = g_date_get_monday_week_of_year(d);
Packit Service d3d246
	      iso8601_week_of_year = g_date_get_iso8601_week_of_year(d);
Packit Service d3d246
Packit Service d3d246
Packit Service d3d246
	      TEST("Sunday week of year is not more than number of weeks in the year",
Packit Service d3d246
		   g_date_get_sunday_week_of_year(d) <= sunday_weeks_in_year);
Packit Service d3d246
	      if (failed)
Packit Service d3d246
		{
Packit Service d3d246
		  g_date_debug_print(d);
Packit Service d3d246
		}
Packit Service d3d246
	      TEST("Sunday week of year is >= than last week of year",
Packit Service d3d246
		   g_date_get_sunday_week_of_year(d) >= sunday_week_of_year);
Packit Service d3d246
Packit Service d3d246
	      if (g_date_get_weekday(d) == G_DATE_SUNDAY) 
Packit Service d3d246
		{
Packit Service d3d246
		  TEST("Sunday week of year on Sunday 1 more than previous day's week of year",
Packit Service d3d246
		       (g_date_get_sunday_week_of_year(d) - sunday_week_of_year) == 1);
Packit Service d3d246
		}
Packit Service d3d246
	      else 
Packit Service d3d246
		{
Packit Service d3d246
		  TEST("Sunday week of year on non-Sunday 0 more than previous day's week of year",
Packit Service d3d246
		       (g_date_get_sunday_week_of_year(d) - sunday_week_of_year) == 0);
Packit Service d3d246
		}
Packit Service d3d246
Packit Service d3d246
	      sunday_week_of_year = g_date_get_sunday_week_of_year(d);
Packit Service d3d246
Packit Service d3d246
	      TEST("Date is equal to itself",
Packit Service d3d246
		   g_date_compare(d,d) == 0);
Packit Service d3d246
Packit Service d3d246
Packit Service d3d246
	      /*************** Increments ***********/
Packit Service d3d246
Packit Service d3d246
              k = 1;
Packit Service d3d246
              while (k < 402) /* Need to get 400 year increments in */ 
Packit Service d3d246
                {
Packit Service d3d246
	      
Packit Service d3d246
                  /***** Days ******/
Packit Service d3d246
                  tmp = *d;
Packit Service d3d246
                  g_date_add_days(d, k);
Packit Service d3d246
Packit Service d3d246
                  TEST("Adding days gives a value greater than previous",
Packit Service d3d246
                       g_date_compare(d, &tmp) > 0);
Packit Service d3d246
Packit Service d3d246
                  g_date_subtract_days(d, k);
Packit Service d3d246
                  TEST("Forward days then backward days returns us to current day",
Packit Service d3d246
                       g_date_get_day(d) == day);
Packit Service d3d246
Packit Service d3d246
                  if (failed) 
Packit Service d3d246
                    {
Packit Service d3d246
                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                      g_date_debug_print(d);
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
                  TEST("Forward days then backward days returns us to current month",
Packit Service d3d246
                       g_date_get_month(d) == m);
Packit Service d3d246
Packit Service d3d246
                  if (failed) 
Packit Service d3d246
                    {
Packit Service d3d246
                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                      g_date_debug_print(d);
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
                  TEST("Forward days then backward days returns us to current year",
Packit Service d3d246
                       g_date_get_year(d) == y);
Packit Service d3d246
Packit Service d3d246
                  if (failed) 
Packit Service d3d246
                    {
Packit Service d3d246
                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                      g_date_debug_print(d);
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
                  /******* Months ********/
Packit Service d3d246
Packit Service d3d246
                  tmp = *d;
Packit Service d3d246
                  g_date_add_months(d, k);
Packit Service d3d246
                  TEST("Adding months gives a larger value",
Packit Service d3d246
                       g_date_compare(d, &tmp) > 0);
Packit Service d3d246
                  g_date_subtract_months(d, k);
Packit Service d3d246
Packit Service d3d246
                  TEST("Forward months then backward months returns us to current month",
Packit Service d3d246
                       g_date_get_month(d) == m);
Packit Service d3d246
Packit Service d3d246
                  if (failed) 
Packit Service d3d246
                    {
Packit Service d3d246
                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                      g_date_debug_print(d);
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
                  TEST("Forward months then backward months returns us to current year",
Packit Service d3d246
                       g_date_get_year(d) == y);
Packit Service d3d246
Packit Service d3d246
                  if (failed) 
Packit Service d3d246
                    {
Packit Service d3d246
                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                      g_date_debug_print(d);
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
		  
Packit Service d3d246
                  if (day < 29) 
Packit Service d3d246
                    {
Packit Service d3d246
                      /* Day should be unchanged */
Packit Service d3d246
		      
Packit Service d3d246
                      TEST("Forward months then backward months returns us to current day",
Packit Service d3d246
                           g_date_get_day(d) == day);
Packit Service d3d246
		      
Packit Service d3d246
                      if (failed) 
Packit Service d3d246
                        {
Packit Service d3d246
                          g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                          g_date_debug_print(d);
Packit Service d3d246
                        }
Packit Service d3d246
                    }
Packit Service d3d246
                  else 
Packit Service d3d246
                    {
Packit Service d3d246
                      /* reset the day for later tests */
Packit Service d3d246
                      g_date_set_day(d, day);
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
                  /******* Years ********/
Packit Service d3d246
Packit Service d3d246
                  tmp = *d;
Packit Service d3d246
                  g_date_add_years(d, k);
Packit Service d3d246
Packit Service d3d246
                  TEST("Adding years gives a larger value",
Packit Service d3d246
                       g_date_compare(d,&tmp) > 0);
Packit Service d3d246
		      
Packit Service d3d246
                  g_date_subtract_years(d, k);
Packit Service d3d246
Packit Service d3d246
                  TEST("Forward years then backward years returns us to current month",
Packit Service d3d246
                       g_date_get_month(d) == m);
Packit Service d3d246
Packit Service d3d246
                  if (failed) 
Packit Service d3d246
                    {
Packit Service d3d246
                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                      g_date_debug_print(d);
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
                  TEST("Forward years then backward years returns us to current year",
Packit Service d3d246
                       g_date_get_year(d) == y);
Packit Service d3d246
Packit Service d3d246
                  if (failed) 
Packit Service d3d246
                    {
Packit Service d3d246
                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                      g_date_debug_print(d);
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
                  if (m != 2 && day != 29) 
Packit Service d3d246
                    {
Packit Service d3d246
                      TEST("Forward years then backward years returns us to current day",
Packit Service d3d246
                           g_date_get_day(d) == day);
Packit Service d3d246
		      
Packit Service d3d246
                      if (failed) 
Packit Service d3d246
                        {
Packit Service d3d246
                          g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
Packit Service d3d246
                          g_date_debug_print(d);
Packit Service d3d246
                        }
Packit Service d3d246
                    }
Packit Service d3d246
                  else 
Packit Service d3d246
                    {
Packit Service d3d246
                      g_date_set_day(d, day); /* reset */
Packit Service d3d246
                    }
Packit Service d3d246
Packit Service d3d246
                  k += 10;
Packit Service d3d246
                }
Packit Service d3d246
Packit Service d3d246
	      /*****  increment test relative to our local Julian count */
Packit Service d3d246
Packit Service d3d246
              if (!discontinuity) {
Packit Service d3d246
Packit Service d3d246
                /* We can only run sequence tests between sequential years */
Packit Service d3d246
                
Packit Service d3d246
                TEST("Julians are sequential with increment 1",
Packit Service d3d246
                     j+1 == g_date_get_julian(d));
Packit Service d3d246
                if (failed) 
Packit Service d3d246
                  {
Packit Service d3d246
                    g_print("Out of sequence, prev: %u expected: %u got: %u\n",
Packit Service d3d246
                            j, j+1, g_date_get_julian(d));
Packit Service d3d246
                  }
Packit Service d3d246
Packit Service d3d246
                g_date_add_days(d,1);
Packit Service d3d246
                TEST("Next day has julian 1 higher",
Packit Service d3d246
                     g_date_get_julian(d) == j + 2);
Packit Service d3d246
                g_date_subtract_days(d, 1);
Packit Service d3d246
                
Packit Service d3d246
                if (j != G_DATE_BAD_JULIAN) 
Packit Service d3d246
                  {
Packit Service d3d246
                    g_date_subtract_days(d, 1);
Packit Service d3d246
                    
Packit Service d3d246
                    TEST("Previous day has julian 1 lower",
Packit Service d3d246
                         g_date_get_julian(d) == j);
Packit Service d3d246
                    
Packit Service d3d246
                    g_date_add_days(d, 1); /* back to original */
Packit Service d3d246
                  }
Packit Service d3d246
              }    
Packit Service d3d246
              discontinuity = FALSE; /* goes away now */            
Packit Service d3d246
Packit Service d3d246
              fflush(stdout);
Packit Service d3d246
              fflush(stderr);
Packit Service d3d246
Packit Service d3d246
	      j = g_date_get_julian(d); /* inc current julian */
Packit Service d3d246
Packit Service d3d246
	      ++day;
Packit Service d3d246
	    } 
Packit Service d3d246
	  ++m;
Packit Service d3d246
	}
Packit Service d3d246
      g_print(" done\n");
Packit Service d3d246
      ++i;
Packit Service d3d246
      if (i == n_check_years)
Packit Service d3d246
        break;
Packit Service d3d246
      prev_y = y;
Packit Service d3d246
      y = check_years[i];
Packit Service d3d246
      if (prev_y == G_DATE_BAD_YEAR || 
Packit Service d3d246
          (prev_y + 1) != y) discontinuity = TRUE;
Packit Service d3d246
    }
Packit Service d3d246
  
Packit Service d3d246
  
Packit Service d3d246
  g_print("\n%u tests passed, %u failed\n",passed, notpassed);
Packit Service d3d246
Packit Service d3d246
  return 0;
Packit Service d3d246
}
Packit Service d3d246
Packit Service d3d246