main
1#define NOTLIBC_NOMAIN
2#include "notlibc.c"
3
4s8 _usize_cmp( const usize *a, const usize *b ) {
5 if( *a == *b ) return 0;
6 if( *a > *b ) return 1; else return -1;
7}
8
9void PRESERVE_WITH_LTO entry(void) {
10
11 Status s = S_SUCCESS;
12
13 Heap h = Heap_create( &s, KiB(4) );
14 assert( S_OK(s) );
15
16 usizes *a = usizes_create( &s, &h, 8 );
17 assert( S_OK(s) );
18
19 usize value = 0;
20 a = usizes_push( &s, a, &value, &h );
21 assert( S_OK(s) );
22
23 value = 17;
24 a = usizes_push( &s, a, &value, &h );
25 assert( S_OK(s) );
26
27 value = 11;
28 a = usizes_push( &s, a, &value, &h );
29 assert( S_OK(s) );
30
31 value = 164;
32 a = usizes_push( &s, a, &value, &h );
33 assert( S_OK(s) );
34
35 value = 1248;
36 a = usizes_push( &s, a, &value, &h );
37 assert( S_OK(s) );
38
39 value = 3;
40 a = usizes_push( &s, a, &value, &h );
41 assert( S_OK(s) );
42
43 usizes_sort( &s, a, _usize_cmp );
44 assert( S_OK(s) );
45
46 for( u64 i = 1; i < a->len; ++i ) {
47 assert( a->data[i - 1] <= a->data[i] );
48 }
49
50
51 value = 11;
52 a = usizes_insert_sorted( &s, a, &value, _usize_cmp, &h );
53 assert( S_OK(s) );
54
55 value = 111;
56 a = usizes_insert_sorted( &s, a, &value, _usize_cmp, &h );
57 assert( S_OK(s) );
58
59 value = 111;
60 a = usizes_insert_sorted( &s, a, &value, _usize_cmp, &h );
61 assert( S_OK(s) );
62
63 value = 111111;
64 a = usizes_insert_sorted( &s, a, &value, _usize_cmp, &h );
65 assert( S_OK(s) );
66
67 for( u64 i = 1; i < a->len; ++i ) {
68 assert( a->data[i - 1] <= a->data[i] );
69 }
70
71 terminate(0);
72}