Fix major overstep with last commit
[carveJwlIkooP6JGAAIwe30JlM.git] / testaa.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <stdarg.h>
4 #include <string.h>
5 #include <stddef.h>
6 #include <math.h>
7
8 #include "vg/vg_platform.h"
9 #include "vg/vg_stdint.h"
10 #include "vg/vg_store.h"
11 #include "vg/vg_io.h"
12 #include "vg/vg_m.h"
13
14 #include "highscores.h"
15
16 int main(int argc, const char *argv[])
17 {
18 vg_info( "Database test\n" );
19
20 if( !highscores_init( 200000, 100000 ) )
21 return 0;
22
23 srand(time(0));
24 vg_log( "Inserting test records...\n" );
25 for( int i=0; i<5000; i++ )
26 {
27 highscore_record entry;
28 entry.trackid = vg_randf() * 138.0f;
29 entry.points = vg_randf() * 10000.0f;
30 entry.time = vg_randf() * 20000.0f;
31 entry.playerid = rand() % 800;
32 entry.datetime = vg_randf() * 100000.0f;
33
34 highscores_push_record( &entry );
35 }
36
37 for( int i=0; i<800; i++ )
38 {
39 char rando[10];
40
41 int l=2+rand()%8;
42 for( int i=0; i<l; i++ )
43 rando[i] = 'a' + rand() % 10;
44 rando[l] = '\0';
45
46 highscore_set_user_nickname( rand() % 800, rando );
47 }
48
49 vg_log( "Done.\n" );
50
51 #if 0
52 int ln =0, err=0;
53 aatree_show_counts( &highscore_system.aainfo_playerinfo_playerid,
54 highscore_system.dbheader.playerinfo_root, 0,
55 &ln, &err, _highscore_showname, 1 );
56 #endif
57
58 char testy[27*(10+3)];
59
60 for( int i=0; i<vg_list_size(track_infos); i++ )
61 {
62 highscores_board_generate( testy, i, 10 );
63 highscores_board_printf( stdout, testy, 10 );
64 }
65
66 highscores_serialize_all();
67 highscores_free();
68 return 0;
69 }
70
71 #if 0
72 typedef struct yoyo_t yoyo_t;
73 struct yoyo_t
74 {
75 int my_data;
76 aatree_node anode;
77 };
78
79 static void yoyo_t_show( void *_data )
80 {
81 yoyo_t *data = _data;
82 printf( "%d ", data->my_data );
83 }
84
85 static int yoyo_t_cmp( void *_a, void *_b )
86 {
87 yoyo_t *a = _a, *b = _b;
88 return b->my_data - a->my_data;
89 }
90
91 int main(int argc, const char *argv[])
92 {
93 yoyo_t *allsorts = malloc( sizeof(yoyo_t) * 10000 );
94
95 aatree test;
96 test.base = allsorts;
97 test.offset = offsetof( yoyo_t, anode );
98 test.stride = sizeof( yoyo_t );
99 test.p_cmp = yoyo_t_cmp;
100
101 for( int i=0; i<30; i++ ) vg_randf();
102
103 for( int j=0; j<1000; j++ )
104 {
105 int spam_amt = 100;
106 aatree_ptr root = AATREE_PTR_NIL;
107 for( int i=0; i<spam_amt; i++ )
108 {
109 yoyo_t *rando = &allsorts[i];
110 rando->my_data = vg_randf() * 563.0f;
111 root = aatree_insert( &test, root, i );
112 }
113
114 int ln=0, err=0;
115 int drawting = 1;
116 aatree_show_counts( &test, root, 0, &ln, &err, yoyo_t_show, drawting );
117
118 #if 0
119 int value = 3;
120 vg_info( "Ptr of %d: %u\n", value, aatree_find( &test, root, &value ) );
121
122 for( int i=0; i<20; i++ )
123 {
124 yoyo_t *v = aatree_get_data(&test,aatree_kth( &test, root, i ));
125 vg_info( "Value of [%d]: %d\n", i, v->my_data );
126 }
127 #endif
128 if( ln != spam_amt || err != 0 )
129 {
130 vg_error( "ADJAWIUDWAJD\n" );
131 break;
132 }
133
134 aatree_ptr traverser = aatree_kth( &test, root, 0 );
135
136 while( traverser != AATREE_PTR_NIL )
137 {
138 yoyo_t *v = aatree_get_data( &test, traverser );
139 vg_info( "... %d\n", v->my_data );
140
141 traverser = aatree_next( &test, traverser );
142 }
143
144 int orig = spam_amt;
145 for( int i=0; i<orig; i++ )
146 {
147 int remover = vg_min( (int)(vg_randf() * spam_amt), spam_amt-1 );
148 aatree_ptr kremove = aatree_kth( &test, root, remover );
149
150 vg_info( "Removing K %d\n", remover );
151 vg_info( "id: %d\n", kremove );
152
153 if( drawting )
154 vg_info( "AND NOW REMOVE K %d (id: %d, value: %d)\n", remover, kremove,
155 *((int*)aatree_get_data( &test, kremove )) );
156
157 root = aatree_del( &test, kremove );
158
159 ln=0;
160 err=0;
161 aatree_show_counts( &test, root, 0, &ln, &err, yoyo_t_show, drawting );
162
163 if( ln != spam_amt-1 || err != 0 )
164 {
165 vg_error( "ADJAWIUDWAJD ( %d %d // %d, %d)\n",
166 j, ln, spam_amt, err );
167 free( allsorts );
168 return 0;
169 }
170 vg_success( "%d\n", j );
171 spam_amt --;
172 }
173 }
174
175 free( allsorts );
176 return 0;
177 }
178
179 #endif