mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 07:20:11 +00:00
2e2494d6db
Add a modified version of src/util/test_ktime to the new test suite as an example of how to write a test program with the new harness. Change-Id: Ifbceff1905f9f0dd686c2a2d2edc2f8796e7918f Reviewed-on: http://gerrit.openafs.org/2063 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
87 lines
2.6 KiB
C
87 lines
2.6 KiB
C
/*
|
|
* Copyright 2000, International Business Machines Corporation and others.
|
|
* All Rights Reserved.
|
|
*
|
|
* This software has been released under the terms of the IBM Public
|
|
* License. For details, see the LICENSE file in the top-level source
|
|
* directory or online at http://www.openafs.org/dl/license10.html
|
|
*/
|
|
|
|
#include <afsconfig.h>
|
|
#include <afs/param.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <afs/ktime.h>
|
|
#include <tap/basic.h>
|
|
|
|
static struct testTime {
|
|
char *time;
|
|
long code;
|
|
long sec;
|
|
} testTimes[] = {
|
|
{ "now", 1, 0 }, /* lookup current time */
|
|
{ "never", 0, 0xffffffff },
|
|
{ "12/3/89", 0, 628664400 },
|
|
{ "1/1/1", 0, 978325200 },
|
|
{ "1/0/80", -2, 0 },
|
|
{ "13/1/80", -2, 0 },
|
|
{ "0/1/80", -2, 0 },
|
|
{ "1/32/80", -2, 0 },
|
|
{ "2/30/80", 0, 320734799 },
|
|
/*
|
|
* Oh, well: note that 2/30 is bigger than any real date in February, and
|
|
* since this algorithm approaches the correct value from below, this is
|
|
* the closest it can come.
|
|
*/
|
|
{ "3/1/80", 0, 320734800 },
|
|
{ "3/1/80 0:00", 0, 320734800 },
|
|
{ "2/30/80 24:00", -2, 0 },
|
|
{ "2/30/80 23:60", -2, 0 },
|
|
{ "22/22/22", -2, 0 },
|
|
{ "12/31/69 19:07", 0, 420 },
|
|
{ "12/31/99 23:59", 0, 946702740 },
|
|
{ "12/31/99 23:59:59", 0, 946702799 },
|
|
{ "23:12", -1, 0 },
|
|
{ "22/12", -1, 0 },
|
|
{ "22/22/22 12", -1, 0 },
|
|
{ "12/31/199 23:59:59", -2, 0 },
|
|
{ "12/31/1888", -2, 0 },
|
|
{ "-13/-44/22 -15:77", -2, 0 },
|
|
{ "4/14/24", 0, 1713070800 },
|
|
{ "4/14/2024", 0, 1713070800 },
|
|
{ "4/14/68", 0, 0x7fffffff }, /* legal but w/sign bit on */
|
|
{ "4/14/69", 0, 0 },
|
|
{ NULL, 0, 0 }
|
|
};
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
long code, temp;
|
|
int errors;
|
|
time_t t;
|
|
struct testTime *tt;
|
|
|
|
plan((sizeof(testTimes) / sizeof(testTimes[0]) - 1) * 2);
|
|
|
|
/* should do timezone and daylight savings time correction so this program
|
|
* work in other than EST */
|
|
putenv("TZ=EST");
|
|
|
|
errors = 0;
|
|
for (tt = testTimes; tt->time; tt++) {
|
|
t = 0;
|
|
code = ktime_DateToLong(tt->time, &t);
|
|
if (tt->code == 1) {
|
|
is_int(0, code, "ktime_DateToLong return for %s", tt->time);
|
|
ok((time(0) - t <= 1), "ktime_DateToLong result for %s", tt->time);
|
|
} else {
|
|
is_int(tt->code, code, "ktime_DateToLong return for %s", tt->time);
|
|
is_int(tt->sec, t, "ktime_DateToLong result for %s", tt->time);
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|