diff options
Diffstat (limited to 'test/stab.c')
-rw-r--r-- | test/stab.c | 577 |
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; } |