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