mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
[svn-r2222] Added TBBT testing code.
This commit is contained in:
parent
cf6470e7f0
commit
04152995a9
@ -57,9 +57,9 @@ TEST_SRC=big.c bittests.c chunk.c cmpd_dset.c dsets.c dtypes.c extend.c \
|
||||
external.c fillval.c flush1.c flush2.c gheap.c h5test.c hyperslab.c \
|
||||
iopipe.c istore.c lheap.c links.c mount.c mtime.c ohdr.c overhead.c \
|
||||
ragged.c stab.c tattr.c testhdf5.c tfile.c th5s.c titerate.c tmeta.c \
|
||||
trefer.c tselect.c tvltypes.c tvlstr.c unlink.c enum.c gass_write.c \
|
||||
gass_read.c gass_append.c dpss_read.c dpss_write.c srb_read.c \
|
||||
srb_write.c srb_append.c
|
||||
trefer.c tselect.c ttbbt.c tvltypes.c tvlstr.c unlink.c enum.c \
|
||||
gass_write.c gass_read.c gass_append.c dpss_read.c dpss_write.c \
|
||||
srb_read.c srb_write.c srb_append.c
|
||||
|
||||
TEST_OBJ=$(TEST_SRC:.c=.lo)
|
||||
|
||||
@ -78,7 +78,7 @@ timings _timings: $(TIMINGS)
|
||||
|
||||
## How to build the tests... They all depend on the test and hdf5 libraries.
|
||||
$(TEST_PROGS): $(LIB) $(LIBHDF5)
|
||||
TESTHDF5_OBJ=testhdf5.lo tattr.lo tfile.lo titerate.lo tmeta.lo trefer.lo tselect.lo tvltypes.lo tvlstr.lo th5s.lo
|
||||
TESTHDF5_OBJ=testhdf5.lo tattr.lo tfile.lo titerate.lo tmeta.lo trefer.lo tselect.lo ttbbt.lo tvltypes.lo tvlstr.lo th5s.lo
|
||||
testhdf5: $(TESTHDF5_OBJ)
|
||||
@$(LT_LINK_EXE) $(CFLAGS) -o $@ $(TESTHDF5_OBJ) $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
||||
|
||||
|
@ -163,6 +163,7 @@ main(int argc, char *argv[])
|
||||
|
||||
/* Tests are generally arranged from least to most complexity... */
|
||||
InitTest("metadata", test_metadata, cleanup_metadata, "Encode/decode metadata code");
|
||||
InitTest("tbbt", test_tbbt, NULL, "Threaded, Balanced, Binary Trees");
|
||||
InitTest("file", test_file, cleanup_file, "Low-Level File I/O");
|
||||
InitTest("h5s", test_h5s, cleanup_h5s, "Dataspaces");
|
||||
InitTest("attr", test_attr, cleanup_attr, "Attributes");
|
||||
|
@ -118,6 +118,7 @@ int print_func(const char *,...);
|
||||
|
||||
/* Prototypes for the test routines */
|
||||
void test_metadata(void);
|
||||
void test_tbbt(void);
|
||||
void test_file(void);
|
||||
void test_h5t(void);
|
||||
void test_h5s(void);
|
||||
|
146
test/ttbbt.c
Normal file
146
test/ttbbt.c
Normal file
@ -0,0 +1,146 @@
|
||||
/****************************************************************************
|
||||
* NCSA HDF *
|
||||
* Software Development Group *
|
||||
* National Center for Supercomputing Applications *
|
||||
* University of Illinois at Urbana-Champaign *
|
||||
* 605 E. Springfield, Champaign IL 61820 *
|
||||
* *
|
||||
* For conditions of distribution and use, see the accompanying *
|
||||
* hdf/COPYING file. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef RCSID
|
||||
static char RcsId[] = "@(#)$Revision$";
|
||||
#endif
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
FILE
|
||||
tbbt.c
|
||||
Test HDF Threaded-Balanced-Binary Tree (tbbt) routines.
|
||||
|
||||
REMARKS
|
||||
|
||||
DESIGN
|
||||
|
||||
BUGS/LIMITATIONS
|
||||
|
||||
EXPORTED ROUTINES
|
||||
|
||||
AUTHOR
|
||||
Quincey Koziol
|
||||
|
||||
MODIFICATION HISTORY
|
||||
4/22/00 - Converted from HDF4 test routine.
|
||||
*/
|
||||
|
||||
#include <time.h>
|
||||
#include "testhdf5.h"
|
||||
#include "H5TBprivate.h"
|
||||
|
||||
#define MAX_TEST_SIZE 31 /* maximum number of elements to insert */
|
||||
#define NUM_TEST_RUNS 100 /* number of times to insert & remove each size */
|
||||
|
||||
#define RandInt(a,b) ((rand()%(((b)-(a))+1))+(a))
|
||||
|
||||
intn tcompare (void * k1, void * k2, intn cmparg);
|
||||
|
||||
static void swap_arr(int *arr, intn a, intn b)
|
||||
{
|
||||
int t;
|
||||
|
||||
if (a != b)
|
||||
{
|
||||
t = arr[a];
|
||||
arr[a] = arr[b];
|
||||
arr[b] = t;
|
||||
} /* end if */
|
||||
} /* end swap_arr() */
|
||||
|
||||
intn
|
||||
tcompare(void * k1, void * k2, intn cmparg)
|
||||
{
|
||||
/* shut compiler up */
|
||||
cmparg=cmparg;
|
||||
return ((intn) ((*(int *) k1) - (*(int *) k2)));
|
||||
}
|
||||
|
||||
void
|
||||
test_tbbt(void)
|
||||
{
|
||||
intn test_size;
|
||||
intn i, j;
|
||||
int ins_arr[MAX_TEST_SIZE];
|
||||
int rem_arr[MAX_TEST_SIZE];
|
||||
intn t;
|
||||
TBBT_TREE *tree;
|
||||
void * *r;
|
||||
|
||||
t = (intn)time(NULL);
|
||||
srand((uintn)t);
|
||||
|
||||
for (test_size = 3; test_size <= MAX_TEST_SIZE; test_size++)
|
||||
{
|
||||
MESSAGE(7, ("\nTesting trees with %d elements\n", test_size));
|
||||
MESSAGE(8, ("Testing tree #:"));
|
||||
for (j = 0; j < NUM_TEST_RUNS; j++)
|
||||
{
|
||||
MESSAGE(8, (" %d", j));
|
||||
for (i = 0; i < test_size; i++)
|
||||
{ /* initialize the arrays */
|
||||
ins_arr[i] = i;
|
||||
rem_arr[i] = i;
|
||||
} /* end for */
|
||||
for (i = 0; i < test_size; i++)
|
||||
{ /* shuffle the arrays */
|
||||
t = RandInt(i, test_size - 1);
|
||||
swap_arr(ins_arr, i, t);
|
||||
t = RandInt(i, test_size - 1);
|
||||
swap_arr(rem_arr, i, t);
|
||||
} /* end for */
|
||||
|
||||
if (Verbosity > 9)
|
||||
{
|
||||
printf("ins_arr: \n");
|
||||
for (i = 0; i < test_size; i++) /* print the arrays */
|
||||
printf("%d \n", (int) ins_arr[i]);
|
||||
printf("\nrem_arr: \n");
|
||||
for (i = 0; i < test_size; i++) /* print the arrays */
|
||||
printf("%d \n", (int) rem_arr[i]);
|
||||
printf("\n");
|
||||
} /* end if */
|
||||
|
||||
tree = H5TB_dmake(tcompare, sizeof(int),0);
|
||||
for (i = 0; i < test_size; i++)
|
||||
{
|
||||
MESSAGE(9, ("inserting %d\n", (int) ins_arr[i]));
|
||||
H5TB_dins(tree, (void *) &ins_arr[i], NULL);
|
||||
#ifdef H5TB_DEBUG
|
||||
if(Verbosity>9)
|
||||
H5TB_dump(tree, -1);
|
||||
#endif /* H5TB_DEBUG */
|
||||
}
|
||||
#ifdef H5TB_DEBUG
|
||||
if(Verbosity>9)
|
||||
H5TB_dump(tree, -1);
|
||||
#endif /* H5TB_DEBUG */
|
||||
for (i = 0; i < test_size; i++)
|
||||
{
|
||||
int key;
|
||||
|
||||
key = rem_arr[i];
|
||||
r = (void * *) H5TB_dfind(tree, (void *) &key, NULL);
|
||||
MESSAGE(9, ("removing %d\n", (int) key));
|
||||
H5TB_rem((TBBT_NODE **) tree, (TBBT_NODE *) r, NULL);
|
||||
#ifdef H5TB_DEBUG
|
||||
if(Verbosity>9)
|
||||
H5TB_dump(tree, -1);
|
||||
#endif /* H5TB_DEBUG */
|
||||
} /* end for */
|
||||
H5TB_dfree(tree, NULL, NULL);
|
||||
} /* end for */
|
||||
} /* end for */
|
||||
} /* end test_tbbt() */
|
||||
|
Loading…
Reference in New Issue
Block a user