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