Blob Blame History Raw
# -*- Autotest -*-

AT_BANNER([ISO_date])

## --------------- ##
## iso_date_string ##
## --------------- ##

AT_TESTFUN([iso_date_string],
[[#include "internal_libreport.h"
#include <assert.h>
#include <string.h>
#include <stdio.h>

bool string_cmp(const char *orig, const char *other)
{
    if (strcmp(orig, other) == 0)
        return true;

    printf("'%s' != '%s'\n", orig, other);
    return false;
}

int main(void)
{
    g_verbose=3;

    setenv("TZ", "", 1);
    setenv("LC_ALL", "C", 1);

    time_t local[3];

    time(&local[0]);
    char *date = xstrdup(iso_date_string(NULL));

    local[1] = local[0] + 1;
    local[2] = local[0] + 2;
    size_t i = 0;
    for (; ARRAY_SIZE(local); ++i)
    {
        if (string_cmp(date, iso_date_string(local + i)))
            break;
    }
    assert((i != ARRAY_SIZE(local)) || !"None of attempts hit result date");
    free(date);

    time_t y2k = 946684800;
    assert(string_cmp("2000-01-01-00:00:00", iso_date_string(&y2k)));

    return 0;
}

]])

## --------------------- ##
## iso_date_string_parse ##
## --------------------- ##

AT_TESTFUN([parse_numbers],
[[#include "internal_libreport.h"
#include <assert.h>
#include <string.h>
#include <stdio.h>

int main(void)
{
    g_verbose=3;

    setenv("TZ", "", 1);
    setenv("LC_ALL", "C", 1);

    {
        time_t result = 0;
        assert(iso_date_string_parse("", &result) == -EINVAL);
    }

    {
        time_t result = 0;
        assert(iso_date_string_parse("foo", &result) == -EINVAL);
    }

    {
        time_t result = 0;
        assert(iso_date_string_parse("1969-12-31-23:59:59", &result) == -EINVAL);
    }

    {
        time_t result = 0;
        assert(iso_date_string_parse("1970-01-01-00:00:00", &result) == 0);
        assert(result == 0);
    }

    {
        time_t result = 0;
        assert(iso_date_string_parse("2000-01-01-00:00:00", &result) == 0);
        assert(result == 946684800 || !"Y2k");
    }

    {
        time_t result = 0;
        assert(iso_date_string_parse("2000-01-01-00:00:00fooo", &result) == -EINVAL);
    }

    return 0;
}
]])