static void
st_collection_page_items_item_date_min(void)
{
   check_min_arg_count(1);

   if (params_min_check(1))
     {
        check_arg_count(3);

        current_item->spec.d.min.y = parse_int_range(0, 1900, 10000);
        current_item->spec.d.min.m = parse_int_range(1, 1, 12);
        current_item->spec.d.min.d = parse_int_range(2, 1, 31);
     }
   else
     {
        const char *date = parse_str(0);
        if (!strcasecmp(date, "today"))
          {
             time_t t = time(NULL);
             struct tm *lt = localtime(&t);

             current_item->spec.d.min.y = lt->tm_year + 1900;
             current_item->spec.d.min.m = lt->tm_mon + 1;
             current_item->spec.d.min.d = lt->tm_mday;
          }
        free((void *)date);
     }
}
END_TEST

START_TEST(test_parse_int_range)
{
    string_arr* a = malloc(sizeof(string_arr));
    char *st[] = {"1", "2", "...", "5"};
    a->data = st;
    a->len = sizeof(st)/sizeof(char*);

    int_arr* r = parse_int_range(a);
    
    double correct[] = {1, 2, 3, 4, 5};
        
    int i;
    
    for (i = 0; i < r->len; ++i) {
    	fail_unless(r->data[i] == correct[i], NULL);
    }

    string_arr* b = malloc(sizeof(string_arr));
    char *st1[] = {"1", "2", "5"};
    b->data = st1;
    b->len = sizeof(st1)/sizeof(char*);
    
    string_arr* c = malloc(sizeof(string_arr));
    char *st2[] = {"...", "2", "5"};
    c->data = st2;
    c->len = sizeof(st1)/sizeof(char*);

    string_arr* d = malloc(sizeof(string_arr));
    char *st3[] = {"1", "2", "..."};
    d->data = st3;
    d->len = sizeof(st1)/sizeof(char*);
    
    fail_unless(parse_int_range(b) == NULL, NULL);
    fail_unless(parse_int_range(c) == NULL, NULL);
    fail_unless(parse_int_range(d) == NULL, NULL);
}