Files
svc.ems/plat/public/ut/bisearch/bisearch_test.c
2024-09-27 15:39:34 +08:00

150 lines
4.1 KiB
C

/******************************************/
/*Title : bisearch.h */
/*Descr : BiSearch arithmetic Tester */
/*Author : Liu Wei */
/*Create : 2006-12-13 */
/*Version : R1V00_01 */
/*Modify : 2006-12-13 */
/******************************************/
#include "../../iptrans/src/include/iptrans.h"
#include "./include/bisearch.h"
FILE *fp = NULL;
BiSearchArray bsearch_array;
int GetIdleNode(int *nDUIndex)
{
if( bsearch_array.nArrayCount >= bsearch_array.nArrayTotalLen )
return 0;
*nDUIndex = (rand()*19)%bsearch_array.nArrayTotalLen;
return 1;
}
void logarray ( BiSearchArray * pBiArray, char *op )
{
BiSearch *pBS;
LL lastkey = 0;
int nPos = -1;
char buf[4096];
char tmp_str[512];
int i;
buf[0] = '\0';
sprintf ( buf, "Array Contents:[total :%d]\n" , pBiArray->nArrayCount);
for ( i = 0; i < pBiArray->nArrayTotalLen; i++ )
{
pBS = pBiArray->pBiArray + i;
sprintf ( tmp_str, "{%-3u,(%-3llu,%-3u)} ", i, pBS->llKey, pBS->nDUPosIndex );
strcat ( buf, tmp_str );
if( i % 6 == 5 )
{
strcat ( buf, "\n" );
}
if( lastkey > pBS->llKey && i < pBiArray->nArrayCount )
nPos = i;
lastkey = pBS->llKey;
}
//if( nPos != -1 )
{
sprintf ( tmp_str, "\nERR Pos: %d\n\n", nPos );
strcat ( buf, tmp_str );
fprintf ( fp, buf );
}
}
#define log() logarray( &bsearch_array , op)
int main ( int argc, char *argv[] )
{
char op[32];
char buff[64];
int i;
srand((int)time(0));
if( ( fp = fopen ( "./log.txt", "w" ) ) == NULL )
{
printf ( "Open File Fail\n" );
return 0;
}
fprintf ( fp, "======================\n" );
fprintf ( fp, "|| BiSearch Test ||\n" );
fprintf ( fp, "======================\n\n\n" );
for ( i = 0; i < 32; i++ )
{
op[i] = 'A' + ( i * 3 + 11 ) % 26;
buff[i] = op[i] + ( i * 7 + 19 ) % 26;
}
BISearchReg ( &bsearch_array, 64 ,GetIdleNode );
for ( i = 0; i < 30; i++ )
{
int key = ( ( i * 11 ) % 5 ) * ( i % 5 ) - 3 * ( i % 11 ) + 39;
int value = (3 * i + 1)%bsearch_array.nArrayTotalLen;
fprintf ( fp, "Insert(%-3d, %-3d)\n", key, value );
BISInsert ( &bsearch_array, key, value );
log();
}
log();
for ( i = 0; i < 128; i++ )
{
int k = ( ( i * 11 ) % 7 ) * ( i % 9 ) - 3 * ( i % 13 ) + i * ( rand ( ) % 13 * 19 ) + 61;
k = k % 999;
fprintf ( fp, "=====>>Insert(%d, %d)\n", k, 2 * i );
BISInsert ( &bsearch_array, k, (2 * i+rand() % 13 * 19 + i*19)%bsearch_array.nArrayTotalLen);
fprintf ( fp, "\n" );
log();
k = ( ( 20 - i ) % 3 ) * 9 - ( 3 * ( 20 - i ) ) + 9*128;
k = k % 999;
fprintf ( fp, "search index: %d" , k );
if( -1 != GetDUIndex( &bsearch_array ,k ) )
{
fprintf ( fp, "<<=====Delete Key %d\n", k );
BISDelete ( &bsearch_array , k );
}
else
fprintf ( fp, "<<=====Delete Fail , not found [%d]", k );
fprintf ( fp, "\n" );
log();
}
for( i = 0 ; i < 128 ; i++ )
{
int nDUIndex = 0;
int k = ( ( i * 11 ) % 7 ) * ( i % 9 ) - 3 * ( i % 13 ) + i * ( rand ( ) % 13 * 19 ) + 61;
k = k % 999;
BISSearchMng( &bsearch_array , BIS_INSERT , k , &nDUIndex );
fprintf ( fp, "=====>>Insert(%d, %d)\n", k, nDUIndex );
fprintf ( fp, "\n" );
log();
k = ( ( i * 11 ) % 7 ) * ( i % 9 ) - 3 * ( i % 13 ) + i * ( rand ( ) % 13 * 19 ) + 61;
k = k % 999;
fprintf ( fp, "search index: %d" , k );
if( -1 != GetDUIndex( &bsearch_array ,k ) )
{
fprintf ( fp, "<<=====Delete Key %d\n", k );
BISSearchMng( &bsearch_array , BIS_DELETE , k ,&nDUIndex);
}
else
fprintf ( fp, "<<=====Delete Fail , not found [%d]", k );
fprintf ( fp, "\n" );
log();
}
//fclose ( fp );
BISearchUnReg ( &bsearch_array);
return 0;
}