137 lines
3.3 KiB
C
137 lines
3.3 KiB
C
|
|
#include <hawk-utl.h>
|
|
#include <stdio.h>
|
|
#include "tap.h"
|
|
|
|
|
|
struct
|
|
{
|
|
hawk_ntime_sec_t s1; /* input x */
|
|
hawk_ntime_nsec_t ns1;
|
|
|
|
hawk_ntime_sec_t s2; /* input y */
|
|
hawk_ntime_nsec_t ns2;
|
|
|
|
hawk_ntime_sec_t add_s; /* expected z after addition */
|
|
hawk_ntime_nsec_t add_ns;
|
|
|
|
hawk_ntime_sec_t sub_s; /* expected z after subtraction */
|
|
hawk_ntime_nsec_t sub_ns;
|
|
} tab[] =
|
|
{
|
|
/* 0 */
|
|
{ 12345678, HAWK_NSECS_PER_SEC - 1,
|
|
0, 10,
|
|
12345679, 9,
|
|
12345678, HAWK_NSECS_PER_SEC - 11 },
|
|
|
|
{ 0, 0,
|
|
12345678, 10,
|
|
12345678, 10,
|
|
-12345679, HAWK_NSECS_PER_SEC - 10 },
|
|
|
|
{ 0, 0,
|
|
-12345678, 10,
|
|
-12345678, 10,
|
|
12345677, HAWK_NSECS_PER_SEC - 10 },
|
|
|
|
{ HAWK_TYPE_MAX(hawk_ntime_sec_t) - 1, HAWK_NSECS_PER_SEC - 1,
|
|
1, 0,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), HAWK_NSECS_PER_SEC - 1,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t) - 2, HAWK_NSECS_PER_SEC - 1 },
|
|
|
|
{ HAWK_TYPE_MAX(hawk_ntime_sec_t) - 1, HAWK_NSECS_PER_SEC - 1,
|
|
1, 1,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), HAWK_NSECS_PER_SEC - 1,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t) - 2, HAWK_NSECS_PER_SEC - 2 },
|
|
|
|
/* 5 */
|
|
{ HAWK_TYPE_MAX(hawk_ntime_sec_t) - 1, HAWK_NSECS_PER_SEC - 1,
|
|
1, 2,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), HAWK_NSECS_PER_SEC - 1,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t) - 2, HAWK_NSECS_PER_SEC - 3 },
|
|
|
|
{ HAWK_TYPE_MAX(hawk_ntime_sec_t), 0,
|
|
0, 0,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), 0,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), 0 },
|
|
|
|
{ HAWK_TYPE_MIN(hawk_ntime_sec_t), 0,
|
|
0, 0,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0 },
|
|
|
|
{ HAWK_TYPE_MIN(hawk_ntime_sec_t) + 1, 0,
|
|
1, 2,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t) + 2, 2,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0 },
|
|
|
|
{ HAWK_TYPE_MIN(hawk_ntime_sec_t) + 1, 0,
|
|
2, 2,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t) + 3, 2,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0 },
|
|
|
|
/* 10 */
|
|
{ HAWK_TYPE_MIN(hawk_ntime_sec_t) + 1, 0,
|
|
2, HAWK_NSECS_PER_SEC - 1,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t) + 3, HAWK_NSECS_PER_SEC - 1,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0 },
|
|
|
|
{ 0, 0,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), HAWK_NSECS_PER_SEC - 1 },
|
|
|
|
{ HAWK_TYPE_MAX(hawk_ntime_sec_t), 0,
|
|
1, 0,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), HAWK_NSECS_PER_SEC - 1,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t) - 1, 0 },
|
|
|
|
{ HAWK_TYPE_MAX(hawk_ntime_sec_t), 0,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0,
|
|
-1, 0,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), HAWK_NSECS_PER_SEC - 1 },
|
|
|
|
{ HAWK_TYPE_MIN(hawk_ntime_sec_t), 0,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), 0,
|
|
-1, 0,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0 },
|
|
|
|
/* 15 */
|
|
{ HAWK_TYPE_MIN(hawk_ntime_sec_t), 0,
|
|
HAWK_TYPE_MAX(hawk_ntime_sec_t), HAWK_NSECS_PER_SEC - 1,
|
|
-1, HAWK_NSECS_PER_SEC - 1,
|
|
HAWK_TYPE_MIN(hawk_ntime_sec_t), 0 }
|
|
};
|
|
|
|
int main ()
|
|
{
|
|
hawk_ntime_t x, y, z;
|
|
int i;
|
|
char buf1[64], buf2[64];
|
|
|
|
no_plan();
|
|
|
|
for (i = 0; i < HAWK_COUNTOF(tab); i++)
|
|
{
|
|
sprintf (buf1, "add - index %d", i);
|
|
sprintf (buf2, "sub - index %d", i);
|
|
|
|
x.sec = tab[i].s1;
|
|
x.nsec = tab[i].ns1;
|
|
y.sec = tab[i].s2;
|
|
y.nsec = tab[i].ns2;
|
|
|
|
hawk_add_ntime (&z, &x, &y);
|
|
OK (z.sec == tab[i].add_s, buf1);
|
|
OK (z.nsec == tab[i].add_ns, buf1);
|
|
|
|
hawk_sub_ntime (&z, &x, &y);
|
|
OK (z.sec == tab[i].sub_s, buf2);
|
|
OK (z.nsec == tab[i].sub_ns, buf2);
|
|
|
|
}
|
|
|
|
return exit_status();
|
|
}
|