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}