summaryrefslogtreecommitdiffstats
path: root/test/stab.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/stab.c')
-rw-r--r--test/stab.c577
1 files changed, 323 insertions, 254 deletions
diff --git a/test/stab.c b/test/stab.c
index b684f9e..59e2436 100644
--- a/test/stab.c
+++ b/test/stab.c
@@ -27,13 +27,18 @@
#include "H5HLprivate.h" /* Local Heaps */
const char *FILENAME[] = {
- "stab1",
- "stab2",
+ "stab",
NULL
};
#define NAME_BUF_SIZE 1024
+/* Definitions for 'long' test */
+#define LONG_NAME_LEN 40960
+
+/* Definitions for 'large' test */
+#define LARGE_NOBJS 5000
+
/* Definitions for 'lifecycle' test */
#define LIFECYCLE_TOP_GROUP "top"
#define LIFECYCLE_BOTTOM_GROUP "bottom %u"
@@ -80,54 +85,62 @@ const char *FILENAME[] = {
* Programmer: Robb Matzke
* Tuesday, November 24, 1998
*
- * Modifications:
- * Robb Matzke, 2002-03-28
- * File is opened by parent instead of here.
*-------------------------------------------------------------------------
*/
static int
-test_misc(hid_t file)
+test_misc(hid_t fapl, hbool_t new_format)
{
- hid_t g1=-1, g2=-1, g3=-1;
+ hid_t fid = (-1); /* File ID */
+ hid_t g1 = (-1), g2 = (-1), g3 = (-1);
+ char filename[NAME_BUF_SIZE];
char comment[64];
- /* Test current working groups */
- TESTING("miscellaneous group tests");
+ if(new_format)
+ TESTING("miscellaneous group tests (w/new group format)")
+ else
+ TESTING("miscellaneous group tests")
+
+ /* Create file */
+ h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
/* Create initial groups for testing, then close */
- if ((g1=H5Gcreate(file, "test_1a", 0))<0) goto error;
- if ((g2=H5Gcreate(g1, "sub_1", 0))<0) goto error;
- if ((g3=H5Gcreate(file, "test_1b", 0))<0) goto error;
- if (H5Gset_comment(g3, ".", "hello world")<0) goto error;
- if (H5Gclose(g1)<0) goto error;
- if (H5Gclose(g2)<0) goto error;
- if (H5Gclose(g3)<0) goto error;
+ if((g1 = H5Gcreate(fid, "test_1a", (size_t)0)) < 0) TEST_ERROR
+ if((g2 = H5Gcreate(g1, "sub_1", (size_t)0)) < 0) TEST_ERROR
+ if((g3 = H5Gcreate(fid, "test_1b", (size_t)0)) < 0) TEST_ERROR
+ if(H5Gset_comment(g3, ".", "hello world") < 0) TEST_ERROR
+ if(H5Gclose(g1) < 0) TEST_ERROR
+ if(H5Gclose(g2) < 0) TEST_ERROR
+ if(H5Gclose(g3) < 0) TEST_ERROR
/* Open all groups with absolute names to check for exsistence */
- if ((g1=H5Gopen(file, "/test_1a"))<0) goto error;
- if ((g2=H5Gopen(file, "/test_1a/sub_1"))<0) goto error;
- if ((g3=H5Gopen(file, "/test_1b"))<0) goto error;
- if (H5Gget_comment(g3, "././.", sizeof comment, comment)<0) goto error;
- if (strcmp(comment, "hello world")) {
+ if((g1 = H5Gopen(fid, "/test_1a")) < 0) TEST_ERROR
+ if((g2 = H5Gopen(fid, "/test_1a/sub_1")) < 0) TEST_ERROR
+ if((g3 = H5Gopen(fid, "/test_1b")) < 0) TEST_ERROR
+ if(H5Gget_comment(g3, "././.", sizeof comment, comment) < 0) TEST_ERROR
+ if(HDstrcmp(comment, "hello world")) {
H5_FAILED();
puts(" Read the wrong comment string from the group.");
printf(" got: \"%s\"\n ans: \"hello world\"\n", comment);
- goto error;
+ TEST_ERROR
}
- if (H5Gclose(g1)<0) goto error;
- if (H5Gclose(g2)<0) goto error;
- if (H5Gclose(g3)<0) goto error;
+ if(H5Gclose(g1) < 0) TEST_ERROR
+ if(H5Gclose(g2) < 0) TEST_ERROR
+ if(H5Gclose(g3) < 0) TEST_ERROR
/* Check that creating groups with no-op names isn't allowed */
H5E_BEGIN_TRY {
- g1=H5Gcreate(file, "/", 0);
+ g1 = H5Gcreate(fid, "/", (size_t)0);
} H5E_END_TRY
- if(g1 >= 0) goto error;
+ if(g1 >= 0) TEST_ERROR
H5E_BEGIN_TRY {
- g1=H5Gcreate(file, "./././", 0);
+ g1 = H5Gcreate(fid, "./././", (size_t)0);
} H5E_END_TRY
- if(g1 >= 0) goto error;
+ if(g1 >= 0) TEST_ERROR
+
+ /* Close file */
+ if(H5Fclose(fid) < 0) TEST_ERROR
PASSED();
return 0;
@@ -137,6 +150,7 @@ test_misc(hid_t file)
H5Gclose(g1);
H5Gclose(g2);
H5Gclose(g3);
+ H5Fclose(fid);
} H5E_END_TRY;
return 1;
}
@@ -155,33 +169,45 @@ test_misc(hid_t file)
*-------------------------------------------------------------------------
*/
static int
-test_long(hid_t file)
+test_long(hid_t fapl, hbool_t new_format)
{
- hid_t g1=-1, g2=-1;
- char *name1=NULL, *name2=NULL;
- size_t namesize=40960, i;
+ hid_t fid = (-1); /* File ID */
+ hid_t g1 = (-1), g2 = (-1);
+ char *name1 = NULL, *name2 = NULL;
+ char filename[NAME_BUF_SIZE];
+ size_t i;
- TESTING("long names");
+ if(new_format)
+ TESTING("long names (w/new group format)")
+ else
+ TESTING("long names")
+
+ /* Create file */
+ h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
/* Group names */
- name1 = HDmalloc(namesize);
- for (i=0; i<namesize; i++)
+ name1 = HDmalloc(LONG_NAME_LEN);
+ for(i = 0; i < LONG_NAME_LEN; i++)
name1[i] = (char)('A' + i%26);
- name1[namesize-1] = '\0';
- name2 = HDmalloc(2*namesize + 2);
+ name1[LONG_NAME_LEN - 1] = '\0';
+ name2 = HDmalloc((2 * LONG_NAME_LEN) + 2);
sprintf(name2, "%s/%s", name1, name1);
/* Create groups */
- if ((g1=H5Gcreate(file, name1, 0))<0) goto error;
- if ((g2=H5Gcreate(g1, name1, 0))<0) goto error;
- H5Gclose(g1);
- H5Gclose(g2);
+ if((g1 = H5Gcreate(fid, name1, (size_t)0)) < 0) TEST_ERROR
+ if((g2 = H5Gcreate(g1, name1, (size_t)0)) < 0) TEST_ERROR
+ if(H5Gclose(g1) < 0) TEST_ERROR
+ if(H5Gclose(g2) < 0) TEST_ERROR
/* Open groups */
- if ((g1=H5Gopen(file, name1))<0) goto error;
- if ((g2=H5Gopen(file, name2))<0) goto error;
- H5Gclose(g1);
- H5Gclose(g2);
+ if((g1 = H5Gopen(fid, name1)) < 0) TEST_ERROR
+ if((g2 = H5Gopen(fid, name2)) < 0) TEST_ERROR
+ if(H5Gclose(g1) < 0) TEST_ERROR
+ if(H5Gclose(g2) < 0) TEST_ERROR
+
+ /* Close file */
+ if(H5Fclose(fid) < 0) TEST_ERROR
/* Release name buffers */
HDfree(name2);
@@ -190,17 +216,16 @@ test_long(hid_t file)
PASSED();
return 0;
- error:
+error:
H5E_BEGIN_TRY {
H5Gclose(g1);
H5Gclose(g2);
- if(name2)
- free(name2);
- if(name1)
- free(name1);
+ H5Fclose(fid);
+ H5MM_xfree(name2);
+ H5MM_xfree(name1);
} H5E_END_TRY;
return 1;
-}
+} /* end test_long() */
/*-------------------------------------------------------------------------
@@ -222,29 +247,41 @@ test_long(hid_t file)
*-------------------------------------------------------------------------
*/
static int
-test_large(hid_t file)
+test_large(hid_t fapl, hbool_t new_format)
{
- hid_t cwg=-1, dir=-1;
- int i;
- char name[1024];
- int nsyms = 5000;
+ hid_t fid = (-1); /* File ID */
+ hid_t cwg = (-1), dir = (-1); /* Group IDs */
+ char filename[NAME_BUF_SIZE];
+ char name[NAME_BUF_SIZE];
+ int i;
- TESTING("large directories");
+ if(new_format)
+ TESTING("large directories (w/new group format)")
+ else
+ TESTING("large directories")
+
+ /* Create file */
+ h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
/*
* Create a directory that has so many entries that the root
* of the B-tree ends up splitting.
*/
- if ((cwg=H5Gcreate(file, "/big", (size_t)nsyms*16+2))<0) goto error;
- for (i=0; i<nsyms; i++) {
- sprintf(name, "%05d%05d", rand()%100000, i);
-#if 0
- fprintf(stderr, "%s\n", name);
-#endif
- if ((dir=H5Gcreate(cwg, name, 0))<0) goto error;
- if (H5Gclose(dir)<0) goto error;
+ if((cwg = H5Gcreate(fid, "/big", (size_t)(LARGE_NOBJS * 16 + 2))) < 0) TEST_ERROR
+ if(new_format)
+ if(H5G_has_stab_test(cwg) != FALSE) TEST_ERROR
+ for(i = 0; i < LARGE_NOBJS; i++) {
+ sprintf(name, "%05d%05d", (HDrandom() % 100000), i);
+ if((dir = H5Gcreate(cwg, name, (size_t)0)) < 0) TEST_ERROR
+ if(H5Gclose(dir) < 0) TEST_ERROR
}
- if (H5Gclose(cwg)<0) goto error;
+ if(new_format)
+ if(H5G_is_new_dense_test(cwg) != TRUE) TEST_ERROR
+ if(H5Gclose(cwg) < 0) TEST_ERROR
+
+ /* Close file */
+ if(H5Fclose(fid) < 0) TEST_ERROR
PASSED();
return 0;
@@ -253,11 +290,11 @@ test_large(hid_t file)
H5E_BEGIN_TRY {
H5Gclose(dir);
H5Gclose(cwg);
+ H5Fclose(fid);
} H5E_END_TRY;
return 1;
-}
+} /* end test_large() */
-#ifdef H5_GROUP_REVISION
/*-------------------------------------------------------------------------
* Function: lifecycle
@@ -282,6 +319,7 @@ lifecycle(hid_t fapl)
hid_t gid = (-1); /* Group ID */
hid_t gid2 = (-1); /* Datatype ID */
hid_t gcpl = (-1); /* Group creation property list ID */
+ hid_t fapl2 = (-1); /* File access property list ID */
size_t lheap_size_hint; /* Local heap size hint */
unsigned max_compact; /* Maximum # of links to store in group compactly */
unsigned min_dense; /* Minimum # of links to store in group "densely" */
@@ -297,68 +335,74 @@ lifecycle(hid_t fapl)
TESTING("group lifecycle");
+ /* Copy the file access property list */
+ if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
+
+ /* Set the "use the latest version of the format" flag for creating objects in the file */
+ if(H5Pset_latest_format(fapl2, TRUE) < 0) TEST_ERROR
+
/* Create file */
- h5_fixname(FILENAME[1], fapl, filename, sizeof(filename));
- if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR;
+ h5_fixname(FILENAME[0], fapl2, filename, sizeof(filename));
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl2)) < 0) TEST_ERROR
/* Close file */
- if(H5Fclose(fid) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR
/* Get size of file as empty */
- if((empty_size = h5_get_file_size(filename)) == 0) TEST_ERROR;
+ if((empty_size = h5_get_file_size(filename)) == 0) TEST_ERROR
/* Re-open file */
- if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0) TEST_ERROR;
+ if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl2)) < 0) TEST_ERROR
/* Set up group creation property list */
- if((gcpl = H5Pcreate(H5P_GROUP_CREATE)) < 0) TEST_ERROR;
+ if((gcpl = H5Pcreate(H5P_GROUP_CREATE)) < 0) TEST_ERROR
/* Query default group creation property settings */
- if(H5Pget_local_heap_size_hint(gcpl, &lheap_size_hint) < 0) TEST_ERROR;
- if(lheap_size_hint != H5G_CRT_GINFO_LHEAP_SIZE_HINT) TEST_ERROR;
- if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR;
- if(max_compact != H5G_CRT_GINFO_MAX_COMPACT) TEST_ERROR;
- if(min_dense != H5G_CRT_GINFO_MIN_DENSE) TEST_ERROR;
- if(H5Pget_est_link_info(gcpl, &est_num_entries, &est_name_len) < 0) TEST_ERROR;
- if(est_num_entries != H5G_CRT_GINFO_EST_NUM_ENTRIES) TEST_ERROR;
- if(est_name_len != H5G_CRT_GINFO_EST_NAME_LEN) TEST_ERROR;
+ if(H5Pget_local_heap_size_hint(gcpl, &lheap_size_hint) < 0) TEST_ERROR
+ if(lheap_size_hint != H5G_CRT_GINFO_LHEAP_SIZE_HINT) TEST_ERROR
+ if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR
+ if(max_compact != H5G_CRT_GINFO_MAX_COMPACT) TEST_ERROR
+ if(min_dense != H5G_CRT_GINFO_MIN_DENSE) TEST_ERROR
+ if(H5Pget_est_link_info(gcpl, &est_num_entries, &est_name_len) < 0) TEST_ERROR
+ if(est_num_entries != H5G_CRT_GINFO_EST_NUM_ENTRIES) TEST_ERROR
+ if(est_name_len != H5G_CRT_GINFO_EST_NAME_LEN) TEST_ERROR
/* Set GCPL parameters */
- if(H5Pset_local_heap_size_hint(gcpl, LIFECYCLE_LOCAL_HEAP_SIZE_HINT) < 0) TEST_ERROR;
- if(H5Pset_link_phase_change(gcpl, LIFECYCLE_MAX_COMPACT, LIFECYCLE_MIN_DENSE) < 0) TEST_ERROR;
- if(H5Pset_est_link_info(gcpl, LIFECYCLE_EST_NUM_ENTRIES, LIFECYCLE_EST_NAME_LEN) < 0) TEST_ERROR;
+ if(H5Pset_local_heap_size_hint(gcpl, (size_t)LIFECYCLE_LOCAL_HEAP_SIZE_HINT) < 0) TEST_ERROR
+ if(H5Pset_link_phase_change(gcpl, LIFECYCLE_MAX_COMPACT, LIFECYCLE_MIN_DENSE) < 0) TEST_ERROR
+ if(H5Pset_est_link_info(gcpl, LIFECYCLE_EST_NUM_ENTRIES, LIFECYCLE_EST_NAME_LEN) < 0) TEST_ERROR
/* Create group for testing lifecycle */
if((gid = H5Gcreate_expand(fid, gcpl, H5P_DEFAULT)) < 0) TEST_ERROR
if((H5Llink(fid, LIFECYCLE_TOP_GROUP, gid, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Query group creation property settings */
- if(H5Pget_local_heap_size_hint(gcpl, &lheap_size_hint) < 0) TEST_ERROR;
- if(lheap_size_hint != LIFECYCLE_LOCAL_HEAP_SIZE_HINT) TEST_ERROR;
- if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR;
- if(max_compact != LIFECYCLE_MAX_COMPACT) TEST_ERROR;
- if(min_dense != LIFECYCLE_MIN_DENSE) TEST_ERROR;
- if(H5Pget_est_link_info(gcpl, &est_num_entries, &est_name_len) < 0) TEST_ERROR;
- if(est_num_entries != LIFECYCLE_EST_NUM_ENTRIES) TEST_ERROR;
- if(est_name_len != LIFECYCLE_EST_NAME_LEN) TEST_ERROR;
+ if(H5Pget_local_heap_size_hint(gcpl, &lheap_size_hint) < 0) TEST_ERROR
+ if(lheap_size_hint != LIFECYCLE_LOCAL_HEAP_SIZE_HINT) TEST_ERROR
+ if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR
+ if(max_compact != LIFECYCLE_MAX_COMPACT) TEST_ERROR
+ if(min_dense != LIFECYCLE_MIN_DENSE) TEST_ERROR
+ if(H5Pget_est_link_info(gcpl, &est_num_entries, &est_name_len) < 0) TEST_ERROR
+ if(est_num_entries != LIFECYCLE_EST_NUM_ENTRIES) TEST_ERROR
+ if(est_name_len != LIFECYCLE_EST_NAME_LEN) TEST_ERROR
/* Use internal testing routine to check that the group has no links or symbol table */
- if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR
/* Create first "bottom" group */
sprintf(objname, LIFECYCLE_BOTTOM_GROUP, (unsigned)0);
if((gid2 = H5Gcreate(gid, objname, (size_t)0)) < 0) TEST_ERROR
/* Check on bottom group's status */
- if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR
/* Close bottom group */
if(H5Gclose(gid2) < 0) TEST_ERROR
/* Check on top group's status */
- if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR;
- if(H5G_has_links_test(gid, &nmsgs) != TRUE) TEST_ERROR;
- if(nmsgs != 1) TEST_ERROR;
+ if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
+ if(H5G_has_links_test(gid, &nmsgs) != TRUE) TEST_ERROR
+ if(nmsgs != 1) TEST_ERROR
/* Create several more bottom groups, to push the top group almost to a symbol table */
/* (Start counting at '1', since we've already created one bottom group */
@@ -367,55 +411,54 @@ lifecycle(hid_t fapl)
if((gid2 = H5Gcreate(gid, objname, (size_t)0)) < 0) TEST_ERROR
/* Check on bottom group's status */
- if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR
/* Close bottom group */
if(H5Gclose(gid2) < 0) TEST_ERROR
} /* end for */
/* Check on top group's status */
- if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR;
- if(H5G_has_links_test(gid, &nmsgs) != TRUE) TEST_ERROR;
- if(nmsgs != LIFECYCLE_MAX_COMPACT) TEST_ERROR;
+ if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
+ if(H5G_has_links_test(gid, &nmsgs) != TRUE) TEST_ERROR
+ if(nmsgs != LIFECYCLE_MAX_COMPACT) TEST_ERROR
+ if(H5G_is_new_dense_test(gid) != FALSE) TEST_ERROR
/* Check that the object header is only one chunk and the space has been allocated correctly */
- if(H5Gget_objinfo(gid, ".", FALSE, &obj_stat) < 0) TEST_ERROR;
+ if(H5Gget_objinfo(gid, ".", FALSE, &obj_stat) < 0) TEST_ERROR
#ifdef H5_HAVE_LARGE_HSIZET
- if(obj_stat.ohdr.size != 232) TEST_ERROR;
+ if(obj_stat.ohdr.size != 240) TEST_ERROR
#else /* H5_HAVE_LARGE_HSIZET */
- if(obj_stat.ohdr.size != 224) TEST_ERROR;
+ if(obj_stat.ohdr.size != 232) TEST_ERROR
#endif /* H5_HAVE_LARGE_HSIZET */
- if(obj_stat.ohdr.free != 0) TEST_ERROR;
- if(obj_stat.ohdr.nmesgs != 6) TEST_ERROR;
- if(obj_stat.ohdr.nchunks != 1) TEST_ERROR;
+ if(obj_stat.ohdr.free != 0) TEST_ERROR
+ if(obj_stat.ohdr.nmesgs != 6) TEST_ERROR
+ if(obj_stat.ohdr.nchunks != 1) TEST_ERROR
/* Create one more "bottom" group, which should push top group into using a symbol table */
sprintf(objname, LIFECYCLE_BOTTOM_GROUP, u);
if((gid2 = H5Gcreate(gid, objname, (size_t)0)) < 0) TEST_ERROR
/* Check on bottom group's status */
- if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR
/* Close bottom group */
if(H5Gclose(gid2) < 0) TEST_ERROR
/* Check on top group's status */
- if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR;
- if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR;
- if(H5G_has_stab_test(gid) != TRUE) TEST_ERROR;
- if(H5G_lheap_size_test(gid, &lheap_size_hint) < 0) TEST_ERROR;
- if(lheap_size_hint != LIFECYCLE_LOCAL_HEAP_SIZE_HINT) TEST_ERROR;
+ if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
+ if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
+ if(H5G_is_new_dense_test(gid) != TRUE) TEST_ERROR
/* Check that the object header is still one chunk and the space has been allocated correctly */
- if(H5Gget_objinfo(gid, ".", FALSE, &obj_stat) < 0) TEST_ERROR;
+ if(H5Gget_objinfo(gid, ".", FALSE, &obj_stat) < 0) TEST_ERROR
#ifdef H5_HAVE_LARGE_HSIZET
- if(obj_stat.ohdr.size != 232) TEST_ERROR;
+ if(obj_stat.ohdr.size != 240) TEST_ERROR
#else /* H5_HAVE_LARGE_HSIZET */
- if(obj_stat.ohdr.size != 224) TEST_ERROR;
+ if(obj_stat.ohdr.size != 232) TEST_ERROR
#endif /* H5_HAVE_LARGE_HSIZET */
- if(obj_stat.ohdr.free != 136) TEST_ERROR;
- if(obj_stat.ohdr.nmesgs != 4) TEST_ERROR;
- if(obj_stat.ohdr.nchunks != 1) TEST_ERROR;
+ if(obj_stat.ohdr.free != 128) TEST_ERROR
+ if(obj_stat.ohdr.nmesgs != 3) TEST_ERROR
+ if(obj_stat.ohdr.nchunks != 1) TEST_ERROR
/* Unlink objects from top group */
while(u >= LIFECYCLE_MIN_DENSE) {
@@ -427,9 +470,9 @@ lifecycle(hid_t fapl)
} /* end while */
/* Check on top group's status */
- if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR;
- if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR;
- if(H5G_has_stab_test(gid) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
+ if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
+ if(H5G_is_new_dense_test(gid) != TRUE) TEST_ERROR
/* Unlink one more object from the group, which should transform back to using links */
sprintf(objname, LIFECYCLE_BOTTOM_GROUP, u);
@@ -437,9 +480,9 @@ lifecycle(hid_t fapl)
u--;
/* Check on top group's status */
- if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR;
- if(H5G_has_links_test(gid, &nmsgs) != TRUE) TEST_ERROR;
- if(nmsgs != (LIFECYCLE_MIN_DENSE - 1)) TEST_ERROR;
+ if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
+ if(H5G_has_links_test(gid, &nmsgs) != TRUE) TEST_ERROR
+ if(nmsgs != (LIFECYCLE_MIN_DENSE - 1)) TEST_ERROR
/* Unlink last two objects from top group */
sprintf(objname, LIFECYCLE_BOTTOM_GROUP, u);
@@ -449,25 +492,28 @@ lifecycle(hid_t fapl)
if(H5Gunlink(gid, objname) < 0) TEST_ERROR
/* Check on top group's status */
- if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR
/* Close top group */
- if(H5Gclose(gid) < 0) TEST_ERROR;
+ if(H5Gclose(gid) < 0) TEST_ERROR
/* Unlink top group */
if(H5Gunlink(fid, LIFECYCLE_TOP_GROUP) < 0) TEST_ERROR
/* Close GCPL */
- if(H5Pclose(gcpl) < 0) TEST_ERROR;
+ if(H5Pclose(gcpl) < 0) TEST_ERROR
+
+ /* Close FAPL copy */
+ if(H5Pclose(fapl2) < 0) TEST_ERROR
/* Close file */
- if(H5Fclose(fid) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR
/* Get size of file as empty */
- if((file_size = h5_get_file_size(filename)) == 0) TEST_ERROR;
+ if((file_size = h5_get_file_size(filename)) == 0) TEST_ERROR
/* Verify that file is correct size */
- if(file_size != empty_size) TEST_ERROR;
+ if(file_size != empty_size) TEST_ERROR
PASSED();
@@ -475,6 +521,7 @@ lifecycle(hid_t fapl)
error:
H5E_BEGIN_TRY {
+ H5Pclose(fapl2);
H5Gclose(gcpl);
H5Gclose(gid2);
H5Gclose(gid);
@@ -505,6 +552,7 @@ long_compact(hid_t fapl)
hid_t fid = (-1); /* File ID */
hid_t gid = (-1); /* Group ID */
hid_t gid2 = (-1); /* Group ID */
+ hid_t fapl2 = (-1); /* File access property list ID */
char *objname; /* Object name */
char filename[NAME_BUF_SIZE];
off_t empty_size; /* Size of an empty file */
@@ -512,9 +560,15 @@ long_compact(hid_t fapl)
TESTING("long link names in compact groups");
+ /* Copy the file access property list */
+ if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
+
+ /* Set the "use the latest version of the format" flag for creating objects in the file */
+ if(H5Pset_latest_format(fapl2, TRUE) < 0) TEST_ERROR
+
/* Create file */
- h5_fixname(FILENAME[1], fapl, filename, sizeof(filename));
- if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
+ h5_fixname(FILENAME[0], fapl2, filename, sizeof(filename));
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl2)) < 0) TEST_ERROR
/* Close file */
if(H5Fclose(fid) < 0) TEST_ERROR
@@ -523,17 +577,17 @@ long_compact(hid_t fapl)
if((empty_size = h5_get_file_size(filename)) == 0) TEST_ERROR
/* Construct very long object name template */
- if((objname = HDmalloc(LONG_COMPACT_LENGTH+1)) == NULL) TEST_ERROR
- HDmemset(objname, 'a', LONG_COMPACT_LENGTH);
+ if((objname = HDmalloc((size_t)(LONG_COMPACT_LENGTH + 1))) == NULL) TEST_ERROR
+ HDmemset(objname, 'a', (size_t)LONG_COMPACT_LENGTH);
objname[LONG_COMPACT_LENGTH] = '\0';
/* Re-open file */
- if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0) TEST_ERROR
+ if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl2)) < 0) TEST_ERROR
/* Create top group */
if((gid = H5Gcreate(fid, "top", (size_t)0)) < 0) TEST_ERROR
- /* Use internal testing routine to check that the group has no links or symbol table */
+ /* Use internal testing routine to check that the group has no links or dense storage */
if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR
/* Create first group with "long" name */
@@ -546,43 +600,43 @@ long_compact(hid_t fapl)
if(H5Gclose(gid2) < 0) TEST_ERROR
/* Check on top group's status */
- /* (Should have symbol table to hold links, since name is too long for object header message) */
+ /* (Should have dense storage to hold links, since name is too long for object header message) */
if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
- if(H5G_has_stab_test(gid) != TRUE) TEST_ERROR
+ if(H5G_is_new_dense_test(gid) != TRUE) TEST_ERROR
/* Create second group with "long" name */
objname[0] = 'b';
if((gid2 = H5Gcreate(gid, objname, (size_t)0)) < 0) TEST_ERROR
/* Check on bottom group's status */
- if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR
/* Close bottom group */
if(H5Gclose(gid2) < 0) TEST_ERROR
/* Check on top group's status */
- /* (Should have symbol table to hold links, since name is too long for object header message) */
+ /* (Should have dense storage to hold links, since name is too long for object header message) */
if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
- if(H5G_has_stab_test(gid) != TRUE) TEST_ERROR
+ if(H5G_is_new_dense_test(gid) != TRUE) TEST_ERROR
/* Unlink second object from top group */
if(H5Gunlink(gid, objname) < 0) TEST_ERROR
/* Check on top group's status */
- /* (Should still be symbol table to hold links, since name is too long for object header message) */
+ /* (Should still be dense storage to hold links, since name is too long for object header message) */
if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
- if(H5G_has_stab_test(gid) != TRUE) TEST_ERROR
+ if(H5G_is_new_dense_test(gid) != TRUE) TEST_ERROR
/* Unlink first object from top group */
objname[0] = 'a';
if(H5Gunlink(gid, objname) < 0) TEST_ERROR
/* Check on top group's status */
- /* (Should have deleted the symbol table now) */
- if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR;
+ /* (Should have deleted the dense storage now) */
+ if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR
/* Free object name */
HDfree(objname);
@@ -593,20 +647,24 @@ long_compact(hid_t fapl)
/* Unlink top group */
if(H5Gunlink(fid, "top") < 0) TEST_ERROR
+ /* Close FAPL copy */
+ if(H5Pclose(fapl2) < 0) TEST_ERROR
+
/* Close file */
if(H5Fclose(fid) < 0) TEST_ERROR
/* Get size of file as empty */
- if((file_size = h5_get_file_size(filename)) == 0) TEST_ERROR;
+ if((file_size = h5_get_file_size(filename)) == 0) TEST_ERROR
/* Verify that file is correct size */
- if(file_size != empty_size) TEST_ERROR;
+ if(file_size != empty_size) TEST_ERROR
PASSED();
return 0;
error:
H5E_BEGIN_TRY {
+ H5Pclose(fapl2);
H5Gclose(gid2);
H5Gclose(gid);
H5Fclose(fid);
@@ -641,7 +699,7 @@ read_old(hid_t fapl)
char objname[NAME_BUF_SIZE]; /* Object name */
unsigned u; /* Local index variable */
char *srcdir = HDgetenv("srcdir"); /* where the src code is located */
- char filename[512]=""; /* old test file name */
+ char filename[512] = ""; /* old test file name */
char filename2[NAME_BUF_SIZE]; /* copy of old test file */
TESTING("reading old groups");
@@ -654,7 +712,7 @@ read_old(hid_t fapl)
HDstrcat(filename, FILE_OLD_GROUPS);
/* Create filename */
- h5_fixname(FILENAME[1], fapl, filename2, sizeof(filename2));
+ h5_fixname(FILENAME[0], fapl, filename2, sizeof(filename2));
/* Copy old file into temporary file */
if((fd_old = HDopen(filename, O_RDONLY, 0666)) < 0) TEST_ERROR
@@ -676,7 +734,7 @@ read_old(hid_t fapl)
if((gid = H5Gopen(fid, "old")) < 0) TEST_ERROR
/* Check on old group's status */
- if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
+ if(H5G_is_empty_test(gid) == FALSE) TEST_ERROR
if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
if(H5G_has_stab_test(gid) != TRUE) TEST_ERROR
@@ -705,16 +763,16 @@ read_old(hid_t fapl)
} /* end for */
/* Check on old group's status */
- /* (Should stay in old "symbol table" form) */
- if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
+ /* (Should stay in old "symbol table" form, but have no links) */
+ if(H5G_is_empty_test(gid) == FALSE) TEST_ERROR
if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
if(H5G_has_stab_test(gid) != TRUE) TEST_ERROR
/* Close old group */
- if(H5Gclose(gid) < 0) TEST_ERROR;
+ if(H5Gclose(gid) < 0) TEST_ERROR
/* Close first file */
- if(H5Fclose(fid)<0) TEST_ERROR;
+ if(H5Fclose(fid)<0) TEST_ERROR
PASSED();
return 0;
@@ -750,93 +808,95 @@ no_compact(hid_t fapl)
hid_t gid = (-1); /* Group ID */
hid_t gid2 = (-1); /* Datatype ID */
hid_t gcpl = (-1); /* Group creation property list ID */
+ hid_t fapl2 = (-1); /* File access property list ID */
char objname[NAME_BUF_SIZE]; /* Object name */
char filename[NAME_BUF_SIZE];
off_t empty_size; /* Size of an empty file */
off_t file_size; /* Size of each file created */
- size_t lheap_size_hint; /* Local heap size */
- size_t def_lheap_size; /* Default local heap size */
unsigned est_num_entries; /* Estimated # of entries in group */
unsigned est_name_len; /* Estimated length of entry name */
TESTING("group without compact form");
+ /* Copy the file access property list */
+ if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
+
+ /* Set the "use the latest version of the format" flag for creating objects in the file */
+ if(H5Pset_latest_format(fapl2, TRUE) < 0) TEST_ERROR
+
/* Create file */
- h5_fixname(FILENAME[1], fapl, filename, sizeof(filename));
- if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR;
+ h5_fixname(FILENAME[0], fapl2, filename, sizeof(filename));
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl2)) < 0) TEST_ERROR
/* Close file */
- if(H5Fclose(fid) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR
/* Get size of file as empty */
- if((empty_size = h5_get_file_size(filename)) == 0) TEST_ERROR;
+ if((empty_size = h5_get_file_size(filename)) == 0) TEST_ERROR
/* Re-open file */
- if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0) TEST_ERROR;
+ if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl2)) < 0) TEST_ERROR
/* Set up group creation property list */
- if((gcpl = H5Pcreate(H5P_GROUP_CREATE)) < 0) TEST_ERROR;
+ if((gcpl = H5Pcreate(H5P_GROUP_CREATE)) < 0) TEST_ERROR
/* Set GCPL parameters */
- if(H5Pset_link_phase_change(gcpl, NO_COMPACT_MAX_COMPACT, NO_COMPACT_MIN_DENSE) < 0) TEST_ERROR;
+ if(H5Pset_link_phase_change(gcpl, NO_COMPACT_MAX_COMPACT, NO_COMPACT_MIN_DENSE) < 0) TEST_ERROR
- /* Check information for default local heap creation */
- if(H5Pget_local_heap_size_hint(gcpl, &lheap_size_hint) < 0) TEST_ERROR;
- if(lheap_size_hint != H5G_CRT_GINFO_LHEAP_SIZE_HINT) TEST_ERROR;
- if(H5Pget_est_link_info(gcpl, &est_num_entries, &est_name_len) < 0) TEST_ERROR;
- if(est_num_entries != H5G_CRT_GINFO_EST_NUM_ENTRIES) TEST_ERROR;
- if(est_name_len != H5G_CRT_GINFO_EST_NAME_LEN) TEST_ERROR;
+ /* Check information for default group creation */
+ if(H5Pget_est_link_info(gcpl, &est_num_entries, &est_name_len) < 0) TEST_ERROR
+ if(est_num_entries != H5G_CRT_GINFO_EST_NUM_ENTRIES) TEST_ERROR
+ if(est_name_len != H5G_CRT_GINFO_EST_NAME_LEN) TEST_ERROR
- /* Create group for testing lifecycle */
+ /* Create group for testing no compact form */
if((gid = H5Gcreate_expand(fid, gcpl, H5P_DEFAULT)) < 0) TEST_ERROR
if((H5Llink(fid, NO_COMPACT_TOP_GROUP, gid, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Close GCPL */
- if(H5Pclose(gcpl) < 0) TEST_ERROR;
+ if(H5Pclose(gcpl) < 0) TEST_ERROR
- /* Use internal testing routine to check that the group has no links or symbol table */
- if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR;
+ /* Use internal testing routine to check that the group has no links or dense storage */
+ if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR
/* Create first "bottom" group */
sprintf(objname, NO_COMPACT_BOTTOM_GROUP, (unsigned)0);
if((gid2 = H5Gcreate(gid, objname, (size_t)0)) < 0) TEST_ERROR
/* Check on bottom group's status */
- if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid2) != TRUE) TEST_ERROR
/* Close bottom group */
if(H5Gclose(gid2) < 0) TEST_ERROR
/* Check on top group's status */
- if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR;
- if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR;
- if(H5G_has_stab_test(gid) != TRUE) TEST_ERROR;
- if(H5G_lheap_size_test(gid, &lheap_size_hint) < 0) TEST_ERROR;
- def_lheap_size = est_num_entries * (est_name_len + 1);
- def_lheap_size = H5HL_ALIGN(def_lheap_size);
- if(lheap_size_hint != def_lheap_size) TEST_ERROR;
+ if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
+ if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
+ if(H5G_is_new_dense_test(gid) != TRUE) TEST_ERROR
/* Unlink object from top group */
sprintf(objname, NO_COMPACT_BOTTOM_GROUP, (unsigned)0);
if(H5Gunlink(gid, objname) < 0) TEST_ERROR
/* Check on top group's status */
- if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR;
+ if(H5G_is_empty_test(gid) != TRUE) TEST_ERROR
/* Close top group */
- if(H5Gclose(gid) < 0) TEST_ERROR;
+ if(H5Gclose(gid) < 0) TEST_ERROR
/* Unlink top group */
if(H5Gunlink(fid, NO_COMPACT_TOP_GROUP) < 0) TEST_ERROR
+ /* Close FAPL copy */
+ if(H5Pclose(fapl2) < 0) TEST_ERROR
+
/* Close file */
- if(H5Fclose(fid) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR
/* Get size of file as empty */
- if((file_size = h5_get_file_size(filename)) == 0) TEST_ERROR;
+ if((file_size = h5_get_file_size(filename)) == 0) TEST_ERROR
/* Verify that file is correct size */
- if(file_size != empty_size) TEST_ERROR;
+ if(file_size != empty_size) TEST_ERROR
PASSED();
@@ -844,6 +904,7 @@ no_compact(hid_t fapl)
error:
H5E_BEGIN_TRY {
+ H5Pclose(fapl2);
H5Gclose(gcpl);
H5Gclose(gid2);
H5Gclose(gid);
@@ -874,6 +935,7 @@ gcpl_on_root(hid_t fapl)
hid_t gid = (-1); /* Group ID */
hid_t gid2 = (-1); /* Datatype ID */
hid_t fcpl = (-1); /* File creation property list ID */
+ hid_t fapl2 = (-1); /* File access property list ID */
hid_t gcpl = (-1); /* Group creation property list ID */
hid_t lcpl = (-1); /* Link creation property list ID */
unsigned max_compact; /* Maximum # of links to store in group compactly */
@@ -882,40 +944,46 @@ gcpl_on_root(hid_t fapl)
TESTING("setting root group creation properties");
+ /* Copy the file access property list */
+ if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
+
+ /* Set the "use the latest version of the format" flag for creating objects in the file */
+ if(H5Pset_latest_format(fapl2, TRUE) < 0) TEST_ERROR
+
/* Create file */
- h5_fixname(FILENAME[1], fapl, filename, sizeof(filename));
+ h5_fixname(FILENAME[0], fapl2, filename, sizeof(filename));
/* Set up file creation property list */
- if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR;
+ if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR
/* Set GCPL parameters */
- if(H5Pset_link_phase_change(fcpl, GCPL_ON_ROOT_MAX_COMPACT, GCPL_ON_ROOT_MIN_DENSE) < 0) TEST_ERROR;
+ if(H5Pset_link_phase_change(fcpl, GCPL_ON_ROOT_MAX_COMPACT, GCPL_ON_ROOT_MIN_DENSE) < 0) TEST_ERROR
/* Query the group creation properties from the FCPL */
- if(H5Pget_link_phase_change(fcpl, &max_compact, &min_dense) < 0) TEST_ERROR;
- if(max_compact != GCPL_ON_ROOT_MAX_COMPACT) TEST_ERROR;
- if(min_dense != GCPL_ON_ROOT_MIN_DENSE) TEST_ERROR;
+ if(H5Pget_link_phase_change(fcpl, &max_compact, &min_dense) < 0) TEST_ERROR
+ if(max_compact != GCPL_ON_ROOT_MAX_COMPACT) TEST_ERROR
+ if(min_dense != GCPL_ON_ROOT_MIN_DENSE) TEST_ERROR
/* Create file with modified root group creation properties */
- if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) TEST_ERROR;
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl2)) < 0) TEST_ERROR
/* Close FCPL */
- if(H5Pclose(fcpl) < 0) TEST_ERROR;
+ if(H5Pclose(fcpl) < 0) TEST_ERROR
/* Open the root group */
- if((gid = H5Gopen(fid, "/")) < 0) TEST_ERROR;
+ if((gid = H5Gopen(fid, "/")) < 0) TEST_ERROR
/* Query the group creation properties */
- if((gcpl = H5Gget_create_plist(gid)) < 0) TEST_ERROR;
- if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR;
- if(max_compact != GCPL_ON_ROOT_MAX_COMPACT) TEST_ERROR;
- if(min_dense != GCPL_ON_ROOT_MIN_DENSE) TEST_ERROR;
+ if((gcpl = H5Gget_create_plist(gid)) < 0) TEST_ERROR
+ if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR
+ if(max_compact != GCPL_ON_ROOT_MAX_COMPACT) TEST_ERROR
+ if(min_dense != GCPL_ON_ROOT_MIN_DENSE) TEST_ERROR
/* Close GCPL */
- if(H5Pclose(gcpl) < 0) TEST_ERROR;
+ if(H5Pclose(gcpl) < 0) TEST_ERROR
/* Create a link creation property list, with intermediate group creation set */
- if((lcpl = H5Pcreate(H5P_LINK_CREATE)) < 0) TEST_ERROR;
+ if((lcpl = H5Pcreate(H5P_LINK_CREATE)) < 0) TEST_ERROR
if(H5Pset_create_intermediate_group(lcpl, TRUE) < 0) TEST_ERROR
/* Create a group and intermediate groups, to check if root group settings are inherited */
@@ -923,40 +991,43 @@ gcpl_on_root(hid_t fapl)
if((H5Llink(fid, GCPL_ON_ROOT_BOTTOM_GROUP, gid2, lcpl, H5P_DEFAULT)) < 0) TEST_ERROR
/* Close LCPL */
- if(H5Pclose(lcpl) < 0) TEST_ERROR;
+ if(H5Pclose(lcpl) < 0) TEST_ERROR
/* Query the group creation properties */
- if((gcpl = H5Gget_create_plist(gid2)) < 0) TEST_ERROR;
- if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR;
- if(max_compact != H5G_CRT_GINFO_MAX_COMPACT) TEST_ERROR;
- if(min_dense != H5G_CRT_GINFO_MIN_DENSE) TEST_ERROR;
+ if((gcpl = H5Gget_create_plist(gid2)) < 0) TEST_ERROR
+ if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR
+ if(max_compact != H5G_CRT_GINFO_MAX_COMPACT) TEST_ERROR
+ if(min_dense != H5G_CRT_GINFO_MIN_DENSE) TEST_ERROR
/* Close GCPL */
- if(H5Pclose(gcpl) < 0) TEST_ERROR;
+ if(H5Pclose(gcpl) < 0) TEST_ERROR
/* Close bottom group */
- if(H5Gclose(gid2) < 0) TEST_ERROR;
+ if(H5Gclose(gid2) < 0) TEST_ERROR
/* Open the middle group */
- if((gid2 = H5Gopen(fid, GCPL_ON_ROOT_MIDDLE_GROUP)) < 0) TEST_ERROR;
+ if((gid2 = H5Gopen(fid, GCPL_ON_ROOT_MIDDLE_GROUP)) < 0) TEST_ERROR
/* Query the group creation properties */
- if((gcpl = H5Gget_create_plist(gid2)) < 0) TEST_ERROR;
- if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR;
- if(max_compact != GCPL_ON_ROOT_MAX_COMPACT) TEST_ERROR;
- if(min_dense != GCPL_ON_ROOT_MIN_DENSE) TEST_ERROR;
+ if((gcpl = H5Gget_create_plist(gid2)) < 0) TEST_ERROR
+ if(H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) TEST_ERROR
+ if(max_compact != GCPL_ON_ROOT_MAX_COMPACT) TEST_ERROR
+ if(min_dense != GCPL_ON_ROOT_MIN_DENSE) TEST_ERROR
/* Close GCPL */
- if(H5Pclose(gcpl) < 0) TEST_ERROR;
+ if(H5Pclose(gcpl) < 0) TEST_ERROR
/* Close bottom group */
- if(H5Gclose(gid2) < 0) TEST_ERROR;
+ if(H5Gclose(gid2) < 0) TEST_ERROR
/* Close root group */
- if(H5Gclose(gid) < 0) TEST_ERROR;
+ if(H5Gclose(gid) < 0) TEST_ERROR
+
+ /* Close FAPL copy */
+ if(H5Pclose(fapl2) < 0) TEST_ERROR
/* Close file */
- if(H5Fclose(fid) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR
PASSED();
@@ -968,12 +1039,12 @@ error:
H5Gclose(gcpl);
H5Gclose(gid2);
H5Gclose(gid);
+ H5Pclose(fapl2);
H5Gclose(fcpl);
H5Fclose(fid);
} H5E_END_TRY;
return 1;
} /* end gcpl_on_root() */
-#endif /* H5_GROUP_REVISION */
/*-------------------------------------------------------------------------
@@ -995,60 +1066,58 @@ error:
int
main(void)
{
- hid_t fapl, fcpl, file;
- int nerrors=0;
- char filename[1024];
const char *envval = NULL;
/* Don't run this test using the split file driver */
envval = HDgetenv("HDF5_DRIVER");
- if (envval == NULL)
+ if(envval == NULL)
envval = "nomatch";
- if (HDstrcmp(envval, "split")) {
+ if(HDstrcmp(envval, "split")) {
+ hid_t fapl, fapl2; /* File access property list IDs */
+ int nerrors = 0;
+
/* Reset library */
h5_reset();
fapl = h5_fileaccess();
- /*
- * Use larger symbol table data structures to be more efficient, use
- * defaults to bang harder on the library for testing.
- */
- fcpl = H5Pcreate(H5P_FILE_CREATE);
-#if 0
- H5Pset_sym_k(fcpl, 16, 16);
-#endif
-
- /* Open the file */
- h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
- if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl))<0)
- goto error;
-
- /* Perform tests */
- nerrors += test_misc(file);
- nerrors += test_long(file);
- nerrors += test_large(file);
-#ifdef H5_GROUP_REVISION
+ /* Copy the file access property list */
+ if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
+
+ /* Set the "use the latest version of the format" flag for creating objects in the file */
+ if(H5Pset_latest_format(fapl2, TRUE) < 0) TEST_ERROR
+
+ /* Perform basic tests, with old & new style groups */
+ nerrors += test_misc(fapl, FALSE); /* with old-style group */
+ nerrors += test_misc(fapl2, TRUE); /* with new-style group */
+ nerrors += test_long(fapl, FALSE); /* with old-style group */
+ nerrors += test_long(fapl2, TRUE); /* with new-style group */
+ nerrors += test_large(fapl, FALSE); /* with old-style group */
+ nerrors += test_large(fapl2, TRUE); /* with new-style group */
+
+ /* New format group specific tests (require new format features) */
nerrors += lifecycle(fapl);
nerrors += long_compact(fapl);
nerrors += read_old(fapl);
nerrors += no_compact(fapl);
nerrors += gcpl_on_root(fapl);
-#endif /* H5_GROUP_REVISION */
- if (nerrors) goto error;
+
+ /* Close 2nd FAPL */
+ H5Pclose(fapl2);
+
+ /* Check for test errors */
+ if(nerrors)
+ goto error;
/* Cleanup */
- H5Fclose(file);
puts("All symbol table tests passed.");
h5_cleanup(FILENAME, fapl);
- }
+ } /* end if */
else
- {
puts("All symbol table tests skipped - Incompatible with current Virtual File Driver");
- }
return 0;
- error:
- puts("*** TESTS FAILED ***");
- return 1;
+error:
+ puts("*** TESTS FAILED ***");
+ return 1;
}