hawk/t/t-006.c

137 lines
3.3 KiB
C
Raw Permalink Normal View History

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