Blame tests/testgdate.c

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