8 #include "vg/vg_platform.h"
9 #include "vg/vg_stdint.h"
10 #include "vg/vg_store.h"
14 #include "highscores.h"
16 int main(int argc
, const char *argv
[])
18 vg_info( "Database test\n" );
20 if( !highscores_init( 200000, 100000 ) )
24 vg_log( "Inserting test records...\n" );
25 for( int i
=0; i
<5000; i
++ )
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
;
34 highscores_push_record( &entry
);
37 for( int i
=0; i
<800; i
++ )
42 for( int i
=0; i
<l
; i
++ )
43 rando
[i
] = 'a' + rand() % 10;
46 highscore_set_user_nickname( rand() % 800, rando
);
53 aatree_show_counts( &highscore_system
.aainfo_playerinfo_playerid
,
54 highscore_system
.dbheader
.playerinfo_root
, 0,
55 &ln
, &err
, _highscore_showname
, 1 );
58 char testy
[27*(10+3)];
60 for( int i
=0; i
<vg_list_size(track_infos
); i
++ )
62 highscores_board_generate( testy
, i
, 10 );
63 highscores_board_printf( stdout
, testy
, 10 );
66 highscores_serialize_all();
72 typedef struct yoyo_t yoyo_t
;
79 static void yoyo_t_show( void *_data
)
82 printf( "%d ", data
->my_data
);
85 static int yoyo_t_cmp( void *_a
, void *_b
)
87 yoyo_t
*a
= _a
, *b
= _b
;
88 return b
->my_data
- a
->my_data
;
91 int main(int argc
, const char *argv
[])
93 yoyo_t
*allsorts
= malloc( sizeof(yoyo_t
) * 10000 );
97 test
.offset
= offsetof( yoyo_t
, anode
);
98 test
.stride
= sizeof( yoyo_t
);
99 test
.p_cmp
= yoyo_t_cmp
;
101 for( int i
=0; i
<30; i
++ ) vg_randf();
103 for( int j
=0; j
<1000; j
++ )
106 aatree_ptr root
= AATREE_PTR_NIL
;
107 for( int i
=0; i
<spam_amt
; i
++ )
109 yoyo_t
*rando
= &allsorts
[i
];
110 rando
->my_data
= vg_randf() * 563.0f
;
111 root
= aatree_insert( &test
, root
, i
);
116 aatree_show_counts( &test
, root
, 0, &ln
, &err
, yoyo_t_show
, drawting
);
120 vg_info( "Ptr of %d: %u\n", value
, aatree_find( &test
, root
, &value
) );
122 for( int i
=0; i
<20; i
++ )
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
);
128 if( ln
!= spam_amt
|| err
!= 0 )
130 vg_error( "ADJAWIUDWAJD\n" );
134 aatree_ptr traverser
= aatree_kth( &test
, root
, 0 );
136 while( traverser
!= AATREE_PTR_NIL
)
138 yoyo_t
*v
= aatree_get_data( &test
, traverser
);
139 vg_info( "... %d\n", v
->my_data
);
141 traverser
= aatree_next( &test
, traverser
);
145 for( int i
=0; i
<orig
; i
++ )
147 int remover
= vg_min( (int)(vg_randf() * spam_amt
), spam_amt
-1 );
148 aatree_ptr kremove
= aatree_kth( &test
, root
, remover
);
150 vg_info( "Removing K %d\n", remover
);
151 vg_info( "id: %d\n", kremove
);
154 vg_info( "AND NOW REMOVE K %d (id: %d, value: %d)\n", remover
, kremove
,
155 *((int*)aatree_get_data( &test
, kremove
)) );
157 root
= aatree_del( &test
, kremove
);
161 aatree_show_counts( &test
, root
, 0, &ln
, &err
, yoyo_t_show
, drawting
);
163 if( ln
!= spam_amt
-1 || err
!= 0 )
165 vg_error( "ADJAWIUDWAJD ( %d %d // %d, %d)\n",
166 j
, ln
, spam_amt
, err
);
170 vg_success( "%d\n", j
);