[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[LDM #QMJ-238932]: pqact dates still wrong



Harry,

I think I've fixed the function that does the data
substitution in the "pqact" utility.  It allows
dates one day in the future to one month minus
one day in the past.

I've attached a test-suite.  Can you think of any
other test cases?

Regards,
Steve Emmerson

Ticket Details
===================
Ticket ID: QMJ-238932
Department: Support LDM
Priority: Normal
Status: On Hold
int
main()
{
    char        buf[128];
    time_t      time = 0;
    struct tm   tm;
    time_t      feb28;
    time_t      feb28leap;
    time_t      feb29leap;
    time_t      mar01;
    time_t      dec31;
    time_t      jan01;

    (void)openulog("date_sub", (LOG_CONS|LOG_PID), LOG_LDM, "-");

    date_sub("(01:yyyy)-(01:mm)-(01:dd)", buf, 0);
    assert(strcmp(buf, "1970-01-01") == 0);

    tm = *gmtime(&time);
    tm.tm_mon = 1;
    tm.tm_mday = 28;
    tm.tm_sec -= timezone;
    feb28 = mktime(&tm);

    date_sub("(01:yyyy)-(01:mm)-(01:dd)", buf, feb28);
    assert(strcmp(buf, "1970-03-01") == 0);

    date_sub("(02:yyyy)-(02:mm)-(02:dd)", buf, feb28);
    assert(strcmp(buf, "1970-02-02") == 0);

    tm = *gmtime(&time);
    tm.tm_year = 72;
    tm.tm_mon = 1;
    tm.tm_mday = 29;
    tm.tm_sec -= timezone;
    feb29leap = mktime(&tm);

    date_sub("(01:yyyy)-(01:mm)-(01:dd)", buf, feb29leap);
    assert(strcmp(buf, "1972-03-01") == 0);

    date_sub("(02:yyyy)-(02:mm)-(02:dd)", buf, feb29leap);
    assert(strcmp(buf, "1972-02-02") == 0);

    date_sub("(28:yyyy)-(28:mm)-(28:dd)", buf, feb29leap);
    assert(strcmp(buf, "1972-02-28") == 0);

    tm = *gmtime(&time);
    tm.tm_year = 72;
    tm.tm_mon = 1;
    tm.tm_mday = 28;
    tm.tm_sec -= timezone;
    feb28leap = mktime(&tm);

    date_sub("(01:yyyy)-(01:mm)-(01:dd)", buf, feb28leap);
    assert(strcmp(buf, "1972-02-01") == 0);

    date_sub("(29:yyyy)-(29:mm)-(29:dd)", buf, feb28leap);
    assert(strcmp(buf, "1972-02-29") == 0);

    tm = *gmtime(&time);
    tm.tm_mon = 2;
    tm.tm_mday = 01;
    tm.tm_sec -= timezone;
    mar01 = mktime(&tm);

    date_sub("(28:yyyy)-(28:mm)-(28:dd)", buf, mar01);
    assert(strcmp(buf, "1970-02-28") == 0);

    date_sub("(27:yyyy)-(27:mm)-(27:dd)", buf, mar01);
    assert(strcmp(buf, "1970-02-27") == 0);

    tm = *gmtime(&time);
    tm.tm_mon = 11;
    tm.tm_mday = 31;
    tm.tm_sec -= timezone;
    dec31 = mktime(&tm);

    date_sub("(01:yyyy)-(01:mm)-(01:dd)", buf, dec31);
    assert(strcmp(buf, "1971-01-01") == 0);

    date_sub("(02:yyyy)-(02:mm)-(02:dd)", buf, dec31);
    assert(strcmp(buf, "1970-12-02") == 0);

    tm = *gmtime(&time);
    tm.tm_year = 71;
    tm.tm_mon = 0;
    tm.tm_mday = 1;
    tm.tm_sec -= timezone;
    jan01 = mktime(&tm);

    date_sub("(01:yyyy)-(01:mm)-(01:dd)", buf, jan01);
    assert(strcmp(buf, "1971-01-01") == 0);

    date_sub("(31:yyyy)-(31:mm)-(31:dd)", buf, jan01);
    assert(strcmp(buf, "1970-12-31") == 0);
}