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}