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); }