main
 1#define NOTLIBC_NOMAIN
 2#include "notlibc.c"
 3
 4#define N 13
 5
 6void PRESERVE_WITH_LTO entry(void) {
 7	Status s = S_SUCCESS;
 8
 9	/* Basic functionality test */
10	assert( u64_round_up( &s, N+1, N ) == 2*N ); assert(S_OK(s));
11	assert( u32_round_up( &s, N+1, N ) == 2*N ); assert(S_OK(s));
12	assert( u16_round_up( &s, N+1, N ) == 2*N ); assert(S_OK(s));
13	assert(  u8_round_up( &s, N+1, N ) == 2*N ); assert(S_OK(s));
14
15	assert( u64_round_down( &s, 2*N-1, N ) == N ); assert(S_OK(s));
16	assert( u32_round_down( &s, 2*N-1, N ) == N ); assert(S_OK(s));
17	assert( u16_round_down( &s, 2*N-1, N ) == N ); assert(S_OK(s));
18	assert(  u8_round_down( &s, 2*N-1, N ) == N ); assert(S_OK(s));
19
20	/* Overflow */
21	u64_round_up( &s, u64_MAX, N ); assert( S_NOK(s) );
22	u32_round_up( &s, u32_MAX, N ); assert( S_NOK(s) );
23	u16_round_up( &s, u16_MAX, N ); assert( S_NOK(s) );
24	 u8_round_up( &s,  u8_MAX, N ); assert( S_NOK(s) );
25
26	/* Rounding down to 0 is valid, so no underflow test */
27
28	terminate(0);
29}