summaryrefslogtreecommitdiffstats
path: root/test/tstab.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/tstab.c')
-rw-r--r--test/tstab.c415
1 files changed, 203 insertions, 212 deletions
diff --git a/test/tstab.c b/test/tstab.c
index f16d8f5..8ad20cc 100644
--- a/test/tstab.c
+++ b/test/tstab.c
@@ -1,16 +1,16 @@
/*-------------------------------------------------------------------------
- * Copyright (C) 1997 National Center for Supercomputing Applications.
+ * Copyright (C) 1997 National Center for Supercomputing Applications.
* All rights reserved.
*
*-------------------------------------------------------------------------
*
- * Created: tstab.c
- * Aug 7 1997
- * Robb Matzke <matzke@llnl.gov>
+ * Created: tstab.c
+ * Aug 7 1997
+ * Robb Matzke <matzke@llnl.gov>
*
- * Purpose:
+ * Purpose:
*
- * Modifications:
+ * Modifications:
*
*-------------------------------------------------------------------------
*/
@@ -19,7 +19,7 @@
#include <H5private.h>
#include <H5ACprivate.h>
#include <H5Cprivate.h>
-#include <H5Fprivate.h>
+#include <H5Fprivate.h>
#include <H5Gprivate.h>
#include <H5Oprivate.h>
@@ -28,274 +28,265 @@
*/
#define H5G_PACKAGE
#include <H5Gpkg.h>
-
/*-------------------------------------------------------------------------
- * Function: test_1
+ * Function: test_1
*
- * Purpose: Tests the non-directory features of the HDF5 file. If the
- * file has just one non-directory object, then that object
- * should be the root object and there is no directory.
+ * Purpose: Tests the non-directory features of the HDF5 file. If the
+ * file has just one non-directory object, then that object
+ * should be the root object and there is no directory.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * robb@maya.nuance.com
- * Aug 29 1997
+ * Programmer: Robb Matzke
+ * robb@maya.nuance.com
+ * Aug 29 1997
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
static void
-test_1 (void)
+test_1(void)
{
- hid_t fid;
- H5F_t *f;
- H5G_entry_t ent1, ent2, obj_ent, dir_ent;
- herr_t status;
- H5O_name_t name_mesg;
- void *status_ptr;
- hbool_t b;
-
- MESSAGE (2, ("........non-directory files\n"));
+ hid_t fid;
+ H5F_t *f;
+ H5G_entry_t ent1, ent2, obj_ent, dir_ent;
+ herr_t status;
+ H5O_name_t name_mesg;
+ void *status_ptr;
+ hbool_t b;
- /*
- * Test 1A: Create an empty file and add a non-directory object
- * to the file with the name `/'. The object should become the
- * root object and should not have a name message.
- */
+ MESSAGE(2, ("........non-directory files\n"));
- /* create the file */
- fid = H5Fcreate ("tstab1.h5", H5ACC_OVERWRITE, 0, 0);
- CHECK (fid, FAIL, "H5Fcreate");
- f = H5Aatom_object (fid);
- CHECK (f, NULL, "H5Aatom_object");
+ /*
+ * Test 1A: Create an empty file and add a non-directory object
+ * to the file with the name `/'. The object should become the
+ * root object and should not have a name message.
+ */
- /* create the object */
- status = H5O_create (f, 0, &ent1);
- CHECK_I (status, "H5O_create");
- status = H5G_insert ("/", &ent1);
- CHECK_I (status, "H5G_insert");
- status = H5O_close (&ent1);
- CHECK_I (status, "H5O_close");
+ /* create the file */
+ fid = H5Fcreate("tstab1.h5", H5ACC_OVERWRITE, 0, 0);
+ CHECK(fid, FAIL, "H5Fcreate");
+ f = H5Aatom_object(fid);
+ CHECK(f, NULL, "H5Aatom_object");
- /* look for a name message -- it shouldn't be present */
- status_ptr = H5O_read (&ent1, H5O_NAME, 0, &name_mesg);
- VERIFY (status_ptr, NULL, "H5O_read [didn't fail but should have]");
-
- /*
- * Test 1B: Attempt to read the root object using the name `/'.
- */
- memset (&dir_ent, 0xff, sizeof(H5G_entry_t));
- memset (&obj_ent, 0xff, sizeof(H5G_entry_t));
- status = H5G_find (f, "/", &dir_ent, &obj_ent);
- CHECK_I (status, "H5G_find");
+ /* create the object */
+ status = H5O_create(f, 0, &ent1);
+ CHECK_I(status, "H5O_create");
+ status = H5G_insert("/", &ent1);
+ CHECK_I(status, "H5G_insert");
+ status = H5O_close(&ent1);
+ CHECK_I(status, "H5O_close");
- /* Is it really the root object? */
- b = H5F_addr_defined (&(dir_ent.header));
- VERIFY (b, FALSE, "H5G_insert");
- b = H5F_addr_eq (&(obj_ent.header), &(ent1.header));
- VERIFY (b, TRUE, "H5G_insert");
+ /* look for a name message -- it shouldn't be present */
+ status_ptr = H5O_read(&ent1, H5O_NAME, 0, &name_mesg);
+ VERIFY(status_ptr, NULL, "H5O_read [didn't fail but should have]");
-
- /*
- * Test 1C: Add a second object to the file to see if the first object
- * gets moved into the new root directory along with the second object.
- */
+ /*
+ * Test 1B: Attempt to read the root object using the name `/'.
+ */
+ memset(&dir_ent, 0xff, sizeof(H5G_entry_t));
+ memset(&obj_ent, 0xff, sizeof(H5G_entry_t));
+ status = H5G_find(f, "/", &dir_ent, &obj_ent);
+ CHECK_I(status, "H5G_find");
- /* create the object */
- status = H5O_create (f, 0, &ent2);
- CHECK_I (status, "H5O_create");
- status = H5G_insert ("/second", &ent2);
- CHECK_I (status, "H5G_insert");
- status = H5O_close (&ent2);
- CHECK_I (status, "H5O_close");
+ /* Is it really the root object? */
+ b = H5F_addr_defined(&(dir_ent.header));
+ VERIFY(b, FALSE, "H5G_insert");
+ b = H5F_addr_eq(&(obj_ent.header), &(ent1.header));
+ VERIFY(b, TRUE, "H5G_insert");
- /* try to read the first object */
- HDmemset (&obj_ent, 0xff, sizeof(H5G_entry_t));
- status = H5G_find (f, "/Root Object", NULL, &obj_ent);
- CHECK_I (status, "H5G_find");
- b = H5F_addr_defined (&(obj_ent.header));
- VERIFY (b, TRUE, "H5G_insert");
- b = H5F_addr_eq (&(obj_ent.header), &(ent1.header));
- VERIFY (b, TRUE, "H5G_create");
+ /*
+ * Test 1C: Add a second object to the file to see if the first object
+ * gets moved into the new root directory along with the second object.
+ */
- /* close the file */
- H5Fclose (fid);
+ /* create the object */
+ status = H5O_create(f, 0, &ent2);
+ CHECK_I(status, "H5O_create");
+ status = H5G_insert("/second", &ent2);
+ CHECK_I(status, "H5G_insert");
+ status = H5O_close(&ent2);
+ CHECK_I(status, "H5O_close");
-
-
- /*
- * Test 1D: Create an empty file and add a non-directory object
- * to the file with the name `/foo'. The object should become the
- * root object and should have a name message with the value `foo'.
- */
+ /* try to read the first object */
+ HDmemset(&obj_ent, 0xff, sizeof(H5G_entry_t));
+ status = H5G_find(f, "/Root Object", NULL, &obj_ent);
+ CHECK_I(status, "H5G_find");
+ b = H5F_addr_defined(&(obj_ent.header));
+ VERIFY(b, TRUE, "H5G_insert");
+ b = H5F_addr_eq(&(obj_ent.header), &(ent1.header));
+ VERIFY(b, TRUE, "H5G_create");
- /* create the file */
- fid = H5Fcreate ("tstab1.h5", H5ACC_OVERWRITE, 0, 0);
- CHECK (fid, FAIL, "H5Fcreate");
- f = H5Aatom_object (fid);
- CHECK (f, NULL, "H5Aatom_object");
+ /* close the file */
+ H5Fclose(fid);
- /* create the object */
- status = H5O_create (f, 0, &ent1);
- CHECK_I (status, "H5O_create");
- status = H5G_insert ("/foo", &ent1);
- CHECK_I (status, "H5G_insert");
- status = H5O_close (&ent1);
- CHECK_I (status, "H5O_close");
+ /*
+ * Test 1D: Create an empty file and add a non-directory object
+ * to the file with the name `/foo'. The object should become the
+ * root object and should have a name message with the value `foo'.
+ */
- /* does it have the correct name message? */
- status_ptr = H5O_read (&ent1, H5O_NAME, 0, &name_mesg);
- CHECK_PTR (status_ptr, "H5O_read");
- CHECK_PTR (name_mesg.s, "H5O_read");
- VERIFY (strcmp(name_mesg.s, "foo"), 0, "H5G_insert");
- if (status_ptr) H5O_reset (H5O_NAME, &name_mesg); /*free message data*/
+ /* create the file */
+ fid = H5Fcreate("tstab1.h5", H5ACC_OVERWRITE, 0, 0);
+ CHECK(fid, FAIL, "H5Fcreate");
+ f = H5Aatom_object(fid);
+ CHECK(f, NULL, "H5Aatom_object");
+ /* create the object */
+ status = H5O_create(f, 0, &ent1);
+ CHECK_I(status, "H5O_create");
+ status = H5G_insert("/foo", &ent1);
+ CHECK_I(status, "H5G_insert");
+ status = H5O_close(&ent1);
+ CHECK_I(status, "H5O_close");
- /*
- * Test 1E: Try to read the root object with the name `/' and `/foo'
- */
- HDmemset (&dir_ent, 0, sizeof(H5G_entry_t));
- HDmemset (&obj_ent, 0, sizeof(H5G_entry_t));
- status = H5G_find (f, "/", &dir_ent, &obj_ent);
- CHECK_I (status, "H5G_find");
- b = H5F_addr_defined (&(dir_ent.header));
- VERIFY (b, FALSE, "H5G_insert");
- b = H5F_addr_eq (&(obj_ent.header), &(ent1.header));
- VERIFY (b, TRUE, "H5G_insert");
+ /* does it have the correct name message? */
+ status_ptr = H5O_read(&ent1, H5O_NAME, 0, &name_mesg);
+ CHECK_PTR(status_ptr, "H5O_read");
+ CHECK_PTR(name_mesg.s, "H5O_read");
+ VERIFY(strcmp(name_mesg.s, "foo"), 0, "H5G_insert");
+ if (status_ptr)
+ H5O_reset(H5O_NAME, &name_mesg); /*free message data */
- /* now as `/foo' */
- HDmemset (&dir_ent, 0, sizeof(H5G_entry_t));
- HDmemset (&obj_ent, 0, sizeof(H5G_entry_t));
- status = H5G_find (f, "/foo", &dir_ent, &obj_ent);
- CHECK_I (status, "H5G_find");
- b = H5F_addr_defined (&(dir_ent.header));
- VERIFY (b, FALSE, "H5G_insert");
- b = H5F_addr_eq (&(obj_ent.header), &(ent1.header));
- VERIFY (b, TRUE, "H5G_insert");
+ /*
+ * Test 1E: Try to read the root object with the name `/' and `/foo'
+ */
+ HDmemset(&dir_ent, 0, sizeof(H5G_entry_t));
+ HDmemset(&obj_ent, 0, sizeof(H5G_entry_t));
+ status = H5G_find(f, "/", &dir_ent, &obj_ent);
+ CHECK_I(status, "H5G_find");
+ b = H5F_addr_defined(&(dir_ent.header));
+ VERIFY(b, FALSE, "H5G_insert");
+ b = H5F_addr_eq(&(obj_ent.header), &(ent1.header));
+ VERIFY(b, TRUE, "H5G_insert");
-
- /*
- * Test 1F: Create another object. This should create a root directory
- * and move the previous root object into that directory.
- */
+ /* now as `/foo' */
+ HDmemset(&dir_ent, 0, sizeof(H5G_entry_t));
+ HDmemset(&obj_ent, 0, sizeof(H5G_entry_t));
+ status = H5G_find(f, "/foo", &dir_ent, &obj_ent);
+ CHECK_I(status, "H5G_find");
+ b = H5F_addr_defined(&(dir_ent.header));
+ VERIFY(b, FALSE, "H5G_insert");
+ b = H5F_addr_eq(&(obj_ent.header), &(ent1.header));
+ VERIFY(b, TRUE, "H5G_insert");
- /* create the object */
- status = H5O_create (f, 0, &ent2);
- CHECK_I (status, "H5O_create");
- status = H5G_insert ("/second", &ent2);
- CHECK_I (status, "H5G_insert");
- status = H5O_close (&ent2);
- CHECK_I (status, "H5O_close");
+ /*
+ * Test 1F: Create another object. This should create a root directory
+ * and move the previous root object into that directory.
+ */
- /* try to read the first object */
- HDmemset (&obj_ent, 0, sizeof(H5G_entry_t));
- status = H5G_find (f, "/foo", NULL, &obj_ent);
- CHECK_I (status, "H5G_find");
- b = H5F_addr_eq (&(obj_ent.header), &(ent1.header));
- VERIFY (b, TRUE, "H5G_insert");
+ /* create the object */
+ status = H5O_create(f, 0, &ent2);
+ CHECK_I(status, "H5O_create");
+ status = H5G_insert("/second", &ent2);
+ CHECK_I(status, "H5G_insert");
+ status = H5O_close(&ent2);
+ CHECK_I(status, "H5O_close");
- /* the first object should not have a name message */
- status_ptr = H5O_read (&ent1, H5O_NAME, 0, &name_mesg);
- VERIFY (status_ptr, NULL, "H5O_read [didn't fail but should have]");
+ /* try to read the first object */
+ HDmemset(&obj_ent, 0, sizeof(H5G_entry_t));
+ status = H5G_find(f, "/foo", NULL, &obj_ent);
+ CHECK_I(status, "H5G_find");
+ b = H5F_addr_eq(&(obj_ent.header), &(ent1.header));
+ VERIFY(b, TRUE, "H5G_insert");
- /* close the file */
- status = H5Fclose (fid);
- CHECK_I (status, "H5Fclose");
-}
+ /* the first object should not have a name message */
+ status_ptr = H5O_read(&ent1, H5O_NAME, 0, &name_mesg);
+ VERIFY(status_ptr, NULL, "H5O_read [didn't fail but should have]");
+ /* close the file */
+ status = H5Fclose(fid);
+ CHECK_I(status, "H5Fclose");
+}
/*-------------------------------------------------------------------------
- * Function: test_2
+ * Function: test_2
*
- * Purpose: Creates a really large directory.
+ * Purpose: Creates a really large directory.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * robb@maya.nuance.com
- * Aug 29 1997
+ * Programmer: Robb Matzke
+ * robb@maya.nuance.com
+ * Aug 29 1997
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
static void
-test_2 (void)
+test_2(void)
{
- hid_t fid, props, dir;
- H5F_t *f;
- int i;
- char name[256];
- herr_t status;
- int nsyms = 5000;
-
- MESSAGE (2, ("........large directories\n"));
+ hid_t fid, props, dir;
+ H5F_t *f;
+ int i;
+ char name[256];
+ herr_t status;
+ int nsyms = 5000;
- /*
- * Use larger symbol table data structures to be more efficient, use
- * defaults to bang harder on the library for testing.
- */
- props = H5Ccreate (H5C_FILE_CREATE);
+ MESSAGE(2, ("........large directories\n"));
+
+ /*
+ * Use larger symbol table data structures to be more efficient, use
+ * defaults to bang harder on the library for testing.
+ */
+ props = H5Ccreate(H5C_FILE_CREATE);
#if 1
- H5Cset_sym_k (props, 16, 16);
+ H5Cset_sym_k(props, 16, 16);
#endif
- /* create the file */
- fid = H5Fcreate ("tstab2.h5", H5ACC_OVERWRITE, props, 0);
- CHECK (fid, FAIL, "H5Fcreate");
- f = H5Aatom_object (fid);
- CHECK (f, NULL, "H5Aatom_object");
- f->intent |= H5F_ACC_DEBUG;
+ /* create the file */
+ fid = H5Fcreate("tstab2.h5", H5ACC_OVERWRITE, props, 0);
+ CHECK(fid, FAIL, "H5Fcreate");
+ f = H5Aatom_object(fid);
+ CHECK(f, NULL, "H5Aatom_object");
+ f->intent |= H5F_ACC_DEBUG;
- /*
- * Create a directory that has so many entries that the root
- * of the B-tree ends up splitting.
- */
- dir = H5Gcreate (fid, "/big", nsyms*16+2);
- CHECK_I (dir, "H5Gcreate");
- status = H5Gclose (dir);
- CHECK_I (status, "H5Gclose");
- status = H5Gset (fid, "/big");
- CHECK_I (status, "H5Gset");
-
-
- for (i=0; i<nsyms; i++) {
- sprintf (name, "%05d%05d", rand()%100000, i);
- MESSAGE (8, ("%s\n", name));
- dir = H5Gcreate (fid, name, 0);
- CHECK_I (dir, "H5Gcreate");
- status = H5Gclose (dir);
- CHECK_I (status, "H5Gclose");
- }
-
- /* close the file */
- status = H5Fclose (fid);
- CHECK_I (status, "H5Fclose");
-}
+ /*
+ * Create a directory that has so many entries that the root
+ * of the B-tree ends up splitting.
+ */
+ dir = H5Gcreate(fid, "/big", nsyms * 16 + 2);
+ CHECK_I(dir, "H5Gcreate");
+ status = H5Gclose(dir);
+ CHECK_I(status, "H5Gclose");
+ status = H5Gset(fid, "/big");
+ CHECK_I(status, "H5Gset");
+ for (i = 0; i < nsyms; i++) {
+ sprintf(name, "%05d%05d", rand() % 100000, i);
+ MESSAGE(8, ("%s\n", name));
+ dir = H5Gcreate(fid, name, 0);
+ CHECK_I(dir, "H5Gcreate");
+ status = H5Gclose(dir);
+ CHECK_I(status, "H5Gclose");
+ }
+ /* close the file */
+ status = H5Fclose(fid);
+ CHECK_I(status, "H5Fclose");
+}
/*-------------------------------------------------------------------------
- * Function: test_stab
+ * Function: test_stab
*
- * Purpose: Test symbol tables
+ * Purpose: Test symbol tables
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * matzke@viper.llnl.gov
- * Aug 7 1997
+ * Programmer: Robb Matzke
+ * matzke@viper.llnl.gov
+ * Aug 7 1997
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
void
-test_stab (void)
+test_stab(void)
{
- test_1();
- test_2();
+ test_1();
+ test_2();
}