loadsa work
[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 ) )
21 return 0;
22
23 vg_log( "Inserting test records...\n" );
24 for( int i=0; i<200000; i++ )
25 {
26 highscore_record entry;
27 entry.trackid = vg_randf() * 129.0f;
28 entry.points = vg_randf() * 10000.0f;
29 entry.time = vg_randf() * 20000.0f;
30 entry.playerid = rand() % 800;
31 entry.datetime = vg_randf() * 100000.0f;
32
33 highscores_push_record( &entry );
34 }
35 vg_log( "Done.\n" );
36
37 highscores_print_track( 2, 10 );
38 highscores_free();
39 return 0;
40 }
41
42 #if 0
43 typedef struct yoyo_t yoyo_t;
44 struct yoyo_t
45 {
46 int my_data;
47 aatree_node anode;
48 };
49
50 static void yoyo_t_show( void *_data )
51 {
52 yoyo_t *data = _data;
53 printf( "%d ", data->my_data );
54 }
55
56 static int yoyo_t_cmp( void *_a, void *_b )
57 {
58 yoyo_t *a = _a, *b = _b;
59 return b->my_data - a->my_data;
60 }
61
62 int main(int argc, const char *argv[])
63 {
64 yoyo_t *allsorts = malloc( sizeof(yoyo_t) * 10000 );
65
66 aatree test;
67 test.base = allsorts;
68 test.offset = offsetof( yoyo_t, anode );
69 test.stride = sizeof( yoyo_t );
70 test.p_cmp = yoyo_t_cmp;
71
72 for( int i=0; i<30; i++ ) vg_randf();
73
74 for( int j=0; j<1000; j++ )
75 {
76 int spam_amt = 100;
77 aatree_ptr root = AATREE_PTR_NIL;
78 for( int i=0; i<spam_amt; i++ )
79 {
80 yoyo_t *rando = &allsorts[i];
81 rando->my_data = vg_randf() * 563.0f;
82 root = aatree_insert( &test, root, i );
83 }
84
85 int ln=0, err=0;
86 int drawting = 1;
87 aatree_show_counts( &test, root, 0, &ln, &err, yoyo_t_show, drawting );
88
89 #if 0
90 int value = 3;
91 vg_info( "Ptr of %d: %u\n", value, aatree_find( &test, root, &value ) );
92
93 for( int i=0; i<20; i++ )
94 {
95 yoyo_t *v = aatree_get_data(&test,aatree_kth( &test, root, i ));
96 vg_info( "Value of [%d]: %d\n", i, v->my_data );
97 }
98 #endif
99 if( ln != spam_amt || err != 0 )
100 {
101 vg_error( "ADJAWIUDWAJD\n" );
102 break;
103 }
104
105 aatree_ptr traverser = aatree_kth( &test, root, 0 );
106
107 while( traverser != AATREE_PTR_NIL )
108 {
109 yoyo_t *v = aatree_get_data( &test, traverser );
110 vg_info( "... %d\n", v->my_data );
111
112 traverser = aatree_next( &test, traverser );
113 }
114
115 int orig = spam_amt;
116 for( int i=0; i<orig; i++ )
117 {
118 int remover = vg_min( (int)(vg_randf() * spam_amt), spam_amt-1 );
119 aatree_ptr kremove = aatree_kth( &test, root, remover );
120
121 vg_info( "Removing K %d\n", remover );
122 vg_info( "id: %d\n", kremove );
123
124 if( drawting )
125 vg_info( "AND NOW REMOVE K %d (id: %d, value: %d)\n", remover, kremove,
126 *((int*)aatree_get_data( &test, kremove )) );
127
128 root = aatree_del( &test, kremove );
129
130 ln=0;
131 err=0;
132 aatree_show_counts( &test, root, 0, &ln, &err, yoyo_t_show, drawting );
133
134 if( ln != spam_amt-1 || err != 0 )
135 {
136 vg_error( "ADJAWIUDWAJD ( %d %d // %d, %d)\n",
137 j, ln, spam_amt, err );
138 free( allsorts );
139 return 0;
140 }
141 vg_success( "%d\n", j );
142 spam_amt --;
143 }
144 }
145
146 free( allsorts );
147 return 0;
148 }
149
150 #endif