more db stuff
[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<80; i++ )
38 {
39 char rando[16];
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 highscores_print_track( 12, 10 );
59 highscores_serialize_all();
60 highscores_free();
61 return 0;
62 }
63
64 #if 0
65 typedef struct yoyo_t yoyo_t;
66 struct yoyo_t
67 {
68 int my_data;
69 aatree_node anode;
70 };
71
72 static void yoyo_t_show( void *_data )
73 {
74 yoyo_t *data = _data;
75 printf( "%d ", data->my_data );
76 }
77
78 static int yoyo_t_cmp( void *_a, void *_b )
79 {
80 yoyo_t *a = _a, *b = _b;
81 return b->my_data - a->my_data;
82 }
83
84 int main(int argc, const char *argv[])
85 {
86 yoyo_t *allsorts = malloc( sizeof(yoyo_t) * 10000 );
87
88 aatree test;
89 test.base = allsorts;
90 test.offset = offsetof( yoyo_t, anode );
91 test.stride = sizeof( yoyo_t );
92 test.p_cmp = yoyo_t_cmp;
93
94 for( int i=0; i<30; i++ ) vg_randf();
95
96 for( int j=0; j<1000; j++ )
97 {
98 int spam_amt = 100;
99 aatree_ptr root = AATREE_PTR_NIL;
100 for( int i=0; i<spam_amt; i++ )
101 {
102 yoyo_t *rando = &allsorts[i];
103 rando->my_data = vg_randf() * 563.0f;
104 root = aatree_insert( &test, root, i );
105 }
106
107 int ln=0, err=0;
108 int drawting = 1;
109 aatree_show_counts( &test, root, 0, &ln, &err, yoyo_t_show, drawting );
110
111 #if 0
112 int value = 3;
113 vg_info( "Ptr of %d: %u\n", value, aatree_find( &test, root, &value ) );
114
115 for( int i=0; i<20; i++ )
116 {
117 yoyo_t *v = aatree_get_data(&test,aatree_kth( &test, root, i ));
118 vg_info( "Value of [%d]: %d\n", i, v->my_data );
119 }
120 #endif
121 if( ln != spam_amt || err != 0 )
122 {
123 vg_error( "ADJAWIUDWAJD\n" );
124 break;
125 }
126
127 aatree_ptr traverser = aatree_kth( &test, root, 0 );
128
129 while( traverser != AATREE_PTR_NIL )
130 {
131 yoyo_t *v = aatree_get_data( &test, traverser );
132 vg_info( "... %d\n", v->my_data );
133
134 traverser = aatree_next( &test, traverser );
135 }
136
137 int orig = spam_amt;
138 for( int i=0; i<orig; i++ )
139 {
140 int remover = vg_min( (int)(vg_randf() * spam_amt), spam_amt-1 );
141 aatree_ptr kremove = aatree_kth( &test, root, remover );
142
143 vg_info( "Removing K %d\n", remover );
144 vg_info( "id: %d\n", kremove );
145
146 if( drawting )
147 vg_info( "AND NOW REMOVE K %d (id: %d, value: %d)\n", remover, kremove,
148 *((int*)aatree_get_data( &test, kremove )) );
149
150 root = aatree_del( &test, kremove );
151
152 ln=0;
153 err=0;
154 aatree_show_counts( &test, root, 0, &ln, &err, yoyo_t_show, drawting );
155
156 if( ln != spam_amt-1 || err != 0 )
157 {
158 vg_error( "ADJAWIUDWAJD ( %d %d // %d, %d)\n",
159 j, ln, spam_amt, err );
160 free( allsorts );
161 return 0;
162 }
163 vg_success( "%d\n", j );
164 spam_amt --;
165 }
166 }
167
168 free( allsorts );
169 return 0;
170 }
171
172 #endif