/*------------------------------------------------------------------------- * Copyright (C) 1997 National Center for Supercomputing Applications. * All rights reserved. * *------------------------------------------------------------------------- * * Created: theap.c * Jul 17 1997 * Robb Matzke * * Purpose: * * Modifications: * *------------------------------------------------------------------------- */ #include #include #include #include #include #include #include #define FILE "theap.h5" #define NOBJS 40 /*------------------------------------------------------------------------- * Function: test_heap * * Purpose: Test name and object heaps. * * Return: void * * Programmer: Robb Matzke * robb@maya.nuance.com * Jul 17 1997 * * Modifications: * *------------------------------------------------------------------------- */ void test_heap(void) { int i, j; hid_t fid; H5F_t *f; haddr_t heap_addr; char buf[NOBJS + 8]; const char *s; size_t obj[NOBJS]; herr_t status; MESSAGE(5, ("Testing Heaps\n")); /* Create the file */ fid = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); CHECK(fid, FAIL, "H5Fcreate"); f = H5I_object(fid); CHECK(f, NULL, "H5I_object"); /* Create a new heap */ status = H5HL_create(f, 0, &heap_addr /*out */ ); CHECK_I(status, "H5HL_create"); /* Add stuff to the heap */ for (i = 0; i < NOBJS; i++) { sprintf(buf, "%03d-", i); for (j = 4; j < i; j++) buf[j] = '0' + j % 10; if (j > 4) buf[j] = '\0'; obj[i] = H5HL_insert(f, &heap_addr, strlen(buf) + 1, buf); assert ((size_t)(-1)!=obj[i]); } /* Flush the cache and invalidate everything */ H5AC_flush(f, NULL, 0, TRUE); /* Read the objects back out */ for (i = 0; i < NOBJS; i++) { s = H5HL_peek(f, &heap_addr, obj[i]); MESSAGE(8, ("object is `%s'\n", s)); } /* Close the file */ H5Fclose(fid); } /*------------------------------------------------------------------------- * Function: cleanup_heap * * Purpose: Cleanup temporary test files * * Return: none * * Programmer: Albert Cheng * July 2, 1998 * * Modifications: * *------------------------------------------------------------------------- */ void cleanup_heap(void) { remove(FILE); }