summaryrefslogtreecommitdiffstats
path: root/test/API/tmisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/API/tmisc.c')
-rw-r--r--test/API/tmisc.c6343
1 files changed, 0 insertions, 6343 deletions
diff --git a/test/API/tmisc.c b/test/API/tmisc.c
deleted file mode 100644
index 4c87425..0000000
--- a/test/API/tmisc.c
+++ /dev/null
@@ -1,6343 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the COPYING file, which can be found at the root of the source code *
- * distribution tree, or in https://www.hdfgroup.org/licenses. *
- * If you do not have access to either file, you may request a copy from *
- * help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/***********************************************************
- *
- * Test program: tmisc
- *
- * Test miscellaneous features not tested elsewhere. Generally
- * regression tests for bugs that are reported and don't
- * have an existing test to add them to.
- *
- *************************************************************/
-
-#define H5D_FRIEND /*suppress error about including H5Dpkg */
-
-/* Define this macro to indicate that the testing APIs should be available */
-#define H5D_TESTING
-
-#include "testhdf5.h"
-/* #include "H5srcdir.h" */
-/* #include "H5Dpkg.h" */ /* Datasets */
-/* #include "H5MMprivate.h" */ /* Memory */
-
-/* Definitions for misc. test #1 */
-#define MISC1_FILE "tmisc1.h5"
-#define MISC1_VAL (13417386) /* 0xccbbaa */
-#define MISC1_VAL2 (15654348) /* 0xeeddcc */
-#define MISC1_DSET_NAME "/scalar_set"
-
-/* Definitions for misc. test #2 */
-#define MISC2_FILE_1 "tmisc2a.h5"
-#define MISC2_FILE_2 "tmisc2b.h5"
-#define MISC2_ATT_NAME_1 "scalar_att_1"
-#define MISC2_ATT_NAME_2 "scalar_att_2"
-
-typedef struct {
- char *string;
-} misc2_struct;
-
-/* Definitions for misc. test #3 */
-#define MISC3_FILE "tmisc3.h5"
-#define MISC3_RANK 2
-#define MISC3_DIM1 6
-#define MISC3_DIM2 6
-#define MISC3_CHUNK_DIM1 2
-#define MISC3_CHUNK_DIM2 2
-#define MISC3_FILL_VALUE 2
-#define MISC3_DSET_NAME "/chunked"
-
-/* Definitions for misc. test #4 */
-#define MISC4_FILE_1 "tmisc4a.h5"
-#define MISC4_FILE_2 "tmisc4b.h5"
-#define MISC4_GROUP_1 "/Group1"
-#define MISC4_GROUP_2 "/Group2"
-
-/* Definitions for misc. test #5 */
-#define MISC5_FILE "tmisc5.h5"
-#define MISC5_DSETNAME "dset1"
-#define MISC5_DSETRANK 1
-#define MISC5_NELMTOPLVL 1
-#define MISC5_DBGNELM1 2
-#define MISC5_DBGNELM2 1
-#define MISC5_DBGNELM3 1
-#define MISC5_DBGELVAL1 999999999
-#define MISC5_DBGELVAL2 888888888
-#define MISC5_DBGELVAL3 777777777
-
-typedef struct {
- int st1_el1;
- hvl_t st1_el2;
-} misc5_struct1;
-
-typedef struct {
- int st2_el1;
- hvl_t st2_el2;
-} misc5_struct2;
-
-typedef struct {
- int st3_el1;
-} misc5_struct3;
-
-typedef struct {
- hid_t st3h_base;
- hid_t st3h_id;
-} misc5_struct3_hndl;
-
-typedef struct {
- hid_t st2h_base;
- hid_t st2h_id;
- misc5_struct3_hndl *st2h_st3hndl;
-} misc5_struct2_hndl;
-
-typedef struct {
- hid_t st1h_base;
- hid_t st1h_id;
- misc5_struct2_hndl *st1h_st2hndl;
-} misc5_struct1_hndl;
-
-/* Definitions for misc. test #6 */
-#define MISC6_FILE "tmisc6.h5"
-#define MISC6_DSETNAME1 "dset1"
-#define MISC6_DSETNAME2 "dset2"
-#define MISC6_NUMATTR 16
-
-/* Definitions for misc. test #7 */
-#define MISC7_FILE "tmisc7.h5"
-#define MISC7_DSETNAME1 "Dataset1"
-#define MISC7_DSETNAME2 "Dataset2"
-#define MISC7_TYPENAME1 "Datatype1"
-#define MISC7_TYPENAME2 "Datatype2"
-
-/* Definitions for misc. test #8 */
-#define MISC8_FILE "tmisc8.h5"
-#define MISC8_DSETNAME1 "Dataset1"
-#define MISC8_DSETNAME4 "Dataset4"
-#define MISC8_DSETNAME5 "Dataset5"
-#define MISC8_DSETNAME8 "Dataset8"
-
-#ifndef H5_HAVE_PARALLEL
-#define MISC8_DSETNAME2 "Dataset2"
-#define MISC8_DSETNAME3 "Dataset3"
-#define MISC8_DSETNAME6 "Dataset6"
-#define MISC8_DSETNAME7 "Dataset7"
-#define MISC8_DSETNAME9 "Dataset9"
-#define MISC8_DSETNAME10 "Dataset10"
-#endif
-
-#define MISC8_RANK 2
-#define MISC8_DIM0 50
-#define MISC8_DIM1 50
-#define MISC8_CHUNK_DIM0 10
-#define MISC8_CHUNK_DIM1 10
-
-/* Definitions for misc. test #9 */
-#define MISC9_FILE "tmisc9.h5"
-
-/* Definitions for misc. test #10 */
-#define MISC10_FILE_OLD "tmtimeo.h5"
-#define MISC10_FILE_NEW "tmisc10.h5"
-#define MISC10_DSETNAME "Dataset1"
-
-/* Definitions for misc. test #11 */
-#define MISC11_FILE "tmisc11.h5"
-#define MISC11_USERBLOCK 1024
-#define MISC11_SIZEOF_OFF 4
-#define MISC11_SIZEOF_LEN 4
-#define MISC11_SYM_LK 8
-#define MISC11_SYM_IK 32
-#define MISC11_ISTORE_IK 64
-#define MISC11_NINDEXES 1
-
-/* Definitions for misc. test #12 */
-#define MISC12_FILE "tmisc12.h5"
-#define MISC12_DSET_NAME "Dataset"
-#define MISC12_SPACE1_RANK 1
-#define MISC12_SPACE1_DIM1 4
-#define MISC12_CHUNK_SIZE 2
-#define MISC12_APPEND_SIZE 5
-
-/* Definitions for misc. test #13 */
-#define MISC13_FILE_1 "tmisc13a.h5"
-#define MISC13_FILE_2 "tmisc13b.h5"
-#define MISC13_DSET1_NAME "Dataset1"
-#define MISC13_DSET2_NAME "Dataset2"
-#define MISC13_DSET3_NAME "Dataset3"
-#define MISC13_GROUP1_NAME "Group1"
-#define MISC13_GROUP2_NAME "Group2"
-#define MISC13_DTYPE_NAME "Datatype"
-#define MISC13_RANK 1
-#define MISC13_DIM1 600
-#define MISC13_CHUNK_DIM1 10
-#define MISC13_USERBLOCK_SIZE 512
-#define MISC13_COPY_BUF_SIZE 4096
-
-/* Definitions for misc. test #14 */
-#define MISC14_FILE "tmisc14.h5"
-#define MISC14_DSET1_NAME "Dataset1"
-#define MISC14_DSET2_NAME "Dataset2"
-#define MISC14_DSET3_NAME "Dataset3"
-#define MISC14_METADATA_SIZE 4096
-
-/* Definitions for misc. test #15 */
-#define MISC15_FILE "tmisc15.h5"
-#define MISC15_BUF_SIZE 1024
-
-/* Definitions for misc. test #16 */
-#define MISC16_FILE "tmisc16.h5"
-#define MISC16_SPACE_DIM 4
-#define MISC16_SPACE_RANK 1
-#define MISC16_STR_SIZE 8
-#define MISC16_DSET_NAME "Dataset"
-
-/* Definitions for misc. test #17 */
-#define MISC17_FILE "tmisc17.h5"
-#define MISC17_SPACE_RANK 2
-#define MISC17_SPACE_DIM1 4
-#define MISC17_SPACE_DIM2 8
-#define MISC17_DSET_NAME "Dataset"
-
-/* Definitions for misc. test #18 */
-#define MISC18_FILE "tmisc18.h5"
-#define MISC18_DSET1_NAME "Dataset1"
-#define MISC18_DSET2_NAME "Dataset2"
-
-/* Definitions for misc. test #19 */
-#define MISC19_FILE "tmisc19.h5"
-#define MISC19_DSET_NAME "Dataset"
-#define MISC19_ATTR_NAME "Attribute"
-#define MISC19_GROUP_NAME "Group"
-
-/* Definitions for misc. test #20 */
-#define MISC20_FILE "tmisc20.h5"
-#define MISC20_FILE_OLD "tlayouto.h5"
-#define MISC20_DSET_NAME "Dataset"
-#define MISC20_DSET2_NAME "Dataset2"
-#define MISC20_SPACE_RANK 2
-/* Make sure the product of the following 2 does not get too close to */
-/* 64 bits, risking an overflow. */
-#define MISC20_SPACE_DIM0 (8 * 1024 * 1024 * (uint64_t)1024)
-#define MISC20_SPACE_DIM1 ((256 * 1024 * (uint64_t)1024) + 1)
-#define MISC20_SPACE2_DIM0 8
-#define MISC20_SPACE2_DIM1 4
-
-#if defined(H5_HAVE_FILTER_SZIP) && !defined(H5_API_TEST_NO_FILTERS)
-/* Definitions for misc. test #21 */
-#define MISC21_FILE "tmisc21.h5"
-#define MISC21_DSET_NAME "Dataset"
-#define MISC21_SPACE_RANK 2
-#define MISC21_SPACE_DIM0 7639
-#define MISC21_SPACE_DIM1 6308
-#define MISC21_CHUNK_DIM0 2048
-#define MISC21_CHUNK_DIM1 2048
-
-/* Definitions for misc. test #22 */
-#define MISC22_FILE "tmisc22.h5"
-#define MISC22_DSET_NAME "Dataset"
-#define MISC22_SPACE_RANK 2
-#define MISC22_CHUNK_DIM0 512
-#define MISC22_CHUNK_DIM1 512
-#define MISC22_SPACE_DIM0 639
-#define MISC22_SPACE_DIM1 1308
-#endif /* H5_HAVE_FILTER_SZIP */
-
-/* Definitions for misc. test #23 */
-#define MISC23_FILE "tmisc23.h5"
-#define MISC23_NAME_BUF_SIZE 40
-
-/* Definitions for misc. test #24 */
-#define MISC24_FILE "tmisc24.h5"
-#define MISC24_GROUP_NAME "group"
-#define MISC24_GROUP_LINK "group_link"
-#define MISC24_DATASET_NAME "dataset"
-#define MISC24_DATASET_LINK "dataset_link"
-#define MISC24_DATATYPE_NAME "datatype"
-#define MISC24_DATATYPE_LINK "datatype_link"
-
-/* Definitions for misc. test #25 'a', 'b' & 'c' */
-#define MISC25A_FILE "foo.h5"
-#define MISC25A_GROUP0_NAME "grp0"
-#define MISC25A_GROUP1_NAME "/grp0/grp1"
-#define MISC25A_GROUP2_NAME "/grp0/grp2"
-#define MISC25A_GROUP3_NAME "/grp0/grp3"
-#define MISC25A_ATTR1_NAME "_long attribute_"
-#define MISC25A_ATTR1_LEN 11
-#define MISC25A_ATTR2_NAME "_short attr__"
-#define MISC25A_ATTR2_LEN 11
-#define MISC25A_ATTR3_NAME "_short attr__"
-#define MISC25A_ATTR3_LEN 1
-#define MISC25B_FILE "mergemsg.h5"
-#define MISC25B_GROUP "grp1"
-#define MISC25C_FILE "nc4_rename.h5"
-#define MISC25C_DSETNAME "da"
-#define MISC25C_DSETNAME2 "dz"
-#define MISC25C_DSETGRPNAME "ga"
-#define MISC25C_GRPNAME "gb"
-#define MISC25C_GRPNAME2 "gc"
-#define MISC25C_ATTRNAME "aa"
-#define MISC25C_ATTRNAME2 "ab"
-
-/* Definitions for misc. test #26 */
-#define MISC26_FILE "dcpl_file"
-
-/* Definitions for misc. test #27 */
-/* (Note that this test file is generated by the "gen_bad_ohdr.c" code) */
-#define MISC27_FILE "tbad_msg_count.h5"
-#define MISC27_GROUP "Group"
-
-/* Definitions for misc. test #28 */
-#define MISC28_FILE "tmisc28.h5"
-#define MISC28_SIZE 10
-#define MISC28_NSLOTS 10000
-
-/* Definitions for misc. test #29 */
-#define MISC29_ORIG_FILE "specmetaread.h5"
-#define MISC29_COPY_FILE "tmisc29.h5"
-#define MISC29_DSETNAME "dset2"
-
-/* Definitions for misc. test #30 */
-#define MISC30_FILE "tmisc30.h5"
-
-#ifndef H5_NO_DEPRECATED_SYMBOLS
-/* Definitions for misc. test #31 */
-#define MISC31_FILE "tmisc31.h5"
-#define MISC31_DSETNAME "dset"
-#define MISC31_ATTRNAME1 "attr1"
-#define MISC31_ATTRNAME2 "attr2"
-#define MISC31_GROUPNAME "group"
-#define MISC31_PROPNAME "misc31_prop"
-#define MISC31_DTYPENAME "dtype"
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
-
-/* Definitions for misc. test #33 */
-/* Note that this test file is generated by "gen_bad_offset.c" */
-/* and bad offset values are written to that file for testing */
-#define MISC33_FILE "bad_offset.h5"
-
-/* Definitions for misc. test #35 */
-#define MISC35_SPACE_RANK 3
-#define MISC35_SPACE_DIM1 3
-#define MISC35_SPACE_DIM2 15
-#define MISC35_SPACE_DIM3 13
-#define MISC35_NPOINTS 10
-
-/* Definitions for misc. test #37 */
-/* The test file is formerly named h5_nrefs_POC.
- See https://nvd.nist.gov/vuln/detail/CVE-2020-10812 */
-#define CVE_2020_10812_FILENAME "cve_2020_10812.h5"
-
-#if defined(H5_HAVE_FILTER_SZIP) && !defined(H5_API_TEST_NO_FILTERS)
-/*-------------------------------------------------------------------------
- * Function: h5_szip_can_encode
- *
- * Purpose: Retrieve the filter config flags for szip, tell if
- * encoder is available.
- *
- * Return: 1: decode+encode is enabled
- * 0: only decode is enabled
- * -1: other
- *-------------------------------------------------------------------------
- */
-int
-h5_szip_can_encode(void)
-{
- unsigned int filter_config_flags;
-
- H5Zget_filter_info(H5Z_FILTER_SZIP, &filter_config_flags);
- if ((filter_config_flags & (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) == 0) {
- /* filter present but neither encode nor decode is supported (???) */
- return -1;
- }
- else if ((filter_config_flags & (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) ==
- H5Z_FILTER_CONFIG_DECODE_ENABLED) {
- /* decoder only: read but not write */
- return 0;
- }
- else if ((filter_config_flags & (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) ==
- H5Z_FILTER_CONFIG_ENCODE_ENABLED) {
- /* encoder only: write but not read (???) */
- return -1;
- }
- else if ((filter_config_flags & (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) ==
- (H5Z_FILTER_CONFIG_ENCODE_ENABLED | H5Z_FILTER_CONFIG_DECODE_ENABLED)) {
- return 1;
- }
- return (-1);
-}
-#endif /* H5_HAVE_FILTER_SZIP */
-
-/****************************************************************
-**
-** test_misc1(): test unlinking a dataset from a group and immediately
-** re-using the dataset name
-**
-****************************************************************/
-static void
-test_misc1(void)
-{
- int i;
- int i_check;
- hid_t file, dataspace, dataset;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing Unlinking Dataset and Re-creating It\n"));
-
- file = H5Fcreate(MISC1_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fcreate");
-
- dataspace = H5Screate(H5S_SCALAR);
- CHECK(dataspace, FAIL, "H5Screate");
-
- /* Write the dataset the first time. */
- dataset =
- H5Dcreate2(file, MISC1_DSET_NAME, H5T_NATIVE_INT, dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(dataset, FAIL, "H5Dcreate2");
-
- i = MISC1_VAL;
- ret = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &i);
- CHECK(ret, FAIL, "H5Dwrite");
-
- ret = H5Dclose(dataset);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Remove the dataset. */
- ret = H5Ldelete(file, MISC1_DSET_NAME, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Ldelete");
-
- /* Write the dataset for the second time with a different value. */
- dataset =
- H5Dcreate2(file, MISC1_DSET_NAME, H5T_NATIVE_INT, dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(dataset, FAIL, "H5Dcreate2");
-
- i = MISC1_VAL2;
- ret = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &i);
- CHECK(ret, FAIL, "H5Dwrite");
-
- ret = H5Dclose(dataset);
- CHECK(ret, FAIL, "H5Dclose");
-
- ret = H5Sclose(dataspace);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Now, check the value written to the dataset, after it was re-created */
- file = H5Fopen(MISC1_FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fopen");
-
- dataspace = H5Screate(H5S_SCALAR);
- CHECK(dataspace, FAIL, "H5Screate");
-
- dataset = H5Dopen2(file, MISC1_DSET_NAME, H5P_DEFAULT);
- CHECK(dataset, FAIL, "H5Dopen2");
-
- ret = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &i_check);
- CHECK(ret, FAIL, "H5Dread");
- VERIFY(i_check, MISC1_VAL2, "H5Dread");
-
- ret = H5Sclose(dataspace);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Dclose(dataset);
- CHECK(ret, FAIL, "H5Dclose");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-
-} /* end test_misc1() */
-
-static hid_t
-misc2_create_type(void)
-{
- hid_t type, type_tmp;
- herr_t ret;
-
- type_tmp = H5Tcopy(H5T_C_S1);
- CHECK(type_tmp, FAIL, "H5Tcopy");
-
- ret = H5Tset_size(type_tmp, H5T_VARIABLE);
- CHECK(ret, FAIL, "H5Tset_size");
-
- type = H5Tcreate(H5T_COMPOUND, sizeof(misc2_struct));
- CHECK(type, FAIL, "H5Tcreate");
-
- ret = H5Tinsert(type, "string", offsetof(misc2_struct, string), type_tmp);
- CHECK(ret, FAIL, "H5Tinsert");
-
- ret = H5Tclose(type_tmp);
- CHECK(ret, FAIL, "H5Tclose");
-
- return type;
-}
-
-static void
-test_misc2_write_attribute(void)
-{
- hid_t file1, file2, root1, root2, dataspace, att1, att2;
- hid_t type;
- herr_t ret;
- misc2_struct data, data_check;
- char *string_att1 = strdup("string attribute in file one");
- char *string_att2 = strdup("string attribute in file two");
-
- memset(&data, 0, sizeof(data));
- memset(&data_check, 0, sizeof(data_check));
-
- type = misc2_create_type();
-
- dataspace = H5Screate(H5S_SCALAR);
- CHECK(dataspace, FAIL, "H5Screate");
-
- file2 = H5Fcreate(MISC2_FILE_2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file2, FAIL, "H5Fcreate");
-
- file1 = H5Fcreate(MISC2_FILE_1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file1, FAIL, "H5Fcreate");
-
- root1 = H5Gopen2(file1, "/", H5P_DEFAULT);
- CHECK(root1, FAIL, "H5Gopen2");
-
- att1 = H5Acreate2(root1, MISC2_ATT_NAME_1, type, dataspace, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(att1, FAIL, "H5Acreate2");
-
- data.string = string_att1;
-
- ret = H5Awrite(att1, type, &data);
- CHECK(ret, FAIL, "H5Awrite");
-
- ret = H5Aread(att1, type, &data_check);
- CHECK(ret, FAIL, "H5Aread");
-
- ret = H5Treclaim(type, dataspace, H5P_DEFAULT, &data_check);
- CHECK(ret, FAIL, "H5Treclaim");
-
- ret = H5Aclose(att1);
- CHECK(ret, FAIL, "H5Aclose");
-
- ret = H5Gclose(root1);
- CHECK(ret, FAIL, "H5Gclose");
-
- ret = H5Fclose(file1);
- CHECK(ret, FAIL, "H5Fclose");
-
- root2 = H5Gopen2(file2, "/", H5P_DEFAULT);
- CHECK(root2, FAIL, "H5Gopen2");
-
- att2 = H5Acreate2(root2, MISC2_ATT_NAME_2, type, dataspace, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(att2, FAIL, "H5Acreate2");
-
- data.string = string_att2;
-
- ret = H5Awrite(att2, type, &data);
- CHECK(ret, FAIL, "H5Awrite");
-
- ret = H5Aread(att2, type, &data_check);
- CHECK(ret, FAIL, "H5Aread");
-
- ret = H5Treclaim(type, dataspace, H5P_DEFAULT, &data_check);
- CHECK(ret, FAIL, "H5Treclaim");
-
- ret = H5Aclose(att2);
- CHECK(ret, FAIL, "H5Aclose");
-
- ret = H5Gclose(root2);
- CHECK(ret, FAIL, "H5Gclose");
-
- ret = H5Tclose(type);
- CHECK(ret, FAIL, "H5Tclose");
-
- ret = H5Sclose(dataspace);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Fclose(file2);
- CHECK(ret, FAIL, "H5Fclose");
-
- free(string_att1);
- free(string_att2);
-}
-
-static void
-test_misc2_read_attribute(const char *filename, const char *att_name)
-{
- hid_t file, root, att;
- hid_t type;
- hid_t space;
- herr_t ret;
- misc2_struct data_check;
-
- type = misc2_create_type();
-
- file = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fopen");
-
- root = H5Gopen2(file, "/", H5P_DEFAULT);
- CHECK(root, FAIL, "H5Gopen2");
-
- att = H5Aopen(root, att_name, H5P_DEFAULT);
- CHECK(att, FAIL, "H5Aopen");
-
- space = H5Aget_space(att);
- CHECK(space, FAIL, "H5Aget_space");
-
- ret = H5Aread(att, type, &data_check);
- CHECK(ret, FAIL, "H5Aread");
-
- ret = H5Treclaim(type, space, H5P_DEFAULT, &data_check);
- CHECK(ret, FAIL, "H5Treclaim");
-
- ret = H5Sclose(space);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Aclose(att);
- CHECK(ret, FAIL, "H5Aclose");
-
- ret = H5Tclose(type);
- CHECK(ret, FAIL, "H5Tclose");
-
- ret = H5Gclose(root);
- CHECK(ret, FAIL, "H5Gclose");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-}
-/****************************************************************
-**
-** test_misc2(): test using the same VL-derived datatype in two
-** different files, which was causing problems with the
-** datatype conversion functions
-**
-****************************************************************/
-static void
-test_misc2(void)
-{
- /* Output message about test being performed */
- MESSAGE(5, ("Testing VL datatype in two different files\n"));
-
- test_misc2_write_attribute();
- test_misc2_read_attribute(MISC2_FILE_1, MISC2_ATT_NAME_1);
- test_misc2_read_attribute(MISC2_FILE_2, MISC2_ATT_NAME_2);
-} /* end test_misc2() */
-
-/****************************************************************
-**
-** test_misc3(): Test reading from chunked dataset with non-zero
-** fill value
-**
-****************************************************************/
-static void
-test_misc3(void)
-{
- hid_t file, dataspace, dataset, dcpl;
- int rank = MISC3_RANK;
- hsize_t dims[MISC3_RANK] = {MISC3_DIM1, MISC3_DIM2};
- hsize_t chunk_dims[MISC3_RANK] = {MISC3_CHUNK_DIM1, MISC3_CHUNK_DIM2};
- int fill = MISC3_FILL_VALUE;
- int read_buf[MISC3_DIM1][MISC3_DIM2];
- int i, j;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing reading from chunked dataset with non-zero fill-value\n"));
-
- file = H5Fcreate(MISC3_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fcreate");
-
- /* Create a simple dataspace */
- dataspace = H5Screate_simple(rank, dims, NULL);
- CHECK(dataspace, FAIL, "H5Screate_simple");
-
- /* Create a dataset creation property list */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(dcpl, FAIL, "H5Pcreate");
-
- /* Set the chunk information */
- ret = H5Pset_chunk(dcpl, rank, chunk_dims);
- CHECK(dcpl, FAIL, "H5Pset_chunk");
-
- /* Set the fill-value information */
- ret = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fill);
- CHECK(dcpl, FAIL, "H5Pset_fill_value");
-
- /* Create the dataset */
- dataset = H5Dcreate2(file, MISC3_DSET_NAME, H5T_NATIVE_INT, dataspace, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(dataset, FAIL, "H5Dcreate2");
-
- /* Read from the dataset (should be fill-values) */
- ret = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &read_buf);
- CHECK(ret, FAIL, "H5Dread");
-
- for (i = 0; i < MISC3_DIM1; i++)
- for (j = 0; j < MISC3_DIM2; j++)
- VERIFY(read_buf[i][j], fill, "H5Dread");
-
- /* Release resources */
- ret = H5Pclose(dcpl);
- CHECK(ret, FAIL, "H5Pclose");
-
- ret = H5Sclose(dataspace);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Dclose(dataset);
- CHECK(ret, FAIL, "H5Dclose");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc3() */
-
-/****************************************************************
-**
-** test_misc4(): Test the that 'fileno' field in H5O_info_t is
-** valid.
-**
-****************************************************************/
-static void
-test_misc4(void)
-{
- hid_t file1, file2, group1, group2, group3;
- H5O_info2_t oinfo1, oinfo2, oinfo3;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing fileno working in H5O_info2_t\n"));
-
- file1 = H5Fcreate(MISC4_FILE_1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file1, FAIL, "H5Fcreate");
-
- /* Create the first group */
- group1 = H5Gcreate2(file1, MISC4_GROUP_1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(group1, FAIL, "H5Gcreate2");
-
- /* Create the second group */
- group2 = H5Gcreate2(file1, MISC4_GROUP_2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(group2, FAIL, "H5Gcreate2");
-
- file2 = H5Fcreate(MISC4_FILE_2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file2, FAIL, "H5Fcreate");
-
- /* Create the first group */
- group3 = H5Gcreate2(file2, MISC4_GROUP_1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(group3, FAIL, "H5Gcreate2");
-
- /* Get the stat information for each group */
- ret = H5Oget_info_by_name3(file1, MISC4_GROUP_1, &oinfo1, H5O_INFO_BASIC, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name3");
- ret = H5Oget_info_by_name3(file1, MISC4_GROUP_2, &oinfo2, H5O_INFO_BASIC, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name3");
- ret = H5Oget_info_by_name3(file2, MISC4_GROUP_1, &oinfo3, H5O_INFO_BASIC, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name3");
-
- /* Verify that the fileno values are the same for groups from file1 */
- VERIFY(oinfo1.fileno, oinfo2.fileno, "H5Oget_info_by_name");
-
- /* Verify that the fileno values are not the same between file1 & file2 */
- if (oinfo1.fileno == oinfo3.fileno)
- TestErrPrintf("Error on line %d: oinfo1.fileno != oinfo3.fileno\n", __LINE__);
- if (oinfo2.fileno == oinfo3.fileno)
- TestErrPrintf("Error on line %d: oinfo2.fileno != oinfo3.fileno\n", __LINE__);
-
- /* Close the objects */
- ret = H5Gclose(group1);
- CHECK(ret, FAIL, "H5Gclose");
-
- ret = H5Gclose(group2);
- CHECK(ret, FAIL, "H5Gclose");
-
- ret = H5Gclose(group3);
- CHECK(ret, FAIL, "H5Gclose");
-
- ret = H5Fclose(file1);
- CHECK(ret, FAIL, "H5Fclose");
-
- ret = H5Fclose(file2);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc4() */
-
-/****************************************************************
-**
-** test_misc5(): Test several level deep nested compound & VL datatypes
-**
-****************************************************************/
-
-/*********************** struct3 ***********************/
-
-static misc5_struct3_hndl *
-create_struct3(void)
-{
- misc5_struct3_hndl *str3hndl; /* New 'struct3' created */
- herr_t ret; /* For error checking */
-
- str3hndl = (misc5_struct3_hndl *)malloc(sizeof(misc5_struct3_hndl));
- CHECK_PTR(str3hndl, "malloc");
-
- str3hndl->st3h_base = H5Tcreate(H5T_COMPOUND, sizeof(misc5_struct3));
- CHECK(str3hndl->st3h_base, FAIL, "H5Tcreate");
-
- ret = H5Tinsert(str3hndl->st3h_base, "st3_el1", HOFFSET(misc5_struct3, st3_el1), H5T_NATIVE_INT);
- CHECK(ret, FAIL, "H5Tinsert");
-
- str3hndl->st3h_id = H5Tvlen_create(str3hndl->st3h_base);
- CHECK(str3hndl->st3h_id, FAIL, "H5Tvlen_create");
-
- return str3hndl;
-}
-
-static void
-delete_struct3(misc5_struct3_hndl *str3hndl)
-{
- herr_t ret; /* For error checking */
-
- ret = H5Tclose(str3hndl->st3h_id);
- CHECK(ret, FAIL, "H5Tclose");
-
- ret = H5Tclose(str3hndl->st3h_base);
- CHECK(ret, FAIL, "H5Tclose");
-
- free(str3hndl);
-}
-
-static void
-set_struct3(misc5_struct3 *buf)
-{
- buf->st3_el1 = MISC5_DBGELVAL3;
-}
-
-/*********************** struct2 ***********************/
-
-static misc5_struct2_hndl *
-create_struct2(void)
-{
- misc5_struct2_hndl *str2hndl; /* New 'struct2' created */
- herr_t ret; /* For error checking */
-
- str2hndl = (misc5_struct2_hndl *)malloc(sizeof(misc5_struct2_hndl));
- CHECK_PTR(str2hndl, "malloc");
-
- str2hndl->st2h_base = H5Tcreate(H5T_COMPOUND, sizeof(misc5_struct2));
- CHECK(str2hndl->st2h_base, FAIL, "H5Tcreate");
-
- ret = H5Tinsert(str2hndl->st2h_base, "st2_el1", HOFFSET(misc5_struct2, st2_el1), H5T_NATIVE_INT);
- CHECK(ret, FAIL, "H5Tinsert");
-
- str2hndl->st2h_st3hndl = create_struct3();
- CHECK_PTR(str2hndl->st2h_st3hndl, "create_struct3");
-
- ret = H5Tinsert(str2hndl->st2h_base, "st2_el2", HOFFSET(misc5_struct2, st2_el2),
- str2hndl->st2h_st3hndl->st3h_id);
- CHECK(ret, FAIL, "H5Tinsert");
-
- str2hndl->st2h_id = H5Tvlen_create(str2hndl->st2h_base);
- CHECK(str2hndl->st2h_id, FAIL, "H5Tvlen_create");
-
- return str2hndl;
-}
-
-static void
-delete_struct2(misc5_struct2_hndl *str2hndl)
-{
- herr_t ret; /* For error checking */
-
- ret = H5Tclose(str2hndl->st2h_id);
- CHECK(ret, FAIL, "H5Tclose");
-
- delete_struct3(str2hndl->st2h_st3hndl);
-
- H5Tclose(str2hndl->st2h_base);
- CHECK(ret, FAIL, "H5Tclose");
-
- free(str2hndl);
-}
-
-static void
-set_struct2(misc5_struct2 *buf)
-{
- unsigned i; /* Local index variable */
-
- buf->st2_el1 = MISC5_DBGELVAL2;
- buf->st2_el2.len = MISC5_DBGNELM3;
-
- buf->st2_el2.p = malloc((buf->st2_el2.len) * sizeof(misc5_struct3));
- CHECK_PTR(buf->st2_el2.p, "malloc");
-
- for (i = 0; i < (buf->st2_el2.len); i++)
- set_struct3(&(((misc5_struct3 *)(buf->st2_el2.p))[i]));
-}
-
-static void
-clear_struct2(misc5_struct2 *buf)
-{
- free(buf->st2_el2.p);
-}
-
-/*********************** struct1 ***********************/
-
-static misc5_struct1_hndl *
-create_struct1(void)
-{
- misc5_struct1_hndl *str1hndl; /* New 'struct1' created */
- herr_t ret; /* For error checking */
-
- str1hndl = (misc5_struct1_hndl *)malloc(sizeof(misc5_struct1_hndl));
- CHECK_PTR(str1hndl, "malloc");
-
- str1hndl->st1h_base = H5Tcreate(H5T_COMPOUND, sizeof(misc5_struct1));
- CHECK(str1hndl->st1h_base, FAIL, "H5Tcreate");
-
- ret = H5Tinsert(str1hndl->st1h_base, "st1_el1", HOFFSET(misc5_struct1, st1_el1), H5T_NATIVE_INT);
- CHECK(ret, FAIL, "H5Tinsert");
-
- str1hndl->st1h_st2hndl = create_struct2();
- CHECK_PTR(str1hndl->st1h_st2hndl, "create_struct2");
-
- ret = H5Tinsert(str1hndl->st1h_base, "st1_el2", HOFFSET(misc5_struct1, st1_el2),
- str1hndl->st1h_st2hndl->st2h_id);
- CHECK(ret, FAIL, "H5Tinsert");
-
- str1hndl->st1h_id = H5Tvlen_create(str1hndl->st1h_base);
- CHECK(str1hndl->st1h_id, FAIL, "H5Tvlen_create");
-
- return str1hndl;
-}
-
-static void
-delete_struct1(misc5_struct1_hndl *str1hndl)
-{
- herr_t ret; /* For error checking */
-
- ret = H5Tclose(str1hndl->st1h_id);
- CHECK(ret, FAIL, "H5Tclose");
-
- delete_struct2(str1hndl->st1h_st2hndl);
-
- ret = H5Tclose(str1hndl->st1h_base);
- CHECK(ret, FAIL, "H5Tclose");
-
- free(str1hndl);
-}
-
-static void
-set_struct1(misc5_struct1 *buf)
-{
- unsigned i; /* Local index variable */
-
- buf->st1_el1 = MISC5_DBGELVAL1;
- buf->st1_el2.len = MISC5_DBGNELM2;
-
- buf->st1_el2.p = malloc((buf->st1_el2.len) * sizeof(misc5_struct2));
- CHECK_PTR(buf->st1_el2.p, "malloc");
-
- for (i = 0; i < (buf->st1_el2.len); i++)
- set_struct2(&(((misc5_struct2 *)(buf->st1_el2.p))[i]));
-}
-
-static void
-clear_struct1(misc5_struct1 *buf)
-{
- unsigned i;
-
- for (i = 0; i < buf->st1_el2.len; i++)
- clear_struct2(&(((misc5_struct2 *)(buf->st1_el2.p))[i]));
- free(buf->st1_el2.p);
-}
-
-static void
-test_misc5(void)
-{
- hid_t loc_id, space_id, dataset_id;
- hid_t mem_type_id;
- misc5_struct1_hndl *str1hndl;
- hsize_t dims[MISC5_DSETRANK];
- hvl_t buf;
- unsigned i, j, k;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing several level deep nested compound & VL datatypes \n"));
-
- /* Write the dataset out */
- loc_id = H5Fcreate(MISC5_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(loc_id, FAIL, "H5Fcreate");
-
- /* Create the memory structure to write */
- str1hndl = create_struct1();
- CHECK_PTR(str1hndl, "create_struct1");
-
- /* Create the dataspace */
- dims[0] = MISC5_NELMTOPLVL;
- space_id = H5Screate_simple(MISC5_DSETRANK, dims, NULL);
- CHECK(space_id, FAIL, "H5Screate_simple");
-
- /* Create the dataset */
- dataset_id = H5Dcreate2(loc_id, MISC5_DSETNAME, str1hndl->st1h_id, space_id, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(dataset_id, FAIL, "H5Dcreate2");
-
- /* Create the variable-length buffer */
- buf.len = MISC5_DBGNELM1;
- buf.p = malloc((buf.len) * sizeof(misc5_struct1));
- CHECK_PTR(buf.p, "malloc");
-
- /* Create the top-level VL information */
- for (i = 0; i < MISC5_DBGNELM1; i++)
- set_struct1(&(((misc5_struct1 *)(buf.p))[i]));
-
- /* Write the data out */
- ret = H5Dwrite(dataset_id, str1hndl->st1h_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, &buf);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Release the top-level VL information */
- for (j = 0; j < MISC5_DBGNELM1; j++)
- clear_struct1(&(((misc5_struct1 *)(buf.p))[j]));
-
- /* Free the variable-length buffer */
- free(buf.p);
-
- /* Close dataset */
- ret = H5Dclose(dataset_id);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close dataspace */
- ret = H5Sclose(space_id);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Delete memory structures */
- delete_struct1(str1hndl);
-
- /* Close file */
- ret = H5Fclose(loc_id);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Read the dataset back in & verify it */
- loc_id = H5Fopen(MISC5_FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(loc_id, FAIL, "H5Fopen");
-
- /* Open dataset again */
- dataset_id = H5Dopen2(loc_id, MISC5_DSETNAME, H5P_DEFAULT);
- CHECK(dataset_id, FAIL, "H5Dopen2");
-
- /* Get the dataset's datatype */
- mem_type_id = H5Dget_type(dataset_id);
- CHECK(mem_type_id, FAIL, "H5Dget_type");
-
- /* Get the dataset's dataspace */
- space_id = H5Dget_space(dataset_id);
- CHECK(space_id, FAIL, "H5Dget_space");
-
- /* Read the data back in */
- ret = H5Dread(dataset_id, mem_type_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, &buf);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Verify the correct information was read in */
- for (i = 0; i < (buf.len); i++) {
- /* printf("[%d]=%d\n",i, ((misc5_struct1 *)(buf.p))[i].st1_el1); */
- VERIFY(((misc5_struct1 *)(buf.p))[i].st1_el1, MISC5_DBGELVAL1, "H5Dread");
- for (j = 0; j < (((misc5_struct1 *)(buf.p))[i].st1_el2.len); j++) {
- /* printf(" [%d]=%d\n",j, ((misc5_struct2 *)(((misc5_struct1 *)
- * (buf.p))[i].st1_el2.p))[j].st2_el1); */
- VERIFY(((misc5_struct2 *)(((misc5_struct1 *)(buf.p))[i].st1_el2.p))[j].st2_el1, MISC5_DBGELVAL2,
- "H5Dread");
- for (k = 0; k < (((misc5_struct2 *)(((misc5_struct1 *)(buf.p))[i].st1_el2.p))[j].st2_el2.len);
- k++) {
- /* printf(" [%d]=%d\n",k, ((misc5_struct3 *)(((misc5_struct2 *) (((misc5_struct1
- * *)(buf.p))[i]. st1_el2.p))[j].st2_el2.p))[k].st3_el1); */
- VERIFY(((misc5_struct3 *)(((misc5_struct2 *)(((misc5_struct1 *)(buf.p))[i].st1_el2.p))[j]
- .st2_el2.p))[k]
- .st3_el1,
- MISC5_DBGELVAL3, "H5Dread");
- } /* end for */
- }
- }
-
- /* Reclaim the memory for the VL information */
- ret = H5Treclaim(mem_type_id, space_id, H5P_DEFAULT, &buf);
- CHECK(ret, FAIL, "H5Treclaim");
-
- /* Close dataspace */
- ret = H5Sclose(space_id);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close dataset */
- ret = H5Tclose(mem_type_id);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close dataset */
- ret = H5Dclose(dataset_id);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close file */
- ret = H5Fclose(loc_id);
- CHECK(ret, FAIL, "H5Fclose");
-
-} /* end test_misc5() */
-
-/****************************************************************
-**
-** test_misc6(): Test that object header continuation messages are
-** created correctly.
-**
-****************************************************************/
-static void
-test_misc6(void)
-{
- hid_t loc_id, space_id, dataset_id;
- hid_t attr_id;
- char attr_name[16];
- unsigned u;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing object header continuation code \n"));
-
- /* Create the file */
- loc_id = H5Fcreate(MISC6_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(loc_id, FAIL, "H5Fcreate");
-
- /* Create the dataspace */
- space_id = H5Screate(H5S_SCALAR);
- CHECK(space_id, FAIL, "H5Screate");
-
- /* Create the first dataset */
- dataset_id =
- H5Dcreate2(loc_id, MISC6_DSETNAME1, H5T_NATIVE_INT, space_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(dataset_id, FAIL, "H5Dcreate2");
-
- /* Close dataset */
- ret = H5Dclose(dataset_id);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Create the second dataset */
- dataset_id =
- H5Dcreate2(loc_id, MISC6_DSETNAME2, H5T_NATIVE_INT, space_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(dataset_id, FAIL, "H5Dcreate2");
-
- /* Close dataset */
- ret = H5Dclose(dataset_id);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close file */
- ret = H5Fclose(loc_id);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Loop through adding attributes to each dataset */
- for (u = 0; u < MISC6_NUMATTR; u++) {
- /* Create name for attribute */
- snprintf(attr_name, sizeof(attr_name), "Attr#%u", u);
-
- /* Open the file */
- loc_id = H5Fopen(MISC6_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(loc_id, FAIL, "H5Fopen");
-
- /* Open first dataset */
- dataset_id = H5Dopen2(loc_id, MISC6_DSETNAME1, H5P_DEFAULT);
- CHECK(dataset_id, FAIL, "H5Dopen2");
-
- /* Add attribute to dataset */
- attr_id = H5Acreate2(dataset_id, attr_name, H5T_NATIVE_INT, space_id, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(attr_id, FAIL, "H5Acreate2");
-
- /* Close attribute */
- ret = H5Aclose(attr_id);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Close dataset */
- ret = H5Dclose(dataset_id);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Open second dataset */
- dataset_id = H5Dopen2(loc_id, MISC6_DSETNAME2, H5P_DEFAULT);
- CHECK(dataset_id, FAIL, "H5Dopen2");
-
- /* Add attribute to dataset */
- attr_id = H5Acreate2(dataset_id, attr_name, H5T_NATIVE_INT, space_id, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(attr_id, FAIL, "H5Acreate2");
-
- /* Close attribute */
- ret = H5Aclose(attr_id);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Close dataset */
- ret = H5Dclose(dataset_id);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close file */
- ret = H5Fclose(loc_id);
- CHECK(ret, FAIL, "H5Fclose");
- } /* end for */
-
- /* Close dataspace */
- ret = H5Sclose(space_id);
- CHECK(ret, FAIL, "H5Sclose");
-
-} /* end test_misc6() */
-
-/****************************************************************
-**
-** test_misc7(): Test that datatypes are sensible to store on
-** disk. (i.e. not partially initialized)
-**
-****************************************************************/
-#if 0
-static void
-test_misc7(void)
-{
- hid_t fid, did, tid, sid;
- int enum_value = 1;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing sensible datatype on disk code \n"));
-
- /* Attempt to commit a non-sensible datatype */
-
- /* Create the file */
- fid = H5Fcreate(MISC7_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create the dataspace */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create the compound datatype to commit*/
- tid = H5Tcreate(H5T_COMPOUND, (size_t)32);
- CHECK(tid, FAIL, "H5Tcreate");
-
- /* Attempt to commit an empty compound datatype */
- ret = H5Tcommit2(fid, MISC7_TYPENAME1, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- VERIFY(ret, FAIL, "H5Tcommit2");
-
- /* Attempt to use empty compound datatype to create dataset */
- did = H5Dcreate2(fid, MISC7_DSETNAME1, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- VERIFY(ret, FAIL, "H5Dcreate2");
-
- /* Add a field to the compound datatype */
- ret = H5Tinsert(tid, "a", (size_t)0, H5T_NATIVE_INT);
- CHECK(ret, FAIL, "H5Tinsert");
-
- /* Attempt to commit the compound datatype now - should work */
- ret = H5Tcommit2(fid, MISC7_TYPENAME1, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Tcommit2");
-
- /* Attempt to use compound datatype to create dataset now - should work */
- did = H5Dcreate2(fid, MISC7_DSETNAME1, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Close dataset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close compound datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Create the enum datatype to commit*/
- tid = H5Tenum_create(H5T_NATIVE_INT);
- CHECK(tid, FAIL, "H5Tenum_create");
-
- /* Attempt to commit an empty enum datatype */
- ret = H5Tcommit2(fid, MISC7_TYPENAME2, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- VERIFY(ret, FAIL, "H5Tcommit2");
-
- /* Attempt to use empty enum datatype to create dataset */
- did = H5Dcreate2(fid, MISC7_DSETNAME2, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- VERIFY(did, FAIL, "H5Dcreate2");
-
- /* Add a member to the enum datatype */
- ret = H5Tenum_insert(tid, "a", &enum_value);
- CHECK(ret, FAIL, "H5Tenum_insert");
-
- /* Attempt to commit the enum datatype now - should work */
- ret = H5Tcommit2(fid, MISC7_TYPENAME2, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Tcommit2");
-
- /* Attempt to use enum datatype to create dataset now - should work */
- did = H5Dcreate2(fid, MISC7_DSETNAME2, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Close dataset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close enum datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
-} /* end test_misc7() */
-#endif
-
-/****************************************************************
-**
-** test_misc8(): Test storage size of various types of dataset
-** storage methods.
-**
-****************************************************************/
-#if 0
-static void
-test_misc8(void)
-{
- hid_t fid, did, sid;
- hid_t fapl; /* File access property list */
- hid_t dcpl; /* Dataset creation property list */
- int rank = MISC8_RANK;
- hsize_t dims[MISC8_RANK] = {MISC8_DIM0, MISC8_DIM1};
- hsize_t chunk_dims[MISC8_RANK] = {MISC8_CHUNK_DIM0, MISC8_CHUNK_DIM1};
- hsize_t storage_size; /* Number of bytes of raw data storage used */
- int *wdata; /* Data to write */
- int *tdata; /* Temporary pointer to data write */
-#ifdef VERIFY_DATA
- int *rdata; /* Data to read */
- int *tdata2; /* Temporary pointer to data to read */
-#endif /* VERIFY_DATA */
- unsigned u, v; /* Local index variables */
- int mdc_nelmts; /* Metadata number of elements */
- size_t rdcc_nelmts; /* Raw data number of elements */
- size_t rdcc_nbytes; /* Raw data number of bytes */
- double rdcc_w0; /* Raw data write percentage */
- hsize_t start[MISC8_RANK]; /* Hyperslab start */
- hsize_t count[MISC8_RANK]; /* Hyperslab block count */
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing dataset storage sizes\n"));
-
- /* Allocate space for the data to write & read */
- wdata = (int *)malloc(sizeof(int) * MISC8_DIM0 * MISC8_DIM1);
- CHECK_PTR(wdata, "malloc");
-#ifdef VERIFY_DATA
- rdata = (int *)malloc(sizeof(int) * MISC8_DIM0 * MISC8_DIM1);
- CHECK_PTR(rdata, "malloc");
-#endif /* VERIFY_DATA */
-
- /* Initialize values */
- tdata = wdata;
- for (u = 0; u < MISC8_DIM0; u++)
- for (v = 0; v < MISC8_DIM1; v++)
- *tdata++ = (int)(((u * MISC8_DIM1) + v) % 13);
-
- /* Create a file access property list */
- fapl = H5Pcreate(H5P_FILE_ACCESS);
- CHECK(fapl, FAIL, "H5Pcreate");
-
- /* Get the default file access properties for caching */
- ret = H5Pget_cache(fapl, &mdc_nelmts, &rdcc_nelmts, &rdcc_nbytes, &rdcc_w0);
- CHECK(ret, FAIL, "H5Pget_cache");
-
- /* Decrease the size of the raw data cache */
- rdcc_nbytes = 0;
-
- /* Set the file access properties for caching */
- ret = H5Pset_cache(fapl, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0);
- CHECK(ret, FAIL, "H5Pset_cache");
-
- /* Create the file */
- fid = H5Fcreate(MISC8_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Close file access property list */
- ret = H5Pclose(fapl);
- CHECK(ret, FAIL, "H5Pclose");
-
- /* Create a simple dataspace */
- sid = H5Screate_simple(rank, dims, NULL);
- CHECK(sid, FAIL, "H5Screate_simple");
-
- /* Select a hyperslab which coincides with chunk boundaries */
- /* (For later use) */
- start[0] = 1;
- start[1] = 1;
- count[0] = (MISC8_CHUNK_DIM0 * 2) - 1;
- count[1] = (MISC8_CHUNK_DIM1 * 2) - 1;
- ret = H5Sselect_hyperslab(sid, H5S_SELECT_SET, start, NULL, count, NULL);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Create a dataset creation property list */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(dcpl, FAIL, "H5Pcreate");
-
- /* I. contiguous dataset tests */
-
- ret = H5Pset_layout(dcpl, H5D_CONTIGUOUS);
- CHECK(ret, FAIL, "H5Pset_layout");
-
- /* Set the space allocation time to early */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a contiguous dataset, with space allocation early */
- did = H5Dcreate2(fid, MISC8_DSETNAME1, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
- VERIFY(storage_size, (hsize_t)(MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5Dget_storage_size");
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
-#ifndef H5_HAVE_PARALLEL
- /* Set the space allocation time to late */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a contiguous dataset, with space allocation late */
- did = H5Dcreate2(fid, MISC8_DSETNAME2, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size before data is written */
- storage_size = H5Dget_storage_size(did);
- VERIFY(storage_size, 0, "H5Dget_storage_size");
-
- /* Write data */
- ret = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check the storage size after data is written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
- VERIFY(storage_size, (hsize_t)(MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5Dget_storage_size");
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Set the space allocation time to incremental */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_INCR);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a contiguous dataset, with space allocation late */
- did = H5Dcreate2(fid, MISC8_DSETNAME3, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size before data is written */
- storage_size = H5Dget_storage_size(did);
- VERIFY(storage_size, 0, "H5Dget_storage_size");
-
- /* Write data */
- ret = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check the storage size after data is written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
- VERIFY(storage_size, (hsize_t)(MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5Dget_storage_size");
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-#endif /* H5_HAVE_PARALLEL */
-
- /* II. compact dataset tests */
- ret = H5Pset_layout(dcpl, H5D_COMPACT);
- CHECK(ret, FAIL, "H5Pset_layout");
-
- /* Set the space allocation time to late */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a contiguous dataset, with space allocation late */
- /* Should fail */
- H5E_BEGIN_TRY
- {
- did = H5Dcreate2(fid, MISC8_DSETNAME4, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(did, FAIL, "H5Dcreate2");
-
- /* Set the space allocation time to incremental */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_INCR);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a contiguous dataset, with space allocation incremental */
- /* Should fail */
- H5E_BEGIN_TRY
- {
- did = H5Dcreate2(fid, MISC8_DSETNAME4, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(did, FAIL, "H5Dcreate2");
-
- /* Set the space allocation time to early */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Set the fill time to allocation */
- ret = H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a contiguous dataset, with space allocation early */
- did = H5Dcreate2(fid, MISC8_DSETNAME4, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
- VERIFY(storage_size, (hsize_t)(MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5Dget_storage_size");
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* III. chunked dataset tests */
-
- ret = H5Pset_layout(dcpl, H5D_CHUNKED);
- CHECK(ret, FAIL, "H5Pset_layout");
-
- /* Set the space allocation time to early */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Use chunked storage for this dataset */
- ret = H5Pset_chunk(dcpl, rank, chunk_dims);
- CHECK(ret, FAIL, "H5Pset_chunk");
-
- /* Create a chunked dataset, with space allocation early */
- did = H5Dcreate2(fid, MISC8_DSETNAME5, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size after data is written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
- VERIFY(storage_size, (hsize_t)(MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5Dget_storage_size");
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
-#ifndef H5_HAVE_PARALLEL
- /* Set the space allocation time to late */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Use chunked storage for this dataset */
- ret = H5Pset_chunk(dcpl, rank, chunk_dims);
- CHECK(ret, FAIL, "H5Pset_chunk");
-
- /* Create a chunked dataset, with space allocation late */
- did = H5Dcreate2(fid, MISC8_DSETNAME6, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size after dataset is created */
- storage_size = H5Dget_storage_size(did);
- VERIFY(storage_size, 0, "H5Dget_storage_size");
-
- /* Write part of the dataset */
- ret = H5Dwrite(did, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check the storage size after data is written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
- VERIFY(storage_size, (hsize_t)(MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5Dget_storage_size");
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Set the space allocation time to incremental */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_INCR);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a chunked dataset, with space allocation incremental */
- did = H5Dcreate2(fid, MISC8_DSETNAME7, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size before data is written */
- storage_size = H5Dget_storage_size(did);
- VERIFY(storage_size, 0, "H5Dget_storage_size");
-
- /* Write part of the dataset */
- ret = H5Dwrite(did, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check the storage size after only four chunks are written */
- storage_size = H5Dget_storage_size(did);
- VERIFY(storage_size, (hsize_t)(4 * MISC8_CHUNK_DIM0 * MISC8_CHUNK_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5Dget_storage_size");
-
- /* Write entire dataset */
- ret = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
-#ifdef VERIFY_DATA
- /* Read data */
- ret = H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Check values written */
- tdata = wdata;
- tdata2 = rdata;
- for (u = 0; u < MISC8_DIM0; u++)
- for (v = 0; v < MISC8_DIM1; v++, tdata++, tdata2++)
- if (*tdata != *tdata2)
- TestErrPrintf("Error on line %d: u=%u, v=%d, *tdata=%d, *tdata2=%d\n", __LINE__, (unsigned)u,
- (unsigned)v, (int)*tdata, (int)*tdata2);
-#endif /* VERIFY_DATA */
-
- /* Check the storage size after data is written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
- VERIFY(storage_size, (hsize_t)(MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5Dget_storage_size");
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-#endif /* H5_HAVE_PARALLEL */
-
- /* Set the space allocation time to early */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Use compression as well as chunking for these datasets */
-#ifdef H5_HAVE_FILTER_DEFLATE
- ret = H5Pset_deflate(dcpl, 9);
- CHECK(ret, FAIL, "H5Pset_deflate");
-#endif /* end H5_HAVE_FILTER_DEFLATE */
-
- /* Create a chunked dataset, with space allocation early */
- did = H5Dcreate2(fid, MISC8_DSETNAME8, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Write part of the dataset */
- ret = H5Dwrite(did, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check the storage size after data is written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (storage_size >= (MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: data wasn't compressed! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#else /* Compression is not configured */
- if (storage_size != (MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: wrong storage size! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#endif /* H5_HAVE_FILTER_DEFLATE */
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
-#ifndef H5_HAVE_PARALLEL
- /* Set the space allocation time to late */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a chunked dataset, with space allocation late */
- did = H5Dcreate2(fid, MISC8_DSETNAME9, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size before data is written */
- storage_size = H5Dget_storage_size(did);
- VERIFY(storage_size, 0, "H5Dget_storage_size");
-
- /* Write part of the dataset */
- ret = H5Dwrite(did, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check the storage size after only four chunks are written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (storage_size >= (MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: data wasn't compressed! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#else /* Compression is not configured */
- if (storage_size != (MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: wrong storage size! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#endif /* H5_HAVE_FILTER_DEFLATE */
-
- /* Write entire dataset */
- ret = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
-#ifdef VERIFY_DATA
- /* Read data */
- ret = H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Check values written */
- tdata = wdata;
- tdata2 = rdata;
- for (u = 0; u < MISC8_DIM0; u++)
- for (v = 0; v < MISC8_DIM1; v++, tdata++, tdata2++)
- if (*tdata != *tdata2)
- TestErrPrintf("Error on line %d: u=%u, v=%d, *tdata=%d, *tdata2=%d\n", __LINE__, (unsigned)u,
- (unsigned)v, (int)*tdata, (int)*tdata2);
-#endif /* VERIFY_DATA */
-
- /* Check the storage size after data is written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (storage_size >= (MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: data wasn't compressed! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#else
- if (storage_size != (MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: wrong storage size! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#endif /*H5_HAVE_FILTER_DEFLATE*/
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Set the space allocation time to incremental */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_INCR);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create a chunked dataset, with space allocation incremental */
- did = H5Dcreate2(fid, MISC8_DSETNAME10, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the storage size before data is written */
- storage_size = H5Dget_storage_size(did);
- VERIFY(storage_size, 0, "H5Dget_storage_size");
-
- /* Write part of the dataset */
- ret = H5Dwrite(did, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check the storage size after only four chunks are written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (storage_size >= (4 * MISC8_CHUNK_DIM0 * MISC8_CHUNK_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: data wasn't compressed! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#else /* Compression is not configured */
- if (storage_size != (4 * MISC8_CHUNK_DIM0 * MISC8_CHUNK_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: wrong storage size! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#endif /* H5_HAVE_FILTER_DEFLATE */
-
- /* Write entire dataset */
- ret = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
-#ifdef VERIFY_DATA
- /* Read data */
- ret = H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Check values written */
- tdata = wdata;
- tdata2 = rdata;
- for (u = 0; u < MISC8_DIM0; u++)
- for (v = 0; v < MISC8_DIM1; v++, tdata++, tdata2++)
- if (*tdata != *tdata2)
- TestErrPrintf("Error on line %d: u=%u, v=%d, *tdata=%d, *tdata2=%d\n", __LINE__, (unsigned)u,
- (unsigned)v, (int)*tdata, (int)*tdata2);
-#endif /* VERIFY_DATA */
-
- /* Check the storage size after data is written */
- storage_size = H5Dget_storage_size(did);
- CHECK(storage_size, 0, "H5Dget_storage_size");
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (storage_size >= (MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: data wasn't compressed! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#else
- if (storage_size != (MISC8_DIM0 * MISC8_DIM1 * H5Tget_size(H5T_NATIVE_INT)))
- TestErrPrintf("Error on line %d: wrong storage size! storage_size=%u\n", __LINE__,
- (unsigned)storage_size);
-#endif /*H5_HAVE_FILTER_DEFLATE*/
-
- /* Close dataset ID */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-#endif /* H5_HAVE_PARALLEL */
-
- /* Close dataset creation property list */
- ret = H5Pclose(dcpl);
- CHECK(ret, FAIL, "H5Pclose");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Free the read & write buffers */
- free(wdata);
-#ifdef VERIFY_DATA
- free(rdata);
-#endif /* VERIFY_DATA */
-} /* end test_misc8() */
-#endif
-
-/****************************************************************
-**
-** test_misc9(): Test that H5Fopen() does not succeed for core
-** files, H5Fcreate() must be used to open them.
-**
-****************************************************************/
-static void
-test_misc9(void)
-{
- hid_t fapl, fid;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing core file opening\n"));
-
- fapl = H5Pcreate(H5P_FILE_ACCESS);
- CHECK(fapl, FAIL, "H5Pcreate");
-
- ret = H5Pset_fapl_core(fapl, (size_t)1024, 0);
- CHECK(ret, FAIL, "H5Pset_fapl_core");
-
- H5E_BEGIN_TRY
- {
- fid = H5Fopen(MISC9_FILE, H5F_ACC_RDWR, fapl);
- }
- H5E_END_TRY
- VERIFY(fid, FAIL, "H5Fopen");
-
- ret = H5Pclose(fapl);
- CHECK(ret, FAIL, "H5Pset_fapl_core");
-} /* end test_misc9() */
-
-/****************************************************************
-**
-** test_misc10(): Test opening a dataset created with an older
-** version of the library (shares the tmtimeo.h5 file with the mtime.c
-** test - see notes in gen_old_mtime.c for notes on generating this
-** data file) and using the dataset creation property list from
-** that dataset to create a dataset with the current version of
-** the library. Also tests using file creation property in same way.
-**
-****************************************************************/
-#if 0
-static void
-test_misc10(void)
-{
- hid_t file, file_new; /* File IDs for old & new files */
- hid_t fcpl; /* File creation property list */
- hid_t dataset, dataset_new; /* Dataset IDs for old & new datasets */
- hid_t dcpl; /* Dataset creation property list */
- hid_t space, type; /* Old dataset's dataspace & datatype */
- const char *testfile = H5_get_srcdir_filename(MISC10_FILE_OLD); /* Corrected test file name */
- bool driver_is_default_compatible;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing using old dataset creation property list\n"));
-
- ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible);
- CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible");
-
- if (!driver_is_default_compatible) {
- printf("-- SKIPPED --\n");
- return;
- }
-
- /*
- * Open the old file and the dataset and get old settings.
- */
- file = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fopen");
- fcpl = H5Fget_create_plist(file);
- CHECK(fcpl, FAIL, "H5Fget_create_plist");
-
- dataset = H5Dopen2(file, MISC10_DSETNAME, H5P_DEFAULT);
- CHECK(dataset, FAIL, "H5Dopen2");
- dcpl = H5Dget_create_plist(dataset);
- CHECK(dcpl, FAIL, "H5Dget_create_plist");
- space = H5Dget_space(dataset);
- CHECK(space, FAIL, "H5Dget_space");
- type = H5Dget_type(dataset);
- CHECK(type, FAIL, "H5Dget_type");
-
- /* Create new file & dataset */
- file_new = H5Fcreate(MISC10_FILE_NEW, H5F_ACC_TRUNC, fcpl, H5P_DEFAULT);
- CHECK(file_new, FAIL, "H5Fcreate");
-
- dataset_new = H5Dcreate2(file_new, MISC10_DSETNAME, type, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(dataset_new, FAIL, "H5Dcreate2");
-
- /* Close new dataset & file */
- ret = H5Dclose(dataset_new);
- CHECK(ret, FAIL, "H5Dclose");
- ret = H5Fclose(file_new);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Close old dataset information */
- ret = H5Tclose(type);
- CHECK(ret, FAIL, "H5Tclose");
- ret = H5Sclose(space);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Dclose(dataset);
- CHECK(ret, FAIL, "H5Dclose");
- ret = H5Pclose(dcpl);
- CHECK(ret, FAIL, "H5Pclose");
-
- /* Close old file information */
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
- ret = H5Pclose(fcpl);
- CHECK(ret, FAIL, "H5Pclose");
-} /* end test_misc10() */
-#endif
-
-/****************************************************************
-**
-** test_misc11(): Test that all properties in a file creation property
-** list are stored correctly in the file and can be retrieved
-** when the file is re-opened.
-**
-****************************************************************/
-static void
-test_misc11(void)
-{
- hid_t file; /* File IDs for old & new files */
- hid_t fcpl; /* File creation property list */
- hsize_t userblock; /* Userblock size retrieved from FCPL */
- size_t off_size; /* Size of offsets in the file */
- size_t len_size; /* Size of lengths in the file */
- unsigned sym_ik; /* Symbol table B-tree initial 'K' value */
- unsigned istore_ik; /* Indexed storage B-tree initial 'K' value */
- unsigned sym_lk; /* Symbol table B-tree leaf 'K' value */
- unsigned nindexes; /* Shared message number of indexes */
-#if 0
- H5F_info2_t finfo; /* global information about file */
-#endif
- H5F_fspace_strategy_t strategy; /* File space strategy */
- hsize_t threshold; /* Free-space section threshold */
- bool persist; /* To persist free-space or not */
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing file creation properties retrieved correctly\n"));
-
- /* Creating a file with the default file creation property list should
- * create a version 0 superblock
- */
-
- /* Create file with default file creation property list */
- file = H5Fcreate(MISC11_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fcreate");
-#if 0
- /* Get the file's version information */
- ret = H5Fget_info2(file, &finfo);
- CHECK(ret, FAIL, "H5Fget_info2");
- VERIFY(finfo.super.version, 0, "H5Fget_info2");
- VERIFY(finfo.free.version, 0, "H5Fget_info2");
- VERIFY(finfo.sohm.version, 0, "H5Fget_info2");
-#endif
- /* Close file */
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Create a file creation property list */
- fcpl = H5Pcreate(H5P_FILE_CREATE);
- CHECK(fcpl, FAIL, "H5Pcreate");
-
- /* Set all the properties in the FCPL */
- ret = H5Pset_userblock(fcpl, (hsize_t)MISC11_USERBLOCK);
- CHECK(ret, FAIL, "H5Pset_userblock");
-
- ret = H5Pset_sizes(fcpl, (size_t)MISC11_SIZEOF_OFF, (size_t)MISC11_SIZEOF_LEN);
- CHECK(ret, FAIL, "H5Pset_sizes");
-
- /* This should fail as (32770*2) will exceed ^16 - 2 bytes for storing btree entries */
- H5E_BEGIN_TRY
- {
- ret = H5Pset_sym_k(fcpl, 32770, 0);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Pset_sym_k");
-
- ret = H5Pset_sym_k(fcpl, MISC11_SYM_IK, MISC11_SYM_LK);
- CHECK(ret, FAIL, "H5Pset_sym_k");
-
- /* This should fail as (32770*2) will exceed ^16 - 2 bytes for storing btree entries */
- H5E_BEGIN_TRY
- {
- ret = H5Pset_istore_k(fcpl, 32770);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Pset_istore_k");
-
- ret = H5Pset_istore_k(fcpl, MISC11_ISTORE_IK);
- CHECK(ret, FAIL, "H5Pset_istore_k");
-
- ret = H5Pset_shared_mesg_nindexes(fcpl, MISC11_NINDEXES);
- CHECK(ret, FAIL, "H5Pset_shared_mesg");
-
- ret = H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_NONE, false, (hsize_t)1);
- CHECK(ret, FAIL, "H5Pset_file_space");
-
- /* Creating a file with the non-default file creation property list should
- * create a version 2 superblock
- */
-
- /* Create file with custom file creation property list */
- file = H5Fcreate(MISC11_FILE, H5F_ACC_TRUNC, fcpl, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fcreate");
-
- /* Close FCPL */
- ret = H5Pclose(fcpl);
- CHECK(ret, FAIL, "H5Pclose");
-#if 0
- /* Get the file's version information */
- ret = H5Fget_info2(file, &finfo);
- CHECK(ret, FAIL, "H5Fget_info2");
- VERIFY(finfo.super.version, 2, "H5Fget_info2");
- VERIFY(finfo.free.version, 0, "H5Fget_info2");
- VERIFY(finfo.sohm.version, 0, "H5Fget_info2");
-#endif
- /* Close file */
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Re-open the file */
- file = H5Fopen(MISC11_FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fcreate");
-
- /* Get the file's creation property list */
- fcpl = H5Fget_create_plist(file);
- CHECK(fcpl, FAIL, "H5Fget_create_plist");
-#if 0
- /* Get the file's version information */
- ret = H5Fget_info2(file, &finfo);
- CHECK(ret, FAIL, "H5Fget_info2");
- VERIFY(finfo.super.version, 2, "H5Fget_info2");
- VERIFY(finfo.free.version, 0, "H5Fget_info2");
- VERIFY(finfo.sohm.version, 0, "H5Fget_info2");
-#endif
- /* Retrieve all the property values & check them */
- ret = H5Pget_userblock(fcpl, &userblock);
- CHECK(ret, FAIL, "H5Pget_userblock");
- VERIFY(userblock, MISC11_USERBLOCK, "H5Pget_userblock");
-
- ret = H5Pget_sizes(fcpl, &off_size, &len_size);
- CHECK(ret, FAIL, "H5Pget_sizes");
- VERIFY(off_size, MISC11_SIZEOF_OFF, "H5Pget_sizes");
- VERIFY(len_size, MISC11_SIZEOF_LEN, "H5Pget_sizes");
-
- ret = H5Pget_sym_k(fcpl, &sym_ik, &sym_lk);
- CHECK(ret, FAIL, "H5Pget_sym_k");
- VERIFY(sym_ik, MISC11_SYM_IK, "H5Pget_sym_k");
- VERIFY(sym_lk, MISC11_SYM_LK, "H5Pget_sym_k");
-
- ret = H5Pget_istore_k(fcpl, &istore_ik);
- CHECK(ret, FAIL, "H5Pget_istore_k");
- VERIFY(istore_ik, MISC11_ISTORE_IK, "H5Pget_istore_k");
-
- ret = H5Pget_shared_mesg_nindexes(fcpl, &nindexes);
- CHECK(ret, FAIL, "H5Pget_shared_mesg_nindexes");
- VERIFY(nindexes, MISC11_NINDEXES, "H5Pget_shared_mesg_nindexes");
-
- ret = H5Pget_file_space_strategy(fcpl, &strategy, &persist, &threshold);
- CHECK(ret, FAIL, "H5Pget_file_space_strategy");
- VERIFY(strategy, 3, "H5Pget_file_space_strategy");
- VERIFY(persist, false, "H5Pget_file_space_strategy");
- VERIFY(threshold, 1, "H5Pget_file_space_strategy");
-
- /* Close file */
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Close FCPL */
- ret = H5Pclose(fcpl);
- CHECK(ret, FAIL, "H5Pclose");
-} /* end test_misc11() */
-
-/****************************************************************
-**
-** test_misc12(): Test that VL-types operate correctly in chunked
-** datasets that are extended.
-**
-****************************************************************/
-static void
-test_misc12(void)
-{
- const char *wdata[MISC12_SPACE1_DIM1] = {
- "Four score and seven years ago our forefathers brought forth on this continent a new nation,",
- "conceived in liberty and dedicated to the proposition that all men are created equal.",
- "Now we are engaged in a great civil war,",
- "testing whether that nation or any nation so conceived and so dedicated can long endure."};
- const char *wdata1[MISC12_APPEND_SIZE] = {
- "O Gloria inmarcesible! O Jubilo inmortal! En surcos de dolores, el",
- "bien germina ya! Ceso la horrible noche, La libertad sublime",
- "derrama las auroras de su invencible luz.", "La humanidad entera, que entre cadenas gime, comprende",
- "las palabras del que murio en la cruz."};
- char *rdata[MISC12_SPACE1_DIM1 + MISC12_APPEND_SIZE]; /* Information read in */
- hid_t fid1;
- hid_t dataset;
- hid_t sid1, space, memspace;
- hid_t tid1, cparms;
- hsize_t dims1[] = {MISC12_SPACE1_DIM1};
- hsize_t dimsn[] = {MISC12_APPEND_SIZE};
- hsize_t maxdims1[1] = {H5S_UNLIMITED};
- hsize_t chkdims1[1] = {MISC12_CHUNK_SIZE};
- hsize_t newsize[1] = {MISC12_SPACE1_DIM1 + MISC12_APPEND_SIZE};
- hsize_t offset[1] = {MISC12_SPACE1_DIM1};
- hsize_t count[1] = {MISC12_APPEND_SIZE};
- int i; /* counting variable */
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing VL-type in chunked dataset\n"));
-
- /* This test requirese a relatively "fresh" library environment */
- ret = H5garbage_collect();
- CHECK(ret, FAIL, "H5garbage_collect");
-
- /* Create file */
- fid1 = H5Fcreate(MISC12_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid1, FAIL, "H5Fcreate");
-
- /* Create dataspace for datasets */
- sid1 = H5Screate_simple(MISC12_SPACE1_RANK, dims1, maxdims1);
- CHECK(sid1, FAIL, "H5Screate_simple");
-
- /* Create a datatype to refer to */
- tid1 = H5Tcopy(H5T_C_S1);
- CHECK(tid1, FAIL, "H5Tcopy");
-
- ret = H5Tset_size(tid1, H5T_VARIABLE);
- CHECK(ret, FAIL, "H5Tset_size");
-
- cparms = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(cparms, FAIL, "H5Pcreate");
-
- ret = H5Pset_chunk(cparms, 1, chkdims1);
- CHECK(ret, FAIL, "H5Pset_chunk");
-
- /* Create a dataset */
- dataset = H5Dcreate2(fid1, MISC12_DSET_NAME, tid1, sid1, H5P_DEFAULT, cparms, H5P_DEFAULT);
- CHECK(dataset, FAIL, "H5Dcreate2");
-
- /* Write dataset to disk */
- ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Extend dataset */
- ret = H5Dset_extent(dataset, newsize);
- CHECK(ret, FAIL, "H5Dset_extent");
-
- memspace = H5Screate_simple(MISC12_SPACE1_RANK, dimsn, NULL);
- CHECK(memspace, FAIL, "H5Screate_simple");
-
- space = H5Dget_space(dataset);
- CHECK(space, FAIL, "H5Dget_space");
-
- ret = H5Sselect_hyperslab(space, H5S_SELECT_SET, offset, NULL, count, NULL);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Write data to new portion of dataset */
- ret = H5Dwrite(dataset, tid1, memspace, space, H5P_DEFAULT, wdata1);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Read all data back */
- ret = H5Dread(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata);
- CHECK(ret, FAIL, "H5Dread");
-
- for (i = 0; i < MISC12_SPACE1_DIM1; i++)
- if (strcmp(wdata[i], rdata[i]) != 0)
- TestErrPrintf("Error on line %d: wdata[%d]=%s, rdata[%d]=%s\n", __LINE__, i, wdata[i], i,
- rdata[i]);
- for (; i < (MISC12_SPACE1_DIM1 + MISC12_APPEND_SIZE); i++)
- if (strcmp(wdata1[i - MISC12_SPACE1_DIM1], rdata[i]) != 0)
- TestErrPrintf("Error on line %d: wdata1[%d]=%s, rdata[%d]=%s\n", __LINE__, i - MISC12_SPACE1_DIM1,
- wdata1[i - MISC12_SPACE1_DIM1], i, rdata[i]);
-
- ret = H5Sselect_all(space);
- CHECK(ret, FAIL, "H5Sselect_all");
-
- /* Reclaim VL data memory */
- ret = H5Treclaim(tid1, space, H5P_DEFAULT, rdata);
- CHECK(ret, FAIL, "H5Treclaim");
-
- /* Close Everything */
- ret = H5Dclose(dataset);
- CHECK(ret, FAIL, "H5Dclose");
- ret = H5Tclose(tid1);
- CHECK(ret, FAIL, "H5Tclose");
- ret = H5Sclose(space);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(memspace);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(sid1);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Pclose(cparms);
- CHECK(ret, FAIL, "H5Pclose");
- ret = H5Fclose(fid1);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc12() */
-#if 0
-/* Various routines for misc. 13 test */
-static void
-misc13_init_data(unsigned *original_data)
-{
- unsigned u;
-
- for (u = 0; u < MISC13_DIM1; u++)
- original_data[u] = u;
-}
-
-static bool
-misc13_verify_data_match(const unsigned *original_data, const unsigned *read_data)
-{
- unsigned u;
-
- for (u = 0; u < MISC13_DIM1; u++)
- if (original_data[u] != read_data[u])
- return false;
-
- return true;
-}
-
-static void
-misc13_create_dataset(hid_t loc_id, const char *name, hid_t dcpl, const unsigned *data)
-{
- hid_t dsid = -1; /* Dataset ID */
- hid_t sid = -1; /* Dataspace ID */
- hsize_t dims[MISC13_RANK]; /* Dataset dimensions */
- herr_t ret; /* Generic return value */
-
- /* Create dataspace for use with dataset */
- dims[0] = MISC13_DIM1;
- sid = H5Screate_simple(MISC13_RANK, dims, NULL);
- CHECK(sid, FAIL, "H5Screate_simple");
-
- /* Create contiguous dataset in root group */
- dsid = H5Dcreate2(loc_id, name, H5T_NATIVE_UINT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(dsid, FAIL, "H5Dcreate2");
-
- /* Write some data to dataset */
- ret = H5Dwrite(dsid, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Close the contiguous dataset */
- ret = H5Dclose(dsid);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close the dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
-} /* end misc13_create_dataset() */
-
-static void
-misc13_verify_dataset(hid_t loc_id, const char *name, const unsigned *data)
-{
- unsigned *read_data = NULL; /* Data to write to dataset */
- hid_t dsid = -1; /* Dataset ID */
- herr_t ret; /* Generic return value */
-
- /* Create a data buffer for the dataset read */
- read_data = (unsigned *)calloc(MISC13_DIM1, sizeof(unsigned));
- CHECK_PTR(read_data, "calloc");
-
- /* Open the contiguous dataset in the root group */
- dsid = H5Dopen2(loc_id, name, H5P_DEFAULT);
- CHECK(dsid, FAIL, "H5Dopen2");
-
- /* Read the data */
- ret = H5Dread(dsid, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, read_data);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Verify that the data are correct */
- ret = misc13_verify_data_match(data, read_data);
- CHECK(ret, FAIL, "misc13_verify_data_match");
-
- /* Close the contiguous dataset */
- ret = H5Dclose(dsid);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Free the dataset read buffer */
- free(read_data);
-
-} /* end misc13_verify_dataset() */
-
-static void
-misc13_create_hdf_file(const char *name, const unsigned *data)
-{
- hid_t fid = -1; /* File ID */
- hid_t gid1 = -1; /* Group ID (level 1) */
- hid_t gid2 = -1; /* Group ID (level 2) */
- hid_t tid = -1; /* Datatype ID */
- hid_t dcplid = -1; /* Dataset creation property list ID */
- hsize_t chunk_dims[MISC13_RANK]; /* Chunk dimensions */
- herr_t ret; /* Generic return value */
-
- /* Create file */
- fid = H5Fcreate(name, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create DCPL for use with datasets */
- dcplid = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(dcplid, FAIL, "H5Pcreate");
-
- /* Set the DCPL to be chunked */
- ret = H5Pset_layout(dcplid, H5D_CHUNKED);
- CHECK(ret, FAIL, "H5Pset_layout");
-
- /* Use chunked storage for this DCPL */
- chunk_dims[0] = MISC13_CHUNK_DIM1;
- ret = H5Pset_chunk(dcplid, MISC13_RANK, chunk_dims);
- CHECK(ret, FAIL, "H5Pset_chunk");
-
- /* Create contiguous dataset in root group */
- misc13_create_dataset(fid, MISC13_DSET1_NAME, H5P_DEFAULT, data);
-
- /* Create chunked dataset in root group */
- misc13_create_dataset(fid, MISC13_DSET2_NAME, dcplid, data);
-
- /* Create a datatype to commit to the file */
- tid = H5Tcopy(H5T_NATIVE_INT);
- CHECK(tid, FAIL, "H5Tcopy");
-
- /* Create a named datatype in the root group */
- ret = H5Tcommit2(fid, MISC13_DTYPE_NAME, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Tcommit2");
-
- /* Close named datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Create a group in the root group */
- gid1 = H5Gcreate2(fid, MISC13_GROUP1_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid1, FAIL, "H5Gcreate2");
-
- /* Create another group in the new group */
- gid2 = H5Gcreate2(gid1, MISC13_GROUP2_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid2, FAIL, "H5Gcreate2");
-
- /* Close the second group */
- ret = H5Gclose(gid2);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Create contiguous dataset in new group */
- misc13_create_dataset(gid1, MISC13_DSET1_NAME, H5P_DEFAULT, data);
-
- /* Create chunked dataset in new group */
- misc13_create_dataset(gid1, MISC13_DSET2_NAME, dcplid, data);
-
- /* Create a datatype to commit to the new group */
- tid = H5Tcopy(H5T_NATIVE_INT);
- CHECK(tid, FAIL, "H5Tcopy");
-
- /* Create a named datatype in the new group */
- ret = H5Tcommit2(gid1, MISC13_DTYPE_NAME, tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Tcommit2");
-
- /* Close named datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close the first group */
- ret = H5Gclose(gid1);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close the DCPL */
- ret = H5Pclose(dcplid);
- CHECK(ret, FAIL, "H5Pclose");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
-} /* end misc13_create_hdf_file() */
-
-static void
-misc13_insert_user_block(const char *old_name, const char *new_name, const char *str, size_t size)
-{
- FILE *new_fp = NULL; /* Pointers to new & old files */
- FILE *old_fp = NULL;
- void *user_block = NULL; /* Pointer to user block to write to file */
- void *copy_buf = NULL; /* Pointer to buffer for copying data */
- size_t written; /* Amount of data written to new file */
- size_t read_in; /* Amount of data read in from old file */
- int ret; /* Generic status value */
-
- /* Allocate space for the user block */
- user_block = calloc(size, (size_t)1);
- CHECK_PTR(user_block, "calloc");
-
- /* Copy in the user block data */
- memcpy(user_block, str, strlen(str));
-
- /* Open the new file */
- new_fp = fopen(new_name, "wb");
- CHECK_PTR(new_fp, "fopen");
-
- /* Write the user block to the new file */
- written = fwrite(user_block, (size_t)1, size, new_fp);
- VERIFY(written, size, "fwrite");
-
- /* Open the old file */
- old_fp = fopen(old_name, "rb");
- CHECK_PTR(old_fp, "fopen");
-
- /* Allocate space for the copy buffer */
- copy_buf = malloc((size_t)MISC13_COPY_BUF_SIZE);
- CHECK_PTR(copy_buf, "malloc");
-
- /* Copy data from the old file to the new file */
- while ((read_in = fread(copy_buf, (size_t)1, (size_t)MISC13_COPY_BUF_SIZE, old_fp)) > 0) {
- /* Write the data to the new file */
- written = fwrite(copy_buf, (size_t)1, read_in, new_fp);
- VERIFY(written, read_in, "fwrite");
- }
-
- /* Close the old file */
- ret = fclose(old_fp);
- VERIFY(ret, 0, "fclose");
-
- /* Close the new file */
- ret = fclose(new_fp);
- VERIFY(ret, 0, "fclose");
-
- /* Free the copy buffer */
- free(copy_buf);
-
- /* Free the user block */
- free(user_block);
-
-} /* end misc13_insert_user_block() */
-
-static void
-misc13_verify_file(const char *name, const unsigned *data, hsize_t userblock_size,
- bool check_for_new_dataset)
-{
- hid_t fid = -1; /* File ID */
- hid_t gid1 = -1; /* Group IDs */
- hid_t gid2 = -1; /* Group IDs */
- hid_t tid = -1; /* Datatype ID */
- hid_t fcplid = -1; /* File creation property list ID */
- hsize_t ub_size_out; /* Userblock size retrieved from FCPL */
- herr_t ret; /* Generic return value */
-
- /* Open the file */
- fid = H5Fopen(name, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Get the file's FCPL */
- fcplid = H5Fget_create_plist(fid);
- CHECK(fcplid, FAIL, "H5Fget_create_plist");
-
- /* Get the user block size for the file */
- ret = H5Pget_userblock(fcplid, &ub_size_out);
- CHECK(ret, FAIL, "H5Pget_userblock");
-
- /* Check the userblock size */
- VERIFY(userblock_size, ub_size_out, "H5Pget_userblock");
-
- /* Close the FCPL */
- ret = H5Pclose(fcplid);
- CHECK(ret, FAIL, "H5Pclose");
-
- /* Verify the contiguous dataset in the root group */
- misc13_verify_dataset(fid, MISC13_DSET1_NAME, data);
-
- /* Verify the chunked dataset in the root group */
- misc13_verify_dataset(fid, MISC13_DSET2_NAME, data);
-
- /* Verify the "new" contiguous dataset in the root group, if asked */
- if (check_for_new_dataset)
- misc13_verify_dataset(fid, MISC13_DSET3_NAME, data);
-
- /* Open the named datatype in the root group */
- tid = H5Topen2(fid, MISC13_DTYPE_NAME, H5P_DEFAULT);
- CHECK(tid, FAIL, "H5Topen2");
-
- /* Verify the type is correct */
- VERIFY(H5Tequal(tid, H5T_NATIVE_INT), true, "H5Tequal");
-
- /* Close named datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Open the first group */
- gid1 = H5Gopen2(fid, MISC13_GROUP1_NAME, H5P_DEFAULT);
- CHECK(gid1, FAIL, "H5Gopen2");
-
- /* Verify the contiguous dataset in the first group */
- misc13_verify_dataset(gid1, MISC13_DSET1_NAME, data);
-
- /* Verify the chunked dataset in the first group */
- misc13_verify_dataset(gid1, MISC13_DSET2_NAME, data);
-
- /* Open the named datatype in the first group */
- tid = H5Topen2(gid1, MISC13_DTYPE_NAME, H5P_DEFAULT);
- CHECK(tid, FAIL, "H5Topen2");
-
- /* Verify the type is correct */
- VERIFY(H5Tequal(tid, H5T_NATIVE_INT), true, "H5Tequal");
-
- /* Close named datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Open the second group */
- gid2 = H5Gopen2(gid1, MISC13_GROUP2_NAME, H5P_DEFAULT);
- CHECK(gid2, FAIL, "H5Gopen2");
-
- /* Close the second group */
- ret = H5Gclose(gid2);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close the first group */
- ret = H5Gclose(gid1);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
-} /* end misc13_verify_file() */
-
-static void
-misc13_add_to_new_file(const char *name, const unsigned *data)
-{
- hid_t fid = -1; /* File ID */
- herr_t ret; /* Generic return value */
-
- /* Open the file */
- fid = H5Fopen(name, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Create new contiguous dataset in root group */
- misc13_create_dataset(fid, MISC13_DSET3_NAME, H5P_DEFAULT, data);
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
-} /* end misc13_add_to_new_file() */
-
-/****************************************************************
-**
-** test_misc13(): Test that file contents can be "slid down" by
-** inserting a user block in front of an existing file.
-**
-****************************************************************/
-static void
-test_misc13(void)
-{
- unsigned *data = NULL; /* Data to write to dataset */
- hsize_t userblock_size; /* Correct size of userblock */
- bool check_for_new_dataset; /* Whether to check for the post-userblock-creation dataset */
-
- /* Create a data buffer for the datasets */
- data = (unsigned *)calloc(MISC13_DIM1, sizeof(unsigned));
- CHECK_PTR(data, "calloc");
-
- /* Initialize data to write */
- misc13_init_data(data);
-
- /* Create first file, with no user block */
- misc13_create_hdf_file(MISC13_FILE_1, data);
-
- /* Verify file contents are correct */
- userblock_size = 0;
- check_for_new_dataset = false;
- misc13_verify_file(MISC13_FILE_1, data, userblock_size, check_for_new_dataset);
-
- /* Create a new file by inserting a user block in front of the first file */
- misc13_insert_user_block(MISC13_FILE_1, MISC13_FILE_2, "Test String", (size_t)MISC13_USERBLOCK_SIZE);
-
- /* Verify file contents are still correct */
- userblock_size = MISC13_USERBLOCK_SIZE;
- check_for_new_dataset = false;
- misc13_verify_file(MISC13_FILE_2, data, userblock_size, check_for_new_dataset);
-
- /* Make certain we can modify the new file */
- misc13_add_to_new_file(MISC13_FILE_2, data);
-
- /* Verify file contents are still correct */
- userblock_size = MISC13_USERBLOCK_SIZE;
- check_for_new_dataset = true;
- misc13_verify_file(MISC13_FILE_2, data, userblock_size, check_for_new_dataset);
-
- /* Free the dataset buffer */
- free(data);
-
-} /* end test_misc13() */
-#endif
-
-/****************************************************************
-**
-** test_misc14(): Test that file contents can be "slid down" by
-** inserting a user block in front of an existing file.
-**
-****************************************************************/
-static void
-test_misc14(void)
-{
- hid_t file_id; /* File ID */
- hid_t fapl; /* File access property list ID */
- hid_t DataSpace; /* Dataspace ID */
- hid_t Dataset1; /* Dataset ID #1 */
- hid_t Dataset2; /* Dataset ID #2 */
- hid_t Dataset3; /* Dataset ID #3 */
- double data1 = 5.0; /* Data to write for dataset #1 */
- double data2 = 10.0; /* Data to write for dataset #2 */
- double data3 = 15.0; /* Data to write for dataset #3 */
- double rdata; /* Data read in */
- herr_t ret; /* Generic return value */
-
- /* Test creating two datasets and deleting the second */
-
- /* Increase the metadata block size */
- /* (This makes certain that all the data blocks are allocated together) */
- fapl = H5Pcreate(H5P_FILE_ACCESS);
- CHECK(fapl, FAIL, "H5Pcreate");
-
- ret = H5Pset_meta_block_size(fapl, (hsize_t)MISC14_METADATA_SIZE);
- CHECK(ret, FAIL, "H5Pset_meta_block_size");
-
- /* Create dataspace to use */
- DataSpace = H5Screate(H5S_SCALAR);
- CHECK(DataSpace, FAIL, "H5Screate");
-
- /* Open the file */
- file_id = H5Fcreate(MISC14_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
- CHECK(file_id, FAIL, "H5Fcreate");
-
- /* Create first dataset & write data */
- Dataset1 = H5Dcreate2(file_id, MISC14_DSET1_NAME, H5T_NATIVE_DOUBLE, DataSpace, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(Dataset1, FAIL, "H5Dcreate2");
-
- ret = H5Dwrite(Dataset1, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data1);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Create second dataset (to be unlinked). */
- Dataset2 = H5Dcreate2(file_id, MISC14_DSET2_NAME, H5T_NATIVE_DOUBLE, DataSpace, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(Dataset2, FAIL, "H5Dcreate2");
-
- ret = H5Dwrite(Dataset2, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data2);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check data from first dataset */
- ret = H5Dread(Dataset1, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &rdata);
- CHECK(ret, FAIL, "H5Dread");
- if (!H5_DBL_ABS_EQUAL(rdata, data1))
- TestErrPrintf("Error on line %d: data1!=rdata\n", __LINE__);
-
- /* Unlink second dataset */
- ret = H5Ldelete(file_id, MISC14_DSET2_NAME, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Ldelete");
-
- /* Close second dataset */
- ret = H5Dclose(Dataset2);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Verify the data from dataset #1 */
- ret = H5Dread(Dataset1, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &rdata);
- CHECK(ret, FAIL, "H5Dread");
- if (!H5_DBL_ABS_EQUAL(rdata, data1))
- TestErrPrintf("Error on line %d: data1!=rdata\n", __LINE__);
-
- /* Close first dataset */
- ret = H5Dclose(Dataset1);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close the file */
- ret = H5Fclose(file_id);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Test creating two datasets and deleting the first */
-
- /* Open the file */
- file_id = H5Fcreate(MISC14_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
- CHECK(file_id, FAIL, "H5Fcreate");
-
- /* Create first dataset & write data */
- Dataset1 = H5Dcreate2(file_id, MISC14_DSET1_NAME, H5T_NATIVE_DOUBLE, DataSpace, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(Dataset1, FAIL, "H5Dcreate2");
-
- ret = H5Dwrite(Dataset1, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data1);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Create second dataset */
- Dataset2 = H5Dcreate2(file_id, MISC14_DSET2_NAME, H5T_NATIVE_DOUBLE, DataSpace, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(Dataset2, FAIL, "H5Dcreate2");
-
- ret = H5Dwrite(Dataset2, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data2);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check data from second dataset */
- ret = H5Dread(Dataset2, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &rdata);
- CHECK(ret, FAIL, "H5Dread");
- if (!H5_DBL_ABS_EQUAL(rdata, data2))
- TestErrPrintf("Error on line %d: data2!=rdata\n", __LINE__);
-
- /* Unlink first dataset */
- ret = H5Ldelete(file_id, MISC14_DSET1_NAME, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Ldelete");
-
- /* Close first dataset */
- ret = H5Dclose(Dataset1);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Verify the data from dataset #2 */
- ret = H5Dread(Dataset2, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &rdata);
- CHECK(ret, FAIL, "H5Dread");
- if (!H5_DBL_ABS_EQUAL(rdata, data2))
- TestErrPrintf("Error on line %d: data2!=rdata\n", __LINE__);
-
- /* Close second dataset */
- ret = H5Dclose(Dataset2);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close the file */
- ret = H5Fclose(file_id);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Test creating three datasets and deleting the second */
-
- /* Open the file */
- file_id = H5Fcreate(MISC14_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
- CHECK(file_id, FAIL, "H5Fcreate");
-
- /* Create first dataset & write data */
- Dataset1 = H5Dcreate2(file_id, MISC14_DSET1_NAME, H5T_NATIVE_DOUBLE, DataSpace, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(Dataset1, FAIL, "H5Dcreate2");
-
- ret = H5Dwrite(Dataset1, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data1);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Create second dataset */
- Dataset2 = H5Dcreate2(file_id, MISC14_DSET2_NAME, H5T_NATIVE_DOUBLE, DataSpace, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(Dataset2, FAIL, "H5Dcreate2");
-
- ret = H5Dwrite(Dataset2, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data2);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Create third dataset */
- Dataset3 = H5Dcreate2(file_id, MISC14_DSET3_NAME, H5T_NATIVE_DOUBLE, DataSpace, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(Dataset2, FAIL, "H5Dcreate2");
-
- ret = H5Dwrite(Dataset3, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data3);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Check data from first dataset */
- ret = H5Dread(Dataset1, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &rdata);
- CHECK(ret, FAIL, "H5Dread");
- if (!H5_DBL_ABS_EQUAL(rdata, data1))
- TestErrPrintf("Error on line %d: data1!=rdata\n", __LINE__);
-
- /* Check data from third dataset */
- ret = H5Dread(Dataset3, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &rdata);
- CHECK(ret, FAIL, "H5Dread");
- if (!H5_DBL_ABS_EQUAL(rdata, data3))
- TestErrPrintf("Error on line %d: data3!=rdata\n", __LINE__);
-
- /* Unlink second dataset */
- ret = H5Ldelete(file_id, MISC14_DSET2_NAME, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Ldelete");
-
- /* Close second dataset */
- ret = H5Dclose(Dataset2);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Verify the data from dataset #1 */
- ret = H5Dread(Dataset1, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &rdata);
- CHECK(ret, FAIL, "H5Dread");
- if (!H5_DBL_ABS_EQUAL(rdata, data1))
- TestErrPrintf("Error on line %d: data1!=rdata\n", __LINE__);
-
- /* Verify the data from dataset #3 */
- ret = H5Dread(Dataset3, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, &rdata);
- CHECK(ret, FAIL, "H5Dread");
- if (!H5_DBL_ABS_EQUAL(rdata, data3))
- TestErrPrintf("Error on line %d: data3!=rdata\n", __LINE__);
-
- /* Close first dataset */
- ret = H5Dclose(Dataset1);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close third dataset */
- ret = H5Dclose(Dataset3);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close the file */
- ret = H5Fclose(file_id);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Close shared objects (dataspace & fapl) */
- ret = H5Sclose(DataSpace);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Pclose(fapl);
- CHECK(ret, FAIL, "H5Pclose");
-
-} /* end test_misc14() */
-
-/****************************************************************
-**
-** test_misc15(): Test that checking a file's access property list
-** more than once correctly increments internal reference counts.
-**
-****************************************************************/
-static void
-test_misc15(void)
-{
- char filename[MISC15_BUF_SIZE];
- hid_t file; /* File ID */
- hid_t fapl; /* File access property list */
- herr_t ret; /* Generic return value */
-
- fapl = h5_fileaccess();
- h5_fixname(MISC15_FILE, fapl, filename, MISC15_BUF_SIZE);
-
- /* Create the file & get it's FAPL */
- file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
- CHECK(file, FAIL, "H5Fcreate");
-
- ret = H5Pclose(fapl);
- CHECK(ret, FAIL, "H5Pclose");
-
- fapl = H5Fget_access_plist(file);
- CHECK(fapl, FAIL, "H5Fget_access_plist");
-
- ret = H5Pclose(fapl);
- CHECK(ret, FAIL, "H5Pclose");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Open the file & get it's FAPL again */
- file = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fopen");
-
- fapl = H5Fget_access_plist(file);
- CHECK(fapl, FAIL, "H5Fget_access_plist");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Verify that the file is still OK */
- ret = H5Fis_accessible(filename, fapl);
- CHECK(ret, FAIL, "H5Fis_accessible");
-
- ret = H5Pclose(fapl);
- CHECK(ret, FAIL, "H5Pclose");
-
- file = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fopen");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc15() */
-
-/****************************************************************
-**
-** test_misc16(): Test array of NULL-terminated
-** fixed-length string. It creates a dataset of fixed-length
-** strings. Each string is MISC16_STR_SIZE long. There are
-** totally MISC16_SPACE_DIM by MISC16_SPACE_RANK strings.
-**
-****************************************************************/
-static void
-test_misc16(void)
-{
- hid_t file; /* File ID */
- herr_t ret; /* Generic return value */
- char wdata[MISC16_SPACE_DIM][MISC16_STR_SIZE];
- char rdata[MISC16_SPACE_DIM][MISC16_STR_SIZE]; /* Information read in */
- hid_t dataset; /* Dataset ID */
- hid_t sid; /* Dataspace ID */
- hid_t tid; /* Datatype ID */
- hsize_t dims[] = {MISC16_SPACE_DIM};
- int i;
-
- memset(wdata, 0, sizeof(wdata));
- memset(rdata, 0, sizeof(rdata));
-
- /* Initialize the data */
- /* (Note that these are supposed to stress the code, so are a little weird) */
- memcpy(wdata[0], "1234567", MISC16_STR_SIZE);
- memcpy(wdata[1], "1234567\0", MISC16_STR_SIZE);
- memcpy(wdata[2], "12345678", MISC16_STR_SIZE);
- memcpy(wdata[3], "\0\0\0\0\0\0\0\0", MISC16_STR_SIZE);
-
- /* Create the file */
- file = H5Fcreate(MISC16_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fcreate");
-
- /* Create dataspace for datasets */
- sid = H5Screate_simple(MISC16_SPACE_RANK, dims, NULL);
- CHECK(sid, FAIL, "H5Screate_simple");
-
- /* Create a datatype to refer to */
- tid = H5Tcopy(H5T_C_S1);
- CHECK(tid, FAIL, "H5Tcopy");
-
- ret = H5Tset_size(tid, (size_t)MISC16_STR_SIZE);
- CHECK(ret, FAIL, "H5Tset_size");
-
- /*ret = H5Tset_strpad(tid,H5T_STR_NULLPAD);
- CHECK(ret, FAIL, "H5Tset_strpad");*/
-
- /* Create a dataset */
- dataset = H5Dcreate2(file, MISC16_DSET_NAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(dataset, FAIL, "H5Dcreate2");
-
- /* Write dataset to disk */
- ret = H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Read dataset from disk */
- ret = H5Dread(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Compare data read in */
- for (i = 0; i < MISC16_SPACE_DIM; i++) {
- if (strlen(wdata[i]) != strlen(rdata[i])) {
- TestErrPrintf(
- "Line %u: VL data length don't match!, strlen(wdata[%d])=%d, strlen(rdata[%d])=%d\n",
- (unsigned)__LINE__, (int)i, (int)strlen(wdata[i]), (int)i, (int)strlen(rdata[i]));
- continue;
- } /* end if */
- if (strcmp(wdata[i], rdata[i]) != 0) {
- TestErrPrintf("Line %u: VL data values don't match!, wdata[%d]=%s, rdata[%d]=%s\n",
- (unsigned)__LINE__, (int)i, wdata[i], (int)i, rdata[i]);
- continue;
- } /* end if */
- } /* end for */
-
- /* Close Dataset */
- ret = H5Dclose(dataset);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close disk dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc16() */
-
-/****************************************************************
-**
-** test_misc17(): Test array of characters. It creates a dataset
-** of ASCII characters, with dimensionality of MISC17_SPACE_DIM1
-** by MISC17_SPACE_DIM2.
-**
-****************************************************************/
-static void
-test_misc17(void)
-{
- hid_t file; /* File ID */
- herr_t ret; /* Generic return value */
- char wdata[MISC17_SPACE_DIM1][MISC17_SPACE_DIM2];
- char rdata[MISC17_SPACE_DIM1][MISC17_SPACE_DIM2]; /* Information read in */
- hid_t dataset; /* Dataset ID */
- hid_t sid; /* Dataspace ID */
- hid_t tid; /* Datatype ID */
- hsize_t dims[] = {MISC17_SPACE_DIM1, MISC17_SPACE_DIM2};
- int i;
-
- memset(wdata, 0, sizeof(wdata));
- memset(rdata, 0, sizeof(rdata));
-
- /* Initialize the data */
- /* (Note that these are supposed to stress the code, so are a little weird) */
- memcpy(wdata[0], "1234567", MISC17_SPACE_DIM2);
- memcpy(wdata[1], "1234567\0", MISC17_SPACE_DIM2);
- memcpy(wdata[2], "12345678", MISC17_SPACE_DIM2);
- memcpy(wdata[3], "\0\0\0\0\0\0\0\0", MISC17_SPACE_DIM2);
-
- /* Create the file */
- file = H5Fcreate(MISC17_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file, FAIL, "H5Fcreate");
-
- /* Create dataspace for datasets */
- sid = H5Screate_simple(MISC17_SPACE_RANK, dims, NULL);
- CHECK(sid, FAIL, "H5Screate_simple");
-
- /* Create a datatype to refer to */
- tid = H5Tcopy(H5T_C_S1);
- CHECK(tid, FAIL, "H5Tcopy");
-
- ret = H5Tset_strpad(tid, H5T_STR_NULLPAD);
- CHECK(ret, FAIL, "H5Tset_strpad");
-
- /* Create a dataset */
- dataset = H5Dcreate2(file, MISC17_DSET_NAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(dataset, FAIL, "H5Dcreate2");
-
- /* Write dataset to disk */
- ret = H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Read dataset from disk */
- ret = H5Dread(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Compare data in the way of strings. */
- for (i = 0; i < MISC17_SPACE_DIM1; i++) {
- if (strlen(wdata[i]) != strlen(rdata[i])) {
- TestErrPrintf(
- "Line %u: VL data length don't match!, strlen(wdata[%d])=%d, strlen(rdata[%d])=%d\n",
- (unsigned)__LINE__, (int)i, (int)strlen(wdata[i]), (int)i, (int)strlen(rdata[i]));
- continue;
- } /* end if */
- if (strcmp(wdata[i], rdata[i]) != 0) {
- TestErrPrintf("Line %u: VL data values don't match!, wdata[%d]=%s, rdata[%d]=%s\n",
- (unsigned)__LINE__, (int)i, wdata[i], (int)i, rdata[i]);
- continue;
- } /* end if */
- } /* end for */
-
- /* Close Dataset */
- ret = H5Dclose(dataset);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close disk dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Fclose(file);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc17() */
-
-/****************************************************************
-**
-** test_misc18(): Test new object header information in H5O_info_t
-** struct.
-**
-****************************************************************/
-static void
-test_misc18(void)
-{
- hid_t fid; /* File ID */
- hid_t sid; /* 'Space ID */
- hid_t did1, did2; /* Dataset IDs */
- hid_t aid; /* Attribute ID */
-#if 0
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- H5O_info1_t old_oinfo; /* (deprecated) information about object */
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
-#endif
- H5O_info2_t oinfo; /* Data model information about object */
-#if 0
- H5O_native_info_t ninfo; /* Native file format information about object */
-#endif
- char attr_name[32]; /* Attribute name buffer */
- unsigned u; /* Local index variable */
- herr_t ret; /* Generic return value */
-
- /* Create the file */
- fid = H5Fcreate(MISC18_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create dataspace for attributes */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create first dataset */
- did1 = H5Dcreate2(fid, MISC18_DSET1_NAME, H5T_STD_U32LE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(did1, FAIL, "H5Dcreate2");
-
- /* Get object information */
- ret = H5Oget_info_by_name3(fid, MISC18_DSET1_NAME, &oinfo, H5O_INFO_NUM_ATTRS, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name");
- VERIFY(oinfo.num_attrs, 0, "H5Oget_info_by_name");
-#if 0
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- ret = H5Oget_info_by_name2(fid, MISC18_DSET1_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS,
- H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.nmesgs, 6, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.nchunks, 1, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.space.total, 272, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.space.free, 152, "H5Oget_info_by_name");
- VERIFY(old_oinfo.num_attrs, 0, "H5Oget_info_by_name");
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
- ret = H5Oget_native_info_by_name(fid, MISC18_DSET1_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.nmesgs, 6, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.nchunks, 1, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.space.total, 272, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.space.free, 152, "H5Oget_native_info_by_name");
-#endif
-
- /* Create second dataset */
- did2 = H5Dcreate2(fid, MISC18_DSET2_NAME, H5T_STD_U32LE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(did2, FAIL, "H5Dcreate2");
-
- /* Get object information */
- ret = H5Oget_info_by_name3(fid, MISC18_DSET2_NAME, &oinfo, H5O_INFO_NUM_ATTRS, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name");
- VERIFY(oinfo.num_attrs, 0, "H5Oget_info_by_name");
-#if 0
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- ret = H5Oget_info_by_name2(fid, MISC18_DSET2_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS,
- H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.nmesgs, 6, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.nchunks, 1, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.space.total, 272, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.space.free, 152, "H5Oget_info_by_name");
- VERIFY(old_oinfo.num_attrs, 0, "H5Oget_info_by_name");
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
- ret = H5Oget_native_info_by_name(fid, MISC18_DSET2_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.nmesgs, 6, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.nchunks, 1, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.space.total, 272, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.space.free, 152, "H5Oget_native_info_by_name");
-#endif
-
- /* Loop creating attributes on each dataset, flushing them to the file each time */
- for (u = 0; u < 10; u++) {
- /* Set up attribute name */
- snprintf(attr_name, sizeof(attr_name), "Attr %u", u);
-
- /* Create & close attribute on first dataset */
- aid = H5Acreate2(did1, attr_name, H5T_STD_U32LE, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Create & close attribute on second dataset */
- aid = H5Acreate2(did2, attr_name, H5T_STD_U32LE, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Flush file, to 'fix' size of dataset object headers */
- ret = H5Fflush(fid, H5F_SCOPE_GLOBAL);
- CHECK(ret, FAIL, "H5Fflush");
- } /* end for */
-
- /* Get object information for dataset #1 now */
- ret = H5Oget_info_by_name3(fid, MISC18_DSET1_NAME, &oinfo, H5O_INFO_NUM_ATTRS, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name");
- VERIFY(oinfo.num_attrs, 10, "H5Oget_info_by_name");
-#if 0
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- ret = H5Oget_info_by_name2(fid, MISC18_DSET1_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS,
- H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.nmesgs, 24, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.nchunks, 9, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.space.total, 888, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.space.free, 16, "H5Oget_info_by_name");
- VERIFY(old_oinfo.num_attrs, 10, "H5Oget_info_by_name");
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
- ret = H5Oget_native_info_by_name(fid, MISC18_DSET1_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.nmesgs, 24, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.nchunks, 9, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.space.total, 888, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.space.free, 16, "H5Oget_native_info_by_name");
-#endif
-
- /* Get object information for dataset #2 now */
- ret = H5Oget_info_by_name3(fid, MISC18_DSET2_NAME, &oinfo, H5O_INFO_NUM_ATTRS, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name");
- VERIFY(oinfo.num_attrs, 10, "H5Oget_info_by_name");
-#if 0
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- ret = H5Oget_info_by_name2(fid, MISC18_DSET2_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS,
- H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.nmesgs, 24, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.nchunks, 9, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.space.total, 888, "H5Oget_info_by_name");
- VERIFY(old_oinfo.hdr.space.free, 16, "H5Oget_info_by_name");
- VERIFY(old_oinfo.num_attrs, 10, "H5Oget_info_by_name");
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
- ret = H5Oget_native_info_by_name(fid, MISC18_DSET2_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Oget_mative_info_by_name");
- VERIFY(ninfo.hdr.nmesgs, 24, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.nchunks, 9, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.space.total, 888, "H5Oget_native_info_by_name");
- VERIFY(ninfo.hdr.space.free, 16, "H5Oget_native_info_by_name");
-#endif
-
- /* Close second dataset */
- ret = H5Dclose(did2);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close first dataset */
- ret = H5Dclose(did1);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close disk dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc18() */
-
-/****************************************************************
-**
-** test_misc19(): Test incrementing & decrementing ref count on IDs
-**
-****************************************************************/
-static void
-test_misc19(void)
-{
- hid_t fid = -1; /* File ID */
- hid_t sid = -1; /* Dataspace ID */
- hid_t did = -1; /* Dataset ID */
- hid_t tid = -1; /* Datatype ID */
- hid_t aid = -1; /* Attribute ID */
- hid_t plid = -1; /* Property List ID */
- hid_t pcid = -1; /* Property Class ID */
- hid_t gid = -1; /* Group ID */
- hid_t ecid = -1; /* Error Class ID */
- hid_t emid = -1; /* Error Message ID */
- hid_t esid = -1; /* Error Stack ID */
-#if 0
- hid_t vfdid = -1; /* Virtual File Driver ID */
- hid_t volid = -1; /* Virtual Object Layer ID */
- H5FD_class_t *vfd_cls = NULL; /* VFD class */
- H5VL_class_t *vol_cls = NULL; /* VOL class */
-#endif
- int rc; /* Reference count */
- herr_t ret; /* Generic return value */
-
- /* Check H5I operations on files */
-
- /* Create the file */
- fid = H5Fcreate(MISC19_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Check the reference count */
- rc = H5Iget_ref(fid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(fid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the file normally */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Check the reference count */
- rc = H5Iget_ref(fid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the file by decrementing the reference count */
- rc = H5Idec_ref(fid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the file again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Fclose(fid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Fclose");
-
- /* Check H5I operations on property lists */
-
- /* Create the property list */
- plid = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(plid, FAIL, "H5Pcreate");
-
- /* Check the reference count */
- rc = H5Iget_ref(plid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(plid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the property list normally */
- ret = H5Pclose(plid);
- CHECK(ret, FAIL, "H5Pclose");
-
- /* Check the reference count */
- rc = H5Iget_ref(plid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the property list by decrementing the reference count */
- rc = H5Idec_ref(plid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the property list again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Pclose(plid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Pclose");
-
- /* Check H5I operations on property classes */
-
- /* Create a property class */
- pcid = H5Pcreate_class(H5P_DATASET_CREATE, "foo", NULL, NULL, NULL, NULL, NULL, NULL);
- CHECK(pcid, FAIL, "H5Pcreate_class");
-
- /* Check the reference count */
- rc = H5Iget_ref(pcid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(pcid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the property class normally */
- ret = H5Pclose_class(pcid);
- CHECK(ret, FAIL, "H5Pclose_class");
-
- /* Check the reference count */
- rc = H5Iget_ref(pcid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the property class by decrementing the reference count */
- rc = H5Idec_ref(pcid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the property class again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Pclose_class(pcid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Pclose_class");
-
- /* Check H5I operations on datatypes */
-
- /* Create a datatype */
- tid = H5Tcreate(H5T_OPAQUE, (size_t)16);
- CHECK(tid, FAIL, "H5Tcreate");
-
- /* Check the reference count */
- rc = H5Iget_ref(tid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(tid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the datatype normally */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Check the reference count */
- rc = H5Iget_ref(tid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the datatype by decrementing the reference count */
- rc = H5Idec_ref(tid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the datatype again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Tclose(tid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Tclose");
-
- /* Check H5I operations on dataspaces */
-
- /* Create a dataspace */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Check the reference count */
- rc = H5Iget_ref(sid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(sid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the dataspace normally */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Check the reference count */
- rc = H5Iget_ref(sid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the dataspace by decrementing the reference count */
- rc = H5Idec_ref(sid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the dataspace again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Sclose(sid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Sclose");
-
- /* Check H5I operations on datasets */
-
- /* Create a file */
- fid = H5Fcreate(MISC19_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create a dataspace */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create a dataset */
- did = H5Dcreate2(fid, MISC19_DSET_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Check the reference count */
- rc = H5Iget_ref(did);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(did);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the dataset normally */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Check the reference count */
- rc = H5Iget_ref(did);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the dataset by decrementing the reference count */
- rc = H5Idec_ref(did);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the dataset again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Dclose(did);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Dclose");
-
- /* Close the dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Check H5I operations on attributes */
-
- /* Create a file */
- fid = H5Fcreate(MISC19_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Open the root group */
- gid = H5Gopen2(fid, "/", H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Create a dataspace */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create an attribute */
- aid = H5Acreate2(gid, MISC19_ATTR_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- /* Check the reference count */
- rc = H5Iget_ref(aid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(aid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the dataset normally */
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Check the reference count */
- rc = H5Iget_ref(aid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the attribute by decrementing the reference count */
- rc = H5Idec_ref(aid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the attribute again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Aclose(aid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Aclose");
-
- /* Close the root group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close the dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Check H5I operations on groups */
-
- /* Create a file */
- fid = H5Fcreate(MISC19_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create a group */
- gid = H5Gcreate2(fid, MISC19_GROUP_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gcreate2");
-
- /* Check the reference count */
- rc = H5Iget_ref(gid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(gid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the group normally */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Check the reference count */
- rc = H5Iget_ref(gid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the group by decrementing the reference count */
- rc = H5Idec_ref(gid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the group again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Gclose(gid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Gclose");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Check H5I operations on error classes */
-
- /* Create an error class */
- ecid = H5Eregister_class("foo", "bar", "baz");
- CHECK(ecid, FAIL, "H5Eregister_class");
-
- /* Check the reference count */
- rc = H5Iget_ref(ecid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(ecid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the error class normally */
- ret = H5Eunregister_class(ecid);
- CHECK(ret, FAIL, "H5Eunregister_class");
-
- /* Check the reference count */
- rc = H5Iget_ref(ecid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the error class by decrementing the reference count */
- rc = H5Idec_ref(ecid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the error class again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Eunregister_class(ecid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Eunregister_class");
-
- /* Check H5I operations on error messages */
-
- /* Create an error class */
- ecid = H5Eregister_class("foo", "bar", "baz");
- CHECK(ecid, FAIL, "H5Eregister_class");
-
- /* Create an error message */
- emid = H5Ecreate_msg(ecid, H5E_MAJOR, "mumble");
- CHECK(emid, FAIL, "H5Ecreate_msg");
-
- /* Check the reference count */
- rc = H5Iget_ref(emid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(emid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the error message normally */
- ret = H5Eclose_msg(emid);
- CHECK(ret, FAIL, "H5Eclose_msg");
-
- /* Check the reference count */
- rc = H5Iget_ref(emid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the error message by decrementing the reference count */
- rc = H5Idec_ref(emid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the error message again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Eclose_msg(emid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Eclose_msg");
-
- /* Close the error class */
- ret = H5Eunregister_class(ecid);
- CHECK(ret, FAIL, "H5Eunregister_class");
-
- /* Check H5I operations on error stacks */
-
- /* Create an error stack */
- esid = H5Eget_current_stack();
- CHECK(esid, FAIL, "H5Eget_current_stack");
-
- /* Check the reference count */
- rc = H5Iget_ref(esid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Inc the reference count */
- rc = H5Iinc_ref(esid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Close the error stack normally */
- ret = H5Eclose_stack(esid);
- CHECK(ret, FAIL, "H5Eclose_stack");
-
- /* Check the reference count */
- rc = H5Iget_ref(esid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Close the error stack by decrementing the reference count */
- rc = H5Idec_ref(esid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try closing the error stack again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5Eclose_stack(esid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Eclose_stack");
-
-#if 0
- /* Check H5I operations on virtual file drivers */
-
- /* Get a VFD class to register */
- vfd_cls = h5_get_dummy_vfd_class();
- CHECK_PTR(vfd_cls, "h5_get_dummy_vfd_class");
-
- /* Register a virtual file driver */
- vfdid = H5FDregister(vfd_cls);
- CHECK(vfdid, FAIL, "H5FDregister");
-
- /* Check the reference count */
- rc = H5Iget_ref(vfdid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Increment the reference count */
- rc = H5Iinc_ref(vfdid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Unregister the VFD normally */
- ret = H5FDunregister(vfdid);
- CHECK(ret, FAIL, "H5FDunregister");
-
- /* Check the reference count */
- rc = H5Iget_ref(vfdid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Unregister the VFD by decrementing the reference count */
- rc = H5Idec_ref(vfdid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try unregistering the VFD again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5FDunregister(vfdid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5FDunregister");
-
- free(vfd_cls);
-
- /* Check H5I operations on virtual object connectors */
-
- /* Get a VOL class to register */
- vol_cls = h5_get_dummy_vol_class();
- CHECK_PTR(vol_cls, "h5_get_dummy_vol_class");
-
- /* Register a VOL connector */
- volid = H5VLregister_connector(vol_cls, H5P_DEFAULT);
- CHECK(volid, FAIL, "H5VLregister_connector");
-
- /* Check the reference count */
- rc = H5Iget_ref(volid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Increment the reference count */
- rc = H5Iinc_ref(volid);
- VERIFY(rc, 2, "H5Iinc_ref");
-
- /* Unregister the VOL connector normally */
- ret = H5VLunregister_connector(volid);
- CHECK(ret, FAIL, "H5VLunregister_connector");
-
- /* Check the reference count */
- rc = H5Iget_ref(volid);
- VERIFY(rc, 1, "H5Iget_ref");
-
- /* Unregister the VOL connector by decrementing the reference count */
- rc = H5Idec_ref(volid);
- VERIFY(rc, 0, "H5Idec_ref");
-
- /* Try unregistering the VOL connector again (should fail) */
- H5E_BEGIN_TRY
- {
- ret = H5VLunregister_connector(volid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5VLunregister_connector");
-
- free(vol_cls);
-#endif
-} /* end test_misc19() */
-
-/****************************************************************
-**
-** test_misc20(): Test problems with version 2 of storage layout
-** message truncating dimensions
-**
-****************************************************************/
-#if 0
-static void
-test_misc20(void)
-{
- hid_t fid; /* File ID */
- hid_t sid; /* 'Space ID */
- hid_t did; /* Dataset ID */
- hid_t dcpl; /* Dataset creation property list ID */
- int rank = MISC20_SPACE_RANK; /* Rank of dataspace */
- hsize_t big_dims[MISC20_SPACE_RANK] = {MISC20_SPACE_DIM0, MISC20_SPACE_DIM1}; /* Large dimensions */
- hsize_t small_dims[MISC20_SPACE_RANK] = {MISC20_SPACE2_DIM0, MISC20_SPACE2_DIM1}; /* Small dimensions */
- unsigned version; /* Version of storage layout info */
- hsize_t contig_size; /* Size of contiguous storage size from layout into */
- const char *testfile = H5_get_srcdir_filename(MISC20_FILE_OLD); /* Corrected test file name */
- bool driver_is_default_compatible;
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing large dimension truncation fix\n"));
-
- ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible);
- CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible");
-
- if (!driver_is_default_compatible) {
- printf("-- SKIPPED --\n");
- return;
- }
-
- /* Verify that chunks with dimensions that are too large get rejected */
-
- /* Create a dataset creation property list */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(dcpl, FAIL, "H5Pcreate");
-
- /* Try to use chunked storage for this dataset */
- ret = H5Pset_chunk(dcpl, rank, big_dims);
- VERIFY(ret, FAIL, "H5Pset_chunk");
-
- /* Verify that the storage for the dataset is the correct size and hasn't
- * been truncated.
- */
-
- /* Create the file */
- fid = H5Fcreate(MISC20_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create dataspace with _really_ big dimensions */
- sid = H5Screate_simple(rank, big_dims, NULL);
- CHECK(sid, FAIL, "H5Screate_simple");
-
- /* Make certain that the dataset's storage doesn't get allocated :-) */
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create dataset with big dataspace */
- did = H5Dcreate2(fid, MISC20_DSET_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Close datasset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Create dataspace with small dimensions */
- sid = H5Screate_simple(rank, small_dims, NULL);
- CHECK(sid, FAIL, "H5Screate_simple");
-
- /* Create dataset with big dataspace */
- did = H5Dcreate2(fid, MISC20_DSET2_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Close datasset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close dataset creation property list */
- ret = H5Pclose(dcpl);
- CHECK(ret, FAIL, "H5Pclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Re-open the file */
- fid = H5Fopen(MISC20_FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Open dataset with big dimensions */
- did = H5Dopen2(fid, MISC20_DSET_NAME, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dopen2");
-
- /* Get the layout version */
- ret = H5D__layout_version_test(did, &version);
- CHECK(ret, FAIL, "H5D__layout_version_test");
- VERIFY(version, 3, "H5D__layout_version_test");
-
- /* Get the layout contiguous storage size */
- ret = H5D__layout_contig_size_test(did, &contig_size);
- CHECK(ret, FAIL, "H5D__layout_contig_size_test");
- VERIFY(contig_size, (MISC20_SPACE_DIM0 * MISC20_SPACE_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5D__layout_contig_size_test");
-
- /* Close datasset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Open dataset with small dimensions */
- did = H5Dopen2(fid, MISC20_DSET2_NAME, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dopen2");
-
- /* Get the layout version */
- ret = H5D__layout_version_test(did, &version);
- CHECK(ret, FAIL, "H5D__layout_version_test");
- VERIFY(version, 3, "H5D__layout_version_test");
-
- /* Get the layout contiguous storage size */
- ret = H5D__layout_contig_size_test(did, &contig_size);
- CHECK(ret, FAIL, "H5D__layout_contig_size_test");
- VERIFY(contig_size, (MISC20_SPACE2_DIM0 * MISC20_SPACE2_DIM1 * H5Tget_size(H5T_NATIVE_INT)),
- "H5D__layout_contig_size_test");
-
- /* Close datasset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Verify that the storage size is computed correctly for older versions of layout info */
-
- /*
- * Open the old file and the dataset and get old settings.
- */
- fid = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Open dataset with small dimensions */
- did = H5Dopen2(fid, MISC20_DSET_NAME, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dopen2");
-
- /* Get the layout version */
- ret = H5D__layout_version_test(did, &version);
- CHECK(ret, FAIL, "H5D__layout_version_test");
- VERIFY(version, 2, "H5D__layout_version_test");
-
- /* Get the layout contiguous storage size */
- ret = H5D__layout_contig_size_test(did, &contig_size);
- CHECK(ret, FAIL, "H5D__layout_contig_size_test");
- VERIFY(contig_size, (MISC20_SPACE_DIM0 * MISC20_SPACE_DIM1 * H5Tget_size(H5T_STD_I32LE)),
- "H5D__layout_contig_size_test");
-
- /* Close datasset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
-} /* end test_misc20() */
-#endif
-
-/*
- test_misc21 and test_misc22 should be executed when SZIP is present
- and encoder is available.
- EIP 2004/8/04
-*/
-#if defined(H5_HAVE_FILTER_SZIP) && !defined(H5_API_TEST_NO_FILTERS)
-
-/****************************************************************
-**
-** test_misc21(): Test that late allocation time is treated the same
-** as incremental allocation time, for chunked datasets
-** when overwriting entire dataset where the chunks
-** don't exactly match the dataspace.
-**
-****************************************************************/
-static void
-test_misc21(void)
-{
- hid_t fid, sid, dcpl, dsid;
- char *buf;
- hsize_t dims[2] = {MISC21_SPACE_DIM0, MISC21_SPACE_DIM1},
- chunk_size[2] = {MISC21_CHUNK_DIM0, MISC21_CHUNK_DIM1};
- herr_t ret; /* Generic return value */
-
- if (h5_szip_can_encode() != 1)
- return;
- /* Output message about test being performed */
- MESSAGE(5, ("Testing late allocation time w/chunks & filters\n"));
-
- /* Allocate space for the buffer */
- buf = (char *)calloc(MISC21_SPACE_DIM0 * MISC21_SPACE_DIM1, 1);
- CHECK(buf, NULL, "calloc");
-
- /* Create the file */
- fid = H5Fcreate(MISC21_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create the DCPL */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(dcpl, FAIL, "H5Pcreate");
-
- /* Set custom DCPL properties */
- ret = H5Pset_chunk(dcpl, MISC21_SPACE_RANK, chunk_size);
- CHECK(ret, FAIL, "H5Pset_chunk");
- ret = H5Pset_szip(dcpl, H5_SZIP_NN_OPTION_MASK, 8);
- CHECK(ret, FAIL, "H5Pset_deflate");
- ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
- CHECK(ret, FAIL, "H5Pset_alloc_time");
-
- /* Create the dataspace for the dataset */
- sid = H5Screate_simple(MISC21_SPACE_RANK, dims, NULL);
- CHECK(ret, FAIL, "H5Screate_simple");
-
- /* Create the dataset */
- dsid = H5Dcreate2(fid, MISC21_DSET_NAME, H5T_NATIVE_UINT8, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(dsid, FAIL, "H5Dcreate2");
-
- /* Write out the whole dataset */
- ret = H5Dwrite(dsid, H5T_NATIVE_UINT8, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Close everything */
- ret = H5Dclose(dsid);
- CHECK(ret, FAIL, "H5Dclose");
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Pclose(dcpl);
- CHECK(ret, FAIL, "H5Pclose");
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- free(buf);
-} /* end test_misc21() */
-
-/****************************************************************
-**
-** test_misc22(): Test SZIP bits-per-pixel parameter.
-** This should be set according to the datatype.
-** Tests for precision and offset combo's.
-**
-****************************************************************/
-static void
-test_misc22(void)
-{
- hid_t fid, sid, dcpl, dsid, dcpl2;
- char *buf;
- hsize_t dims[2] = {MISC22_SPACE_DIM0, MISC22_SPACE_DIM1},
- chunk_size[2] = {MISC22_CHUNK_DIM0, MISC22_CHUNK_DIM1};
- herr_t ret; /* Generic return value */
- hid_t dtype;
- /* should extend test to signed ints */
- hid_t idts[4];
- /* do the same for floats
- hid_t fdts[2]={H5T_NATIVE_FLOAT32,
- H5T_NATIVE_FLOAT64}
- */
- size_t prec[4] = {3, 11, 19, 27};
- size_t offsets[5] = {0, 3, 11, 19, 27};
- int i, j, k;
- unsigned int flags;
- size_t cd_nelmts = 32;
- unsigned int cd_values[32];
- size_t correct;
-
- if (h5_szip_can_encode() != 1)
- return;
- idts[0] = H5Tcopy(H5T_NATIVE_UINT8);
- idts[1] = H5Tcopy(H5T_NATIVE_UINT16);
- idts[2] = H5Tcopy(H5T_NATIVE_UINT32);
- idts[3] = H5Tcopy(H5T_NATIVE_UINT64);
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing datatypes with SZIP filter\n"));
-
- /* Allocate space for the buffer */
- buf = (char *)calloc(MISC22_SPACE_DIM0 * MISC22_SPACE_DIM1, 8);
- CHECK(buf, NULL, "calloc");
-
- /* Create the file */
- fid = H5Fcreate(MISC22_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create the dataspace for the dataset */
- sid = H5Screate_simple(MISC22_SPACE_RANK, dims, NULL);
- CHECK(sid, FAIL, "H5Screate_simple");
-
- for (i = 0; i < 4; i++) {
- for (j = 0; j < 4; j++) {
- if (prec[j] > (H5Tget_size(idts[i]) * 8))
- continue; /* skip irrelevant combination */
- for (k = 0; k < 5; k++) {
- if (offsets[k] > (H5Tget_size(idts[i]) * 8))
- continue; /* skip irrelevant combinations */
- if ((prec[j] + offsets[k]) > (H5Tget_size(idts[i]) * 8))
- continue;
-
- MESSAGE(5, (" Testing datatypes size=%zu precision=%u offset=%d\n", H5Tget_size(idts[i]),
- (unsigned)prec[j], (unsigned)offsets[k]));
-
- /* Create the DCPL */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(dcpl, FAIL, "H5Pcreate");
-
- /* Set DCPL properties */
- ret = H5Pset_chunk(dcpl, MISC22_SPACE_RANK, chunk_size);
- CHECK(ret, FAIL, "H5Pset_chunk");
- /* Set custom DCPL properties */
- ret = H5Pset_szip(dcpl, H5_SZIP_NN_OPTION_MASK, 32); /* vary the PPB */
- CHECK(ret, FAIL, "H5Pset_szip");
-
- /* set up the datatype according to the loop */
- dtype = H5Tcopy(idts[i]);
- CHECK(dtype, FAIL, "H5Tcopy");
- ret = H5Tset_precision(dtype, prec[j]);
- CHECK(ret, FAIL, "H5Tset_precision");
- ret = H5Tset_offset(dtype, offsets[k]);
- CHECK(ret, FAIL, "H5Tset_precision");
-
- /* compute the correct PPB that should be set by SZIP */
- if (offsets[k] == 0)
- correct = prec[j];
- else
- correct = H5Tget_size(idts[i]) * 8;
- if (correct > 24) {
- if (correct <= 32)
- correct = 32;
- else if (correct <= 64)
- correct = 64;
- } /* end if */
-
- /* Create the dataset */
- dsid = H5Dcreate2(fid, MISC22_DSET_NAME, dtype, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(dsid, FAIL, "H5Dcreate2");
-
- /* Write out the whole dataset */
- ret = H5Dwrite(dsid, dtype, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
- CHECK(ret, FAIL, "H5Dwrite");
-
- /* Close everything */
- ret = H5Dclose(dsid);
- CHECK(ret, FAIL, "H5Dclose");
- ret = H5Tclose(dtype);
- CHECK(ret, FAIL, "H5Tclose");
- ret = H5Pclose(dcpl);
- CHECK(ret, FAIL, "H5Pclose");
-
- dsid = H5Dopen2(fid, MISC22_DSET_NAME, H5P_DEFAULT);
- CHECK(dsid, FAIL, "H5Dopen2");
-
- dcpl2 = H5Dget_create_plist(dsid);
- CHECK(dcpl2, FAIL, "H5Dget_create_plist");
-
- ret = H5Pget_filter_by_id2(dcpl2, H5Z_FILTER_SZIP, &flags, &cd_nelmts, cd_values, 0, NULL,
- NULL);
- CHECK(ret, FAIL, "H5Pget_filter_by_id2");
-
- VERIFY(cd_values[2], (unsigned)correct, "SZIP filter returned value for precision");
-
- ret = H5Dclose(dsid);
- CHECK(ret, FAIL, "H5Dclose");
-
- ret = H5Ldelete(fid, MISC22_DSET_NAME, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Ldelete");
-
- ret = H5Pclose(dcpl2);
- CHECK(ret, FAIL, "H5Pclose");
- }
- }
- }
- ret = H5Tclose(idts[0]);
- CHECK(ret, FAIL, "H5Tclose");
- ret = H5Tclose(idts[1]);
- CHECK(ret, FAIL, "H5Tclose");
- ret = H5Tclose(idts[2]);
- CHECK(ret, FAIL, "H5Tclose");
- ret = H5Tclose(idts[3]);
- CHECK(ret, FAIL, "H5Tclose");
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- free(buf);
-} /* end test_misc22() */
-#endif /* H5_HAVE_FILTER_SZIP */
-
-/****************************************************************
-**
-** test_misc23(): Test intermediate group creation.
-**
-****************************************************************/
-static void
-test_misc23(void)
-{
- hsize_t dims[] = {10};
- hid_t file_id = 0, group_id = 0, type_id = 0, space_id = 0, tmp_id = 0, create_id = H5P_DEFAULT,
- access_id = H5P_DEFAULT;
- char objname[MISC23_NAME_BUF_SIZE]; /* Name of object */
- H5O_info2_t oinfo;
- htri_t tri_status;
- ssize_t namelen;
- herr_t status;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing intermediate group creation\n"));
-
- /* Create a new file using default properties. */
- file_id = H5Fcreate(MISC23_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file_id, FAIL, "H5Fcreate");
-
- /* Build some infrastructure */
- group_id = H5Gcreate2(file_id, "/A", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(group_id, FAIL, "H5Gcreate2");
-
- space_id = H5Screate_simple(1, dims, NULL);
- CHECK(space_id, FAIL, "H5Screate_simple");
-
- type_id = H5Tcopy(H5T_STD_I32BE);
- CHECK(type_id, FAIL, "H5Tcopy");
-
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- /**********************************************************************
- * test the old APIs
- **********************************************************************/
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gcreate1(file_id, "/A/B00a/grp", (size_t)0);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gcreate1");
-
- /* Make sure that size_hint values that can't fit into a 32-bit
- * unsigned integer are rejected. Only necessary on systems where
- * size_t is a 64-bit type.
- */
- if (SIZE_MAX > UINT32_MAX) {
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gcreate1(file_id, "/size_hint_too_large", SIZE_MAX);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gcreate1");
- }
-
- /* Make sure the largest size_hint value works */
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gcreate1(file_id, "/largest_size_hint", UINT32_MAX);
- }
- H5E_END_TRY
- CHECK(tmp_id, FAIL, "H5Gcreate1");
- status = H5Gclose(tmp_id);
- CHECK(status, FAIL, "H5Gclose");
-
- tmp_id = H5Gcreate1(file_id, "/A/grp", (size_t)0);
- CHECK(tmp_id, FAIL, "H5Gcreate1");
- status = H5Gclose(tmp_id);
- CHECK(status, FAIL, "H5Gclose");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dcreate1(file_id, "/A/B00c/dset", type_id, space_id, create_id);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dcreate1");
-
- tmp_id = H5Dcreate1(file_id, "/A/dset", type_id, space_id, create_id);
- CHECK(tmp_id, FAIL, "H5Dcreate1");
- status = H5Dclose(tmp_id);
- CHECK(status, FAIL, "H5Dclose");
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
-
- /**********************************************************************
- * test H5Gcreate2()
- **********************************************************************/
-
- /* Create link creation property list */
- create_id = H5Pcreate(H5P_LINK_CREATE);
- CHECK(create_id, FAIL, "H5Pcreate");
-
- /* Set flag for intermediate group creation */
- status = H5Pset_create_intermediate_group(create_id, true);
- CHECK(status, FAIL, "H5Pset_create_intermediate_group");
-
- tmp_id = H5Gcreate2(file_id, "/A/B01/grp", create_id, H5P_DEFAULT, access_id);
- CHECK(tmp_id, FAIL, "H5Gcreate2");
-
- /* Query that the name of the new group is correct */
- namelen = H5Iget_name(tmp_id, objname, (size_t)MISC23_NAME_BUF_SIZE);
- CHECK(namelen, FAIL, "H5Iget_name");
- VERIFY_STR(objname, "/A/B01/grp", "H5Iget_name");
-
- status = H5Gclose(tmp_id);
- CHECK(status, FAIL, "H5Gclose");
-
- /* Check that intermediate group is set up correctly */
- tmp_id = H5Gopen2(file_id, "/A/B01", H5P_DEFAULT);
- CHECK(tmp_id, FAIL, "H5Gopen2");
-
- status = H5Oget_info3(tmp_id, &oinfo, H5O_INFO_BASIC);
- CHECK(status, FAIL, "H5Oget_info3");
- VERIFY(oinfo.rc, 1, "H5Oget_info3");
-
- status = H5Gclose(tmp_id);
- CHECK(status, FAIL, "H5Gclose");
-
- tmp_id = H5Gcreate2(file_id, "/A/B02/C02/grp", create_id, H5P_DEFAULT, access_id);
- CHECK(tmp_id, FAIL, "H5Gcreate2");
-
- status = H5Gclose(tmp_id);
- CHECK(status, FAIL, "H5Gclose");
-
- tmp_id = H5Gcreate2(group_id, "B03/grp/", create_id, H5P_DEFAULT, access_id);
- CHECK(tmp_id, FAIL, "H5Gcreate2");
-
- status = H5Gclose(tmp_id);
- CHECK(status, FAIL, "H5Gclose");
-
- tmp_id = H5Gcreate2(group_id, "/A/B04/grp/", create_id, H5P_DEFAULT, access_id);
- CHECK(tmp_id, FAIL, "H5Gcreate2");
-
- status = H5Gclose(tmp_id);
- CHECK(status, FAIL, "H5Gclose");
-
- tmp_id = H5Gcreate2(file_id, "/A/B05/C05/A", create_id, H5P_DEFAULT, access_id);
- CHECK(tmp_id, FAIL, "H5Gcreate2");
-
- status = H5Gclose(tmp_id);
- CHECK(status, FAIL, "H5Gclose");
-
- status = H5Pclose(create_id);
- CHECK(status, FAIL, "H5Pclose");
-
- /**********************************************************************
- * test H5Dcreate2()
- **********************************************************************/
-
- /* Create link creation property list */
- create_id = H5Pcreate(H5P_LINK_CREATE);
- CHECK(create_id, FAIL, "H5Pcreate");
-
- /* Set flag for intermediate group creation */
- status = H5Pset_create_intermediate_group(create_id, true);
- CHECK(status, FAIL, "H5Pset_create_intermediate_group");
-
- tmp_id = H5Dcreate2(file_id, "/A/B06/dset", type_id, space_id, create_id, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(tmp_id, FAIL, "H5Dcreate2");
-
- status = H5Dclose(tmp_id);
- CHECK(status, FAIL, "H5Dclose");
-
- tmp_id = H5Dcreate2(file_id, "/A/B07/B07/dset", type_id, space_id, create_id, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(tmp_id, FAIL, "H5Dcreate2");
-
- status = H5Dclose(tmp_id);
- CHECK(status, FAIL, "H5Dclose");
-
- tmp_id = H5Dcreate2(group_id, "B08/dset", type_id, space_id, create_id, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(tmp_id, FAIL, "H5Dcreate2");
-
- status = H5Dclose(tmp_id);
- CHECK(status, FAIL, "H5Dclose");
-
- tmp_id = H5Dcreate2(group_id, "/A/B09/dset", type_id, space_id, create_id, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(tmp_id, FAIL, "H5Dcreate2");
-
- status = H5Dclose(tmp_id);
- CHECK(status, FAIL, "H5Dclose");
-
- tmp_id = H5Dcreate2(file_id, "/A/B10/C10/A/dset", type_id, space_id, create_id, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(tmp_id, FAIL, "H5Dcreate2");
-
- status = H5Dclose(tmp_id);
- CHECK(status, FAIL, "H5Dclose");
-
- status = H5Tclose(type_id);
- CHECK(status, FAIL, "H5Tclose");
-
- status = H5Sclose(space_id);
- CHECK(status, FAIL, "H5Sclose");
-
- status = H5Pclose(create_id);
- CHECK(status, FAIL, "H5Pclose");
-
- /**********************************************************************
- * test H5Tcommit2()
- **********************************************************************/
-
- /* Create link creation property list */
- create_id = H5Pcreate(H5P_LINK_CREATE);
- CHECK(create_id, FAIL, "H5Pcreate");
-
- /* Set flag for intermediate group creation */
- status = H5Pset_create_intermediate_group(create_id, true);
- CHECK(status, FAIL, "H5Pset_create_intermediate_group");
-
- tmp_id = H5Tcopy(H5T_NATIVE_INT16);
- CHECK(tmp_id, FAIL, "H5Tcopy");
-
- status = H5Tcommit2(file_id, "/A/B11/dtype", tmp_id, create_id, H5P_DEFAULT, access_id);
- CHECK(status, FAIL, "H5Tcommit2");
-
- status = H5Tclose(tmp_id);
- CHECK(status, FAIL, "H5Tclose");
-
- tmp_id = H5Tcopy(H5T_NATIVE_INT32);
- CHECK(tmp_id, FAIL, "H5Tcopy");
-
- status = H5Tcommit2(file_id, "/A/B12/C12/dtype", tmp_id, create_id, H5P_DEFAULT, access_id);
- CHECK(status, FAIL, "H5Tcommit2");
-
- status = H5Tclose(tmp_id);
- CHECK(status, FAIL, "H5Tclose");
-
- tmp_id = H5Tcopy(H5T_NATIVE_INT64);
- CHECK(tmp_id, FAIL, "H5Tcopy");
-
- status = H5Tcommit2(group_id, "B13/C12/dtype", tmp_id, create_id, H5P_DEFAULT, access_id);
- CHECK(status, FAIL, "H5Tcommit2");
-
- status = H5Tclose(tmp_id);
- CHECK(status, FAIL, "H5Tclose");
-
- tmp_id = H5Tcopy(H5T_NATIVE_FLOAT);
- CHECK(tmp_id, FAIL, "H5Tcopy");
-
- status = H5Tcommit2(group_id, "/A/B14/dtype", tmp_id, create_id, H5P_DEFAULT, access_id);
- CHECK(status, FAIL, "H5Tcommit2");
-
- status = H5Tclose(tmp_id);
- CHECK(status, FAIL, "H5Tclose");
-
- tmp_id = H5Tcopy(H5T_NATIVE_DOUBLE);
- CHECK(tmp_id, FAIL, "H5Tcopy");
-
- status = H5Tcommit2(file_id, "/A/B15/C15/A/dtype", tmp_id, create_id, H5P_DEFAULT, access_id);
- CHECK(status, FAIL, "H5Tcommit2");
-
- status = H5Tclose(tmp_id);
- CHECK(status, FAIL, "H5Tclose");
-
- status = H5Pclose(create_id);
- CHECK(status, FAIL, "H5Pclose");
-
- /**********************************************************************
- * test H5Lcopy()
- **********************************************************************/
-
- /* Create link creation property list */
- create_id = H5Pcreate(H5P_LINK_CREATE);
- CHECK(create_id, FAIL, "H5Pcreate");
-
- /* Set flag for intermediate group creation */
- status = H5Pset_create_intermediate_group(create_id, true);
- CHECK(status, FAIL, "H5Pset_create_intermediate_group");
-
- status = H5Lcopy(file_id, "/A/B01/grp", file_id, "/A/B16/grp", create_id, access_id);
- CHECK(status, FAIL, "H5Lcopy");
-
- tri_status = H5Lexists(file_id, "/A/B16/grp", access_id);
- VERIFY(tri_status, true, "H5Lexists");
-
- tri_status = H5Lexists(file_id, "/A/B01/grp", access_id);
- VERIFY(tri_status, true, "H5Lexists");
-
- /**********************************************************************
- * test H5Lmove()
- **********************************************************************/
-
- status = H5Lmove(file_id, "/A/B16/grp", file_id, "/A/B17/grp", create_id, access_id);
- CHECK(status, FAIL, "H5Lmove");
-
- tri_status = H5Lexists(file_id, "/A/B17/grp", access_id);
- VERIFY(tri_status, true, "H5Lexists");
-
- tri_status = H5Lexists(file_id, "/A/B16/grp", access_id);
- VERIFY(tri_status, false, "H5Lexists");
-
- /**********************************************************************
- * test H5Lcreate_hard()
- **********************************************************************/
-
- status = H5Lcreate_hard(file_id, "/A/B01/grp", file_id, "/A/B18/grp", create_id, access_id);
- CHECK(status, FAIL, "H5Lcreate_hard");
-
- tri_status = H5Lexists(file_id, "/A/B18/grp", access_id);
- VERIFY(tri_status, true, "H5Lexists");
-
- /**********************************************************************
- * test H5Lcreate_soft()
- **********************************************************************/
-
- status = H5Lcreate_soft("/A/B01/grp", file_id, "/A/B19/grp", create_id, access_id);
- CHECK(status, FAIL, "H5Lcreate_soft");
-
- tri_status = H5Lexists(file_id, "/A/B19/grp", access_id);
- VERIFY(tri_status, true, "H5Lexists");
-
- /**********************************************************************
- * test H5Lcreate_external()
- **********************************************************************/
-
- if (vol_cap_flags_g & H5VL_CAP_FLAG_EXTERNAL_LINKS) {
- status =
- H5Lcreate_external("fake_filename", "fake_path", file_id, "/A/B20/grp", create_id, access_id);
- CHECK(status, FAIL, "H5Lcreate_external");
-
- tri_status = H5Lexists(file_id, "/A/B20/grp", access_id);
- VERIFY(tri_status, true, "H5Lexists");
- }
-
- /**********************************************************************
- * test H5Lcreate_ud()
- **********************************************************************/
-
- if (vol_cap_flags_g & H5VL_CAP_FLAG_UD_LINKS) {
- status = H5Lcreate_ud(file_id, "/A/B21/grp", H5L_TYPE_EXTERNAL, "file\0obj", (size_t)9, create_id,
- access_id);
- CHECK(status, FAIL, "H5Lcreate_ud");
-
- tri_status = H5Lexists(file_id, "/A/B21/grp", access_id);
- VERIFY(tri_status, true, "H5Lexists");
- }
-
- /**********************************************************************
- * close
- **********************************************************************/
-
- status = H5Pclose(create_id);
- CHECK(status, FAIL, "H5Pclose");
-
- status = H5Gclose(group_id);
- CHECK(status, FAIL, "H5Gclose");
-
- status = H5Fclose(file_id);
- CHECK(status, FAIL, "H5Fclose");
-
-} /* end test_misc23() */
-
-/****************************************************************
-**
-** test_misc24(): Test opening objects with inappropriate APIs
-**
-****************************************************************/
-static void
-test_misc24(void)
-{
-#if 0
- hid_t file_id = 0, group_id = 0, type_id = 0, space_id = 0, dset_id = 0, tmp_id = 0;
- herr_t ret; /* Generic return value */
-#endif
-
- /* Output message about test being performed */
- MESSAGE(5,
- ("Testing opening objects with inappropriate APIs - SKIPPED due to causing problems in HDF5\n"));
-#if 0
- /* Create a new file using default properties. */
- file_id = H5Fcreate(MISC24_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file_id, FAIL, "H5Fcreate");
-
- /* Create dataspace for dataset */
- space_id = H5Screate(H5S_SCALAR);
- CHECK(space_id, FAIL, "H5Screate");
-
- /* Create group, dataset & named datatype objects */
- group_id = H5Gcreate2(file_id, MISC24_GROUP_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(group_id, FAIL, "H5Gcreate2");
-
- dset_id = H5Dcreate2(file_id, MISC24_DATASET_NAME, H5T_NATIVE_INT, space_id, H5P_DEFAULT, H5P_DEFAULT,
- H5P_DEFAULT);
- CHECK(dset_id, FAIL, "H5Dcreate2");
-
- type_id = H5Tcopy(H5T_NATIVE_INT);
- CHECK(type_id, FAIL, "H5Tcopy");
-
- ret = H5Tcommit2(file_id, MISC24_DATATYPE_NAME, type_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Tcommit2");
-
- /* Create soft links to the objects created */
- ret = H5Lcreate_soft(MISC24_GROUP_NAME, file_id, MISC24_GROUP_LINK, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Lcreate_soft");
-
- ret = H5Lcreate_soft(MISC24_DATASET_NAME, file_id, MISC24_DATASET_LINK, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Lcreate_soft");
-
- ret = H5Lcreate_soft(MISC24_DATATYPE_NAME, file_id, MISC24_DATATYPE_LINK, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Lcreate_soft");
-
- /* Close IDs for objects */
- ret = H5Dclose(dset_id);
- CHECK(ret, FAIL, "H5Dclose");
-
- ret = H5Sclose(space_id);
- CHECK(ret, FAIL, "H5Sclose");
-
- ret = H5Gclose(group_id);
- CHECK(ret, FAIL, "H5Gclose");
-
- ret = H5Tclose(type_id);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Attempt to open each kind of object with wrong API, including using soft links */
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dopen2(file_id, MISC24_GROUP_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dopen2(file_id, MISC24_GROUP_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Topen2(file_id, MISC24_GROUP_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Topen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Topen2(file_id, MISC24_GROUP_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Topen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gopen2(file_id, MISC24_DATASET_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gopen2(file_id, MISC24_DATASET_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Topen2(file_id, MISC24_DATASET_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Topen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Topen2(file_id, MISC24_DATASET_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Topen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gopen2(file_id, MISC24_DATATYPE_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gopen2(file_id, MISC24_DATATYPE_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dopen2(file_id, MISC24_DATATYPE_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dopen2(file_id, MISC24_DATATYPE_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dopen2");
-
- /* Try again, with the object already open through valid call */
- /* Open group */
- group_id = H5Gopen2(file_id, MISC24_GROUP_NAME, H5P_DEFAULT);
- CHECK(group_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dopen2(file_id, MISC24_GROUP_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dopen2(file_id, MISC24_GROUP_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Topen2(file_id, MISC24_GROUP_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Topen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Topen2(file_id, MISC24_GROUP_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Topen2");
-
- ret = H5Gclose(group_id);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Open dataset */
- dset_id = H5Dopen2(file_id, MISC24_DATASET_NAME, H5P_DEFAULT);
- CHECK(dset_id, FAIL, "H5Dopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gopen2(file_id, MISC24_DATASET_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gopen2(file_id, MISC24_DATASET_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Topen2(file_id, MISC24_DATASET_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Topen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Topen2(file_id, MISC24_DATASET_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Topen2");
-
- ret = H5Dclose(dset_id);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Open named datatype */
- type_id = H5Topen2(file_id, MISC24_DATATYPE_NAME, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Topen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gopen2(file_id, MISC24_DATATYPE_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Gopen2(file_id, MISC24_DATATYPE_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Gopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dopen2(file_id, MISC24_DATATYPE_NAME, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dopen2");
-
- H5E_BEGIN_TRY
- {
- tmp_id = H5Dopen2(file_id, MISC24_DATATYPE_LINK, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(tmp_id, FAIL, "H5Dopen2");
-
- ret = H5Tclose(type_id);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close file */
- ret = H5Fclose(file_id);
- CHECK(ret, FAIL, "H5Fclose");
-#endif
-} /* end test_misc24() */
-
-/****************************************************************
-**
-** test_misc25a(): Exercise null object header message merge bug
-** with new file
-**
-****************************************************************/
-static void
-test_misc25a(void)
-{
- hid_t fid; /* File ID */
- hid_t gid, gid2, gid3; /* Group IDs */
- hid_t aid; /* Attribute ID */
- hid_t sid; /* Dataspace ID */
- hid_t tid; /* Datatype ID */
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Exercise null object header message bug\n"));
-
- /* Create file */
- fid = H5Fcreate(MISC25A_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Create top group */
- gid = H5Gcreate2(fid, MISC25A_GROUP0_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gcreate2");
-
- /* Close top group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Create first group */
- gid = H5Gcreate2(fid, MISC25A_GROUP1_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gcreate2");
-
- /* Close first group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Create second group */
- gid2 = H5Gcreate2(fid, MISC25A_GROUP2_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid2, FAIL, "H5Gcreate2");
-
- /* Close second group */
- ret = H5Gclose(gid2);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Re-open file */
- fid = H5Fopen(MISC25A_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Re-open first group */
- gid = H5Gopen2(fid, MISC25A_GROUP1_NAME, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Create dataspace for attribute */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create datatype for attribute */
- tid = H5Tcopy(H5T_C_S1);
- CHECK(tid, FAIL, "H5Tcopy");
- ret = H5Tset_size(tid, (size_t)MISC25A_ATTR1_LEN);
- CHECK(ret, FAIL, "H5Tset_size");
-
- /* Add 1st attribute on first group */
- aid = H5Acreate2(gid, MISC25A_ATTR1_NAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close attribute */
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Create dataspace for 2nd attribute */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create datatype for attribute */
- tid = H5Tcopy(H5T_C_S1);
- CHECK(tid, FAIL, "H5Tcopy");
- ret = H5Tset_size(tid, (size_t)MISC25A_ATTR2_LEN);
- CHECK(ret, FAIL, "H5Tset_size");
-
- /* Add 2nd attribute on first group */
- aid = H5Acreate2(gid, MISC25A_ATTR2_NAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close 2nd attribute */
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Close first group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Re-open file */
- fid = H5Fopen(MISC25A_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Create third group */
- gid3 = H5Gcreate2(fid, MISC25A_GROUP3_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid3, FAIL, "H5Gcreate2");
-
- /* Close third group */
- ret = H5Gclose(gid3);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Re-open first group */
- gid = H5Gopen2(fid, MISC25A_GROUP1_NAME, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Delete 2nd attribute */
- ret = H5Adelete(gid, MISC25A_ATTR2_NAME);
- CHECK(ret, FAIL, "H5Adelete");
-
- /* Close first group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Re-open file */
- fid = H5Fopen(MISC25A_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Re-open first group */
- gid = H5Gopen2(fid, MISC25A_GROUP1_NAME, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Create dataspace for 3rd attribute */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create datatype for attribute */
- tid = H5Tcopy(H5T_C_S1);
- CHECK(tid, FAIL, "H5Tcopy");
- ret = H5Tset_size(tid, (size_t)MISC25A_ATTR3_LEN);
- CHECK(ret, FAIL, "H5Tset_size");
-
- /* Add 3rd attribute on first group (smaller than 2nd attribute) */
- aid = H5Acreate2(gid, MISC25A_ATTR3_NAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close 3rd attribute */
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Close first group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Re-open file */
- fid = H5Fopen(MISC25A_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Re-open first group */
- gid = H5Gopen2(fid, MISC25A_GROUP1_NAME, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Delete 3rd attribute */
- ret = H5Adelete(gid, MISC25A_ATTR3_NAME);
- CHECK(ret, FAIL, "H5Adelete");
-
- /* Create dataspace for 3rd attribute */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create datatype for attribute */
- tid = H5Tcopy(H5T_C_S1);
- CHECK(tid, FAIL, "H5Tcopy");
- ret = H5Tset_size(tid, (size_t)MISC25A_ATTR2_LEN);
- CHECK(ret, FAIL, "H5Tset_size");
-
- /* Re-create 2nd attribute on first group */
- aid = H5Acreate2(gid, MISC25A_ATTR2_NAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close 2nd attribute */
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Close first group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Re-open file */
- fid = H5Fopen(MISC25A_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Re-open first group */
- gid = H5Gopen2(fid, MISC25A_GROUP1_NAME, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Delete 2nd attribute */
- ret = H5Adelete(gid, MISC25A_ATTR2_NAME);
- CHECK(ret, FAIL, "H5Adelete");
-
- /* Close first group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Re-open file */
- fid = H5Fopen(MISC25A_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Re-open first group */
- gid = H5Gopen2(fid, MISC25A_GROUP1_NAME, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Create dataspace for 3rd attribute */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create datatype for attribute */
- tid = H5Tcopy(H5T_C_S1);
- CHECK(tid, FAIL, "H5Tcopy");
- ret = H5Tset_size(tid, (size_t)MISC25A_ATTR2_LEN);
- CHECK(ret, FAIL, "H5Tset_size");
-
- /* Re-create 2nd attribute on first group */
- aid = H5Acreate2(gid, MISC25A_ATTR2_NAME, tid, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close datatype */
- ret = H5Tclose(tid);
- CHECK(ret, FAIL, "H5Tclose");
-
- /* Close 2nd attribute */
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Close first group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc25a() */
-
-/****************************************************************
-**
-** test_misc25b(): Exercise null object header message merge bug
-** with existing file (This test relies on
-** the file produced by test/gen_mergemsg.c)
-**
-****************************************************************/
-#if 0
-static void
-test_misc25b(void)
-{
- hid_t fid; /* File ID */
- hid_t gid; /* Group ID */
- const char *testfile = H5_get_srcdir_filename(MISC25B_FILE); /* Corrected test file name */
- bool driver_is_default_compatible;
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Exercise null object header message bug\n"));
-
- ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible);
- CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible");
-
- if (!driver_is_default_compatible) {
- printf("-- SKIPPED --\n");
- return;
- }
-
- /* Open file */
- fid = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Re-open group with object header messages that will merge */
- gid = H5Gopen2(fid, MISC25B_GROUP, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Close first group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc25b() */
-#endif
-
-/****************************************************************
-**
-** test_misc25c(): Exercise another null object header message merge bug.
-**
-****************************************************************/
-static void
-test_misc25c(void)
-{
- hid_t fid; /* File ID */
- hid_t fapl; /* File access property list ID */
- hid_t gcpl; /* Group creation property list ID */
- hid_t sid; /* Dataspace ID */
- hid_t did; /* Dataset ID */
- hid_t gid; /* Group ID */
- hid_t gid2; /* Group ID */
- hid_t aid; /* Attribute ID */
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Exercise another null object header message bug\n"));
-
- /* Compose file access property list */
- fapl = H5Pcreate(H5P_FILE_ACCESS);
- CHECK(fapl, FAIL, "H5Pcreate");
- ret = H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST);
- CHECK(ret, FAIL, "H5Pset_libver_bounds");
-
- /* Create the file */
- fid = H5Fcreate(MISC25C_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
- CHECK(fid, FAIL, "H5Fcreate");
-
- /* Compose group creation property list */
- gcpl = H5Pcreate(H5P_GROUP_CREATE);
- CHECK(gcpl, FAIL, "H5Pcreate");
- ret = H5Pset_link_creation_order(gcpl, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED));
- CHECK(ret, FAIL, "H5Pset_link_creation_order");
- ret = H5Pset_attr_creation_order(gcpl, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED));
- CHECK(ret, FAIL, "H5Pset_attr_creation_order");
- ret = H5Pset_est_link_info(gcpl, 1, 18);
- CHECK(ret, FAIL, "H5Pset_est_link_info");
-
- /* Create a group for the dataset */
- gid = H5Gcreate2(fid, MISC25C_DSETGRPNAME, H5P_DEFAULT, gcpl, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gcreate2");
-
- /* Create the dataspace */
- sid = H5Screate(H5S_SCALAR);
- CHECK(sid, FAIL, "H5Screate");
-
- /* Create the dataset */
- did = H5Dcreate2(gid, MISC25C_DSETNAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-
- /* Create an extra group */
- gid2 = H5Gcreate2(fid, MISC25C_GRPNAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid2, FAIL, "H5Gcreate2");
-
- /* Close the extra group */
- ret = H5Gclose(gid2);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Add an attribute to the dataset group */
- aid = H5Acreate2(gid, MISC25C_ATTRNAME, H5T_NATIVE_CHAR, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- /* Close the attribute */
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Create a second extra group */
- gid2 = H5Gcreate2(fid, MISC25C_GRPNAME2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid2, FAIL, "H5Gcreate2");
-
- /* Close the second extra group */
- ret = H5Gclose(gid2);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Add second attribute to the dataset group */
- aid = H5Acreate2(gid, MISC25C_ATTRNAME2, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Acreate2");
-
- /* Close the attribute */
- ret = H5Aclose(aid);
- CHECK(ret, FAIL, "H5Aclose");
-
- /* Close the dataset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close the dataset group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close the dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- /* Close the property lists */
- ret = H5Pclose(fapl);
- CHECK(ret, FAIL, "H5Pclose");
- ret = H5Pclose(gcpl);
- CHECK(ret, FAIL, "H5Pclose");
-
- /* Re-open the file */
- fid = H5Fopen(MISC25C_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Re-open the dataset group */
- gid = H5Gopen2(fid, MISC25C_DSETGRPNAME, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Rename the dataset */
- ret = H5Lmove(gid, MISC25C_DSETNAME, H5L_SAME_LOC, MISC25C_DSETNAME2, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Lmove");
-
- /* Delete the first attribute */
- ret = H5Adelete(gid, MISC25C_ATTRNAME);
- CHECK(ret, FAIL, "H5Adelete");
-
- /* Close the dataset group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc25c() */
-
-/****************************************************************
-**
-** test_misc26(): Regression test: ensure that copying filter
-** pipelines works properly.
-**
-****************************************************************/
-static void
-test_misc26(void)
-{
- hid_t fid; /* File ID */
- hid_t sid; /* Dataspace ID */
- hid_t did; /* Dataset ID */
- hid_t dcpl1, dcpl2, dcpl3; /* Property List IDs */
- hsize_t dims[] = {1};
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Copying filter pipelines\n"));
-
- /* Create the property list. It needs chunking so we can add filters */
- dcpl1 = H5Pcreate(H5P_DATASET_CREATE);
- CHECK_I(dcpl1, "H5Pcreate");
- ret = H5Pset_chunk(dcpl1, 1, dims);
- CHECK_I(ret, "H5Pset_chunk");
-
- /* Add a filter with a data value to the property list */
- ret = H5Pset_deflate(dcpl1, 1);
- CHECK_I(ret, "H5Pset_deflate");
-
- /* Copy the property list */
- dcpl2 = H5Pcopy(dcpl1);
- CHECK_I(dcpl2, "H5Pcopy");
-
- /* Add a filter with no data values to the copy */
- ret = H5Pset_shuffle(dcpl2);
- CHECK_I(ret, "H5Pset_shuffle");
-
- /* Copy the copy */
- dcpl3 = H5Pcopy(dcpl2);
- CHECK_I(dcpl3, "H5Pcopy");
-
- /* Add another filter */
- ret = H5Pset_deflate(dcpl3, 2);
- CHECK_I(ret, "H5Pset_deflate");
-
- /* Create a new file and datasets within that file that use these
- * property lists
- */
- fid = H5Fcreate(MISC26_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
-
- sid = H5Screate_simple(1, dims, dims);
- CHECK(sid, FAIL, "H5Screate_simple");
-
- did = H5Dcreate2(fid, "dataset1", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, dcpl1, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
- ret = H5Dclose(did);
- CHECK_I(ret, "H5Dclose");
-
- did = H5Dcreate2(fid, "dataset2", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, dcpl2, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
- ret = H5Dclose(did);
- CHECK_I(ret, "H5Dclose");
-
- did = H5Dcreate2(fid, "dataset3", H5T_NATIVE_FLOAT, sid, H5P_DEFAULT, dcpl3, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
- ret = H5Dclose(did);
- CHECK_I(ret, "H5Dclose");
-
- /* Close the dataspace and file */
- ret = H5Sclose(sid);
- CHECK_I(ret, "H5Sclose");
- ret = H5Fclose(fid);
- CHECK_I(ret, "H5Fclose");
-
- /* Close the property lists. */
- ret = H5Pclose(dcpl1);
- CHECK_I(ret, "H5Pclose");
- ret = H5Pclose(dcpl2);
- CHECK_I(ret, "H5Pclose");
- ret = H5Pclose(dcpl3);
- CHECK_I(ret, "H5Pclose");
-}
-
-/****************************************************************
-**
-** test_misc27(): Ensure that objects with incorrect # of object
-** header messages are handled appropriately.
-**
-** (Note that this test file is generated by the "gen_bad_ohdr.c" code)
-**
-****************************************************************/
-#if 0
-static void
-test_misc27(void)
-{
- hid_t fid; /* File ID */
- hid_t gid; /* Group ID */
- const char *testfile = H5_get_srcdir_filename(MISC27_FILE); /* Corrected test file name */
- bool driver_is_default_compatible;
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Corrupt object header handling\n"));
-
- ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible);
- CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible");
-
- if (!driver_is_default_compatible) {
- printf("-- SKIPPED --\n");
- return;
- }
-
- /* Open the file */
- fid = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
-#ifdef H5_STRICT_FORMAT_CHECKS
- /* Open group with incorrect # of object header messages (should fail) */
- H5E_BEGIN_TRY
- {
- gid = H5Gopen2(fid, MISC27_GROUP, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(gid, FAIL, "H5Gopen2");
-#else /* H5_STRICT_FORMAT_CHECKS */
- /* Open group with incorrect # of object header messages */
- gid = H5Gopen2(fid, MISC27_GROUP, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gopen2");
-
- /* Close group */
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
-#endif /* H5_STRICT_FORMAT_CHECKS */
-
- /* Close file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc27() */
-#endif
-
-/****************************************************************
-**
-** test_misc28(): Ensure that the dataset chunk cache will hold
-** the correct number of chunks in cache without
-** evicting them.
-**
-****************************************************************/
-static void
-test_misc28(void)
-{
- hid_t fid; /* File ID */
- hid_t sidf; /* File Dataspace ID */
- hid_t sidm; /* Memory Dataspace ID */
- hid_t did; /* Dataset ID */
- hid_t dcpl, fapl; /* Property List IDs */
- hsize_t dims[] = {MISC28_SIZE, MISC28_SIZE};
- hsize_t mdims[] = {MISC28_SIZE};
- hsize_t cdims[] = {1, 1};
- hsize_t start[] = {0, 0};
- hsize_t count[] = {MISC28_SIZE, 1};
-#if 0
- size_t nbytes_used;
- int nused;
-#endif
- char buf[MISC28_SIZE];
- int i;
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Dataset chunk cache\n"));
-
- /* Create the fapl and set the cache size. Set nelmts to larger than the
- * file size so we can be guaranteed that no chunks will be evicted due to
- * a hash collision. Set nbytes to fit exactly 1 column of chunks (10
- * bytes). */
- fapl = H5Pcreate(H5P_FILE_ACCESS);
- CHECK(fapl, FAIL, "H5Pcreate");
- ret = H5Pset_cache(fapl, MISC28_NSLOTS, MISC28_NSLOTS, MISC28_SIZE, 0.75);
- CHECK(ret, FAIL, "H5Pset_cache");
-
- /* Create the dcpl and set the chunk size */
- dcpl = H5Pcreate(H5P_DATASET_CREATE);
- CHECK(dcpl, FAIL, "H5Pcreate");
- ret = H5Pset_chunk(dcpl, 2, cdims);
- CHECK(ret, FAIL, "H5Pset_chunk");
-
- /* Create a new file and datasets within that file that use these
- * property lists
- */
- fid = H5Fcreate(MISC28_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
- CHECK(fid, FAIL, "H5Fcreate");
-
- sidf = H5Screate_simple(2, dims, NULL);
- CHECK(sidf, FAIL, "H5Screate_simple");
-
- did = H5Dcreate2(fid, "dataset", H5T_NATIVE_CHAR, sidf, H5P_DEFAULT, dcpl, H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dcreate2");
-#if 0
- /* Verify that the chunk cache is empty */
- ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
- CHECK(ret, FAIL, "H5D__current_cache_size_test");
- VERIFY(nbytes_used, (size_t)0, "H5D__current_cache_size_test");
- VERIFY(nused, 0, "H5D__current_cache_size_test");
-#endif
- /* Initialize write buffer */
- for (i = 0; i < MISC28_SIZE; i++)
- buf[i] = (char)i;
-
- /* Create memory dataspace and selection in file dataspace */
- sidm = H5Screate_simple(1, mdims, NULL);
- CHECK(sidm, FAIL, "H5Screate_simple");
-
- ret = H5Sselect_hyperslab(sidf, H5S_SELECT_SET, start, NULL, count, NULL);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Write hypserslab */
- ret = H5Dwrite(did, H5T_NATIVE_CHAR, sidm, sidf, H5P_DEFAULT, buf);
- CHECK(ret, FAIL, "H5Dwrite");
-#if 0
- /* Verify that all 10 chunks written have been cached */
- ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
- CHECK(ret, FAIL, "H5D__current_cache_size_test");
- VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test");
- VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test");
-#endif
- /* Initialize write buffer */
- for (i = 0; i < MISC28_SIZE; i++)
- buf[i] = (char)(MISC28_SIZE - 1 - i);
-
- /* Select new hyperslab */
- start[1] = 1;
- ret = H5Sselect_hyperslab(sidf, H5S_SELECT_SET, start, NULL, count, NULL);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Write hyperslab */
- ret = H5Dwrite(did, H5T_NATIVE_CHAR, sidm, sidf, H5P_DEFAULT, buf);
- CHECK(ret, FAIL, "H5Dwrite");
-#if 0
- /* Verify that the size of the cache remains at 10 */
- ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
- CHECK(ret, FAIL, "H5D__current_cache_size_test");
- VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test");
- VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test");
-#endif
- /* Close dataset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Re open dataset */
- did = H5Dopen2(fid, "dataset", H5P_DEFAULT);
- CHECK(did, FAIL, "H5Dopen2");
-#if 0
- /* Verify that the chunk cache is empty */
- ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
- CHECK(ret, FAIL, "H5D__current_cache_size_test");
- VERIFY(nbytes_used, (size_t)0, "H5D__current_cache_size_test");
- VERIFY(nused, 0, "H5D__current_cache_size_test");
-#endif
- /* Select hyperslabe for reading */
- start[1] = 0;
- ret = H5Sselect_hyperslab(sidf, H5S_SELECT_SET, start, NULL, count, NULL);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Read hypserslab */
- ret = H5Dread(did, H5T_NATIVE_CHAR, sidm, sidf, H5P_DEFAULT, buf);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Verify the data read */
- for (i = 0; i < MISC28_SIZE; i++)
- VERIFY(buf[i], i, "H5Dread");
-#if 0
- /* Verify that all 10 chunks read have been cached */
- ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
- CHECK(ret, FAIL, "H5D__current_cache_size_test");
- VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test");
- VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test");
-#endif
- /* Select new hyperslab */
- start[1] = 1;
- ret = H5Sselect_hyperslab(sidf, H5S_SELECT_SET, start, NULL, count, NULL);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Read hyperslab */
- ret = H5Dread(did, H5T_NATIVE_CHAR, sidm, sidf, H5P_DEFAULT, buf);
- CHECK(ret, FAIL, "H5Dread");
-
- /* Verify the data read */
- for (i = 0; i < MISC28_SIZE; i++)
- VERIFY(buf[i], MISC28_SIZE - 1 - i, "H5Dread");
-#if 0
- /* Verify that the size of the cache remains at 10 */
- ret = H5D__current_cache_size_test(did, &nbytes_used, &nused);
- CHECK(ret, FAIL, "H5D__current_cache_size_test");
- VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test");
- VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test");
-#endif
- /* Close dataset */
- ret = H5Dclose(did);
- CHECK(ret, FAIL, "H5Dclose");
-
- /* Close the dataspaces and file */
- ret = H5Sclose(sidf);
- CHECK_I(ret, "H5Sclose");
- ret = H5Sclose(sidm);
- CHECK_I(ret, "H5Sclose");
- ret = H5Fclose(fid);
- CHECK_I(ret, "H5Fclose");
-
- /* Close the property lists. */
- ret = H5Pclose(dcpl);
- CHECK_I(ret, "H5Pclose");
- ret = H5Pclose(fapl);
- CHECK_I(ret, "H5Pclose");
-} /* end test_misc28() */
-
-/****************************************************************
-**
-** test_misc29(): Ensure that speculative metadata reads don't
-** get raw data into the metadata accumulator.
-**
-****************************************************************/
-#if 0
-static void
-test_misc29(void)
-{
- bool driver_is_default_compatible;
- hid_t fid; /* File ID */
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Speculative metadata reads\n"));
-
- ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible);
- CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible");
-
- if (!driver_is_default_compatible) {
- printf("-- SKIPPED --\n");
- return;
- }
-
- /* Make a copy of the data file from svn. */
- ret = h5_make_local_copy(MISC29_ORIG_FILE, MISC29_COPY_FILE);
- CHECK(ret, -1, "h5_make_local_copy");
-
- /* Open the copied file */
- fid = H5Fopen(MISC29_COPY_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Delete the last dataset */
- ret = H5Ldelete(fid, MISC29_DSETNAME, H5P_DEFAULT);
- CHECK(ret, FAIL, "H5Ldelete");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-} /* end test_misc29() */
-#endif
-
-#if 0
-static int
-test_misc30_get_info_cb(hid_t loc_id, const char *name, const H5L_info2_t H5_ATTR_UNUSED *info,
- void H5_ATTR_UNUSED *op_data)
-{
- H5O_info2_t object_info;
-
- return H5Oget_info_by_name3(loc_id, name, &object_info, H5O_INFO_BASIC, H5P_DEFAULT);
-}
-
-static int
-test_misc30_get_info(hid_t loc_id)
-{
- return H5Literate2(loc_id, H5_INDEX_NAME, H5_ITER_INC, NULL, test_misc30_get_info_cb, NULL);
-}
-#endif
-
-/****************************************************************
-**
-** test_misc30(): Exercise local heap code that loads prefix
-** separately from data block, causing the free
-** block information to get lost.
-**
-****************************************************************/
-#if 0
-static void
-test_misc30(void)
-{
- hsize_t file_size[] = {0, 0}; /* Sizes of file created */
- unsigned get_info; /* Whether to perform the get info call */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Local heap dropping free block info\n"));
-
- for (get_info = false; get_info <= true; get_info++) {
- hid_t fid; /* File ID */
- hid_t gid; /* Group ID */
- int i; /* Local index counter */
- herr_t ret; /* Generic return value */
-
- fid = H5Fcreate(MISC30_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
- gid = H5Gcreate2(fid, "/g0", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gcreate2");
-
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
-
- for (i = 0; i < 20; i++) {
- char gname[32];
-
- fid = H5Fopen(MISC30_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- if (get_info) {
- ret = test_misc30_get_info(fid);
- CHECK(ret, FAIL, "test_misc30_get_info");
- }
-
- snprintf(gname, sizeof(gname), "/g0/group%d", i);
- gid = H5Gcreate2(fid, gname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(gid, FAIL, "H5Gcreate2");
-
- ret = H5Gclose(gid);
- CHECK(ret, FAIL, "H5Gclose");
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
- }
-
- fid = H5Fopen(MISC30_FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
- ret = H5Fget_filesize(fid, &file_size[get_info]);
- CHECK(fid, FAIL, "H5Fget_filesize");
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
- }
-
- VERIFY(file_size[0], file_size[1], "test_misc30");
-} /* end test_misc30() */
-#endif
-
-/****************************************************************
-**
-** test_misc31(): Test reentering library through deprecated
-* routines that register an id after calling
-* H5close().
-**
-****************************************************************/
-#if 0
-static void
-test_misc31(void)
-{
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- hid_t file_id; /* File id */
- hid_t space_id; /* Dataspace id */
- hid_t dset_id; /* Dataset id */
- hid_t attr_id; /* Attribute id */
- hid_t group_id; /* Group id */
- hid_t dtype_id; /* Datatype id */
- herr_t ret; /* Generic return value */
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Deprecated routines initialize after H5close()\n"));
-
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- file_id = H5Fcreate(MISC31_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(file_id, FAIL, "H5Fcreate");
-
- /* Test dataset package */
- space_id = H5Screate(H5S_SCALAR);
- CHECK(space_id, FAIL, "H5Screate");
- dset_id = H5Dcreate1(file_id, MISC31_DSETNAME, H5T_NATIVE_INT, space_id, H5P_DEFAULT);
- CHECK(dset_id, FAIL, "H5Dcreate1");
- ret = H5close();
- CHECK(ret, FAIL, "H5close");
- file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(file_id, FAIL, "H5Fopen");
- dset_id = H5Dopen1(file_id, MISC31_DSETNAME);
- CHECK(dset_id, FAIL, "H5Dopen1");
-
- /* Test attribute package */
- space_id = H5Screate(H5S_SCALAR);
- CHECK(space_id, FAIL, "H5Screate");
- attr_id = H5Acreate1(dset_id, MISC31_ATTRNAME1, H5T_NATIVE_INT, space_id, H5P_DEFAULT);
- CHECK(attr_id, FAIL, "H5Acreate1");
- ret = H5close();
- CHECK(ret, FAIL, "H5close");
- file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(file_id, FAIL, "H5Fopen");
- dset_id = H5Dopen1(file_id, MISC31_DSETNAME);
- CHECK(dset_id, FAIL, "H5Dopen1");
- space_id = H5Screate(H5S_SCALAR);
- CHECK(space_id, FAIL, "H5Screate");
- attr_id = H5Acreate1(dset_id, MISC31_ATTRNAME2, H5T_NATIVE_INT, space_id, H5P_DEFAULT);
- CHECK(attr_id, FAIL, "H5Acreate1");
-
- /* Test group package */
- group_id = H5Gcreate1(file_id, MISC31_GROUPNAME, 0);
- CHECK(group_id, FAIL, "H5Gcreate1");
- ret = H5close();
- CHECK(ret, FAIL, "H5close");
- file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(file_id, FAIL, "H5Fopen");
- group_id = H5Gopen1(file_id, MISC31_GROUPNAME);
- CHECK(group_id, FAIL, "H5Gopen1");
-
- /* Test property list package */
- ret = H5Pregister1(H5P_OBJECT_CREATE, MISC31_PROPNAME, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
- CHECK(ret, FAIL, "H5Pregister1");
- ret = H5close();
- CHECK(ret, FAIL, "H5close");
- ret = H5Pregister1(H5P_OBJECT_CREATE, MISC31_PROPNAME, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
- CHECK(ret, FAIL, "H5Pregister1");
- ret = H5close();
- CHECK(ret, FAIL, "H5close");
-
- /* Test datatype package */
- file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(file_id, FAIL, "H5Fopen");
- dtype_id = H5Tcopy(H5T_NATIVE_INT);
- CHECK(dtype_id, FAIL, "H5Tcopy");
- ret = H5Tcommit1(file_id, MISC31_DTYPENAME, dtype_id);
- CHECK(ret, FAIL, "H5Tcommit1");
- ret = H5close();
- CHECK(ret, FAIL, "H5close");
- file_id = H5Fopen(MISC31_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- CHECK(file_id, FAIL, "H5Fopen");
- dtype_id = H5Topen1(file_id, MISC31_DTYPENAME);
- CHECK(ret, FAIL, "H5Topen1");
- ret = H5Fclose(file_id);
- CHECK(ret, FAIL, "H5Fclose");
- ret = H5Tclose(dtype_id);
- CHECK(ret, FAIL, "H5Tclose");
-
-#else /* H5_NO_DEPRECATED_SYMBOLS */
- /* Output message about test being skipped */
- MESSAGE(5, (" ...Skipped"));
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
-} /* end test_misc31() */
-#endif
-
-/****************************************************************
- *
- * test_misc32(): Simple test of filter memory allocation
- * functions.
- *
- ***************************************************************/
-static void
-test_misc32(void)
-{
- void *buffer;
- void *resized;
- size_t size;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Edge case test of filter memory allocation functions\n"));
-
- /* Test that the filter memory allocation functions behave correctly
- * at edge cases.
- */
-
- /* FREE */
-
- /* Test freeing a NULL pointer.
- * No real confirmation check here, but Valgrind will confirm no
- * shenanigans.
- */
- buffer = NULL;
- H5free_memory(buffer);
-
- /* ALLOCATE */
-
- /* Size zero returns NULL.
- * Also checks that a size of zero and setting the buffer clear flag
- * to true can be used together.
- *
- * Note that we have asserts in the code, so only check when NDEBUG
- * is defined.
- */
-#ifdef NDEBUG
- buffer = H5allocate_memory(0, false);
- CHECK_PTR_NULL(buffer, "H5allocate_memory"); /*BAD*/
- buffer = H5allocate_memory(0, true);
- CHECK_PTR_NULL(buffer, "H5allocate_memory"); /*BAD*/
-#endif /* NDEBUG */
-
- /* RESIZE */
-
- /* Size zero returns NULL. Valgrind will confirm buffer is freed. */
- size = 1024;
- buffer = H5allocate_memory(size, true);
- resized = H5resize_memory(buffer, 0);
- CHECK_PTR_NULL(resized, "H5resize_memory");
-
- /* NULL input pointer returns new buffer */
- resized = H5resize_memory(NULL, 1024);
- CHECK_PTR(resized, "H5resize_memory");
- H5free_memory(resized);
-
- /* NULL input pointer and size zero returns NULL */
-#ifdef NDEBUG
- resized = H5resize_memory(NULL, 0);
- CHECK_PTR_NULL(resized, "H5resize_memory"); /*BAD*/
-#endif /* NDEBUG */
-
-} /* end test_misc32() */
-
-/****************************************************************
-**
-** test_misc33(): Test for H5FFV-10216
-** --verify that H5HL_offset_into() returns error if the
-** input parameter "offset" exceeds heap data block size.
-** --case (1), (2), (3) are scenarios that will traverse to the
-** the 3 locations in the file having bad offset values to
-** the heap. (See description in gen_bad_offset.c)
-**
-****************************************************************/
-#if 0
-static void
-test_misc33(void)
-{
- hid_t fid = -1; /* File ID */
- const char *testfile = H5_get_srcdir_filename(MISC33_FILE); /* Corrected test file name */
- H5O_info2_t oinfo; /* Structure for object metadata information */
- bool driver_is_default_compatible;
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing that bad offset into the heap returns error"));
-
- ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible);
- CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible");
-
- if (!driver_is_default_compatible) {
- printf("-- SKIPPED --\n");
- return;
- }
-
- /* Open the test file */
- fid = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* Case (1) */
- H5E_BEGIN_TRY
- {
- ret = H5Oget_info_by_name3(fid, "/soft_two", &oinfo, H5O_INFO_BASIC, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Oget_info_by_name3");
-
- /* Case (2) */
- H5E_BEGIN_TRY
- {
- ret = H5Oget_info_by_name3(fid, "/dsetA", &oinfo, H5O_INFO_BASIC, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Oget_info_by_name3");
-
- /* Case (3) */
- H5E_BEGIN_TRY
- {
- ret = H5Oget_info_by_name3(fid, "/soft_one", &oinfo, H5O_INFO_BASIC, H5P_DEFAULT);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Oget_info_by_name3");
-
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(fid, FAIL, "H5Fclose");
-
-} /* end test_misc33() */
-#endif
-
-/****************************************************************
-**
-** test_misc34(): Ensure zero-size memory allocations work
-**
-****************************************************************/
-#if 0
-static void
-test_misc34(void)
-{
- void *mem = NULL; /* allocated buffer */
- char *dup = NULL; /* 'duplicated' string */
- size_t sz = 0; /* buffer size */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing O and NULL behavior in H5MM API calls"));
-
- /* H5MM_xfree(): Ensure that passing NULL is allowed and returns NULL */
- mem = H5MM_xfree(mem);
- CHECK_PTR_NULL(mem, "H5MM_xfree");
-
- /* H5MM_realloc(): Check behavior:
- *
- * H5MM_realloc(NULL, size) <==> H5MM_malloc(size)
- * H5MM_realloc(ptr, 0) <==> H5MM_xfree(ptr)
- * H5MM_realloc(NULL, 0) <==> NULL
- */
- mem = H5MM_xfree(mem);
-
- sz = 1024;
- mem = H5MM_realloc(mem, sz);
- CHECK_PTR(mem, "H5MM_realloc (case 1)");
- /* Don't free mem here! */
-
- sz = 0;
- mem = H5MM_realloc(mem, sz);
- CHECK_PTR_NULL(mem, "H5MM_realloc (case 2)");
- mem = H5MM_xfree(mem);
-
- mem = H5MM_realloc(mem, sz);
- CHECK_PTR_NULL(mem, "H5MM_realloc (case 3)");
- mem = H5MM_xfree(mem);
-
- /* H5MM_xstrdup(): Ensure NULL returns NULL */
- dup = H5MM_xstrdup((const char *)mem);
- CHECK_PTR_NULL(dup, "H5MM_xstrdup");
- dup = (char *)H5MM_xfree((void *)dup);
-
-} /* end test_misc34() */
-
-/****************************************************************
-**
-** test_misc35(): Check operation of free-list routines
-**
-****************************************************************/
-static void
-test_misc35(void)
-{
- hid_t sid = H5I_INVALID_HID; /* Dataspace ID */
- hsize_t dims[] = {MISC35_SPACE_DIM1, MISC35_SPACE_DIM2, MISC35_SPACE_DIM3}; /* Dataspace dims */
- hsize_t coord[MISC35_NPOINTS][MISC35_SPACE_RANK] = /* Coordinates for point selection */
- {{0, 10, 5}, {1, 2, 7}, {2, 4, 9}, {0, 6, 11}, {1, 8, 13},
- {2, 12, 0}, {0, 14, 2}, {1, 0, 4}, {2, 1, 6}, {0, 3, 8}};
- size_t reg_size_start; /* Initial amount of regular memory allocated */
- size_t arr_size_start; /* Initial amount of array memory allocated */
- size_t blk_size_start; /* Initial amount of block memory allocated */
- size_t fac_size_start; /* Initial amount of factory memory allocated */
- size_t reg_size_final; /* Final amount of regular memory allocated */
- size_t arr_size_final; /* Final amount of array memory allocated */
- size_t blk_size_final; /* Final amount of block memory allocated */
- size_t fac_size_final; /* Final amount of factory memory allocated */
- herr_t ret; /* Return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("Free-list API calls"));
-
- /* Create dataspace */
- /* (Allocates array free-list nodes) */
- sid = H5Screate_simple(MISC35_SPACE_RANK, dims, NULL);
- CHECK(sid, H5I_INVALID_HID, "H5Screate_simple");
-
- /* Select sequence of ten points */
- ret = H5Sselect_elements(sid, H5S_SELECT_SET, (size_t)MISC35_NPOINTS, (const hsize_t *)coord);
- CHECK(ret, FAIL, "H5Sselect_elements");
-
- /* Close dataspace */
- ret = H5Sclose(sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Retrieve initial free list values */
- ret = H5get_free_list_sizes(&reg_size_start, &arr_size_start, &blk_size_start, &fac_size_start);
- CHECK(ret, FAIL, "H5get_free_list_sizes");
-
-#if !defined H5_NO_FREE_LISTS && !defined H5_USING_MEMCHECKER
- /* All the free list values should be >0 */
- CHECK(reg_size_start, 0, "H5get_free_list_sizes");
- CHECK(arr_size_start, 0, "H5get_free_list_sizes");
- CHECK(blk_size_start, 0, "H5get_free_list_sizes");
- CHECK(fac_size_start, 0, "H5get_free_list_sizes");
-#else
- /* All the values should be == 0 */
- VERIFY(reg_size_start, 0, "H5get_free_list_sizes");
- VERIFY(arr_size_start, 0, "H5get_free_list_sizes");
- VERIFY(blk_size_start, 0, "H5get_free_list_sizes");
- VERIFY(fac_size_start, 0, "H5get_free_list_sizes");
-#endif
-
- /* Garbage collect the free lists */
- ret = H5garbage_collect();
- CHECK(ret, FAIL, "H5garbage_collect");
-
- /* Retrieve free list values again */
- ret = H5get_free_list_sizes(&reg_size_final, &arr_size_final, &blk_size_final, &fac_size_final);
- CHECK(ret, FAIL, "H5get_free_list_sizes");
-
- /* All the free list values should be <= previous values */
- if (reg_size_final > reg_size_start)
- ERROR("reg_size_final > reg_size_start");
- if (arr_size_final > arr_size_start)
- ERROR("arr_size_final > arr_size_start");
- if (blk_size_final > blk_size_start)
- ERROR("blk_size_final > blk_size_start");
- if (fac_size_final > fac_size_start)
- ERROR("fac_size_final > fac_size_start");
-
-} /* end test_misc35() */
-#endif
-
-/* Context to pass to 'atclose' callbacks */
-static int test_misc36_context;
-
-/* 'atclose' callbacks for test_misc36 */
-static void
-test_misc36_cb1(void *_ctx)
-{
- int *ctx = (int *)_ctx; /* Set up context pointer */
- bool is_terminating; /* Flag indicating the library is terminating */
- herr_t ret; /* Return value */
-
- /* Check whether the library thinks it's terminating */
- is_terminating = false;
- ret = H5is_library_terminating(&is_terminating);
- CHECK(ret, FAIL, "H5is_library_terminating");
- VERIFY(is_terminating, true, "H5is_library_terminating");
-
- /* Verify correct ordering for 'atclose' callbacks */
- if (0 != *ctx)
- HDabort();
-
- /* Update context value */
- *ctx = 1;
-}
-
-static void
-test_misc36_cb2(void *_ctx)
-{
- int *ctx = (int *)_ctx; /* Set up context pointer */
- bool is_terminating; /* Flag indicating the library is terminating */
- herr_t ret; /* Return value */
-
- /* Check whether the library thinks it's terminating */
- is_terminating = false;
- ret = H5is_library_terminating(&is_terminating);
- CHECK(ret, FAIL, "H5is_library_terminating");
- VERIFY(is_terminating, true, "H5is_library_terminating");
-
- /* Verify correct ordering for 'atclose' callbacks */
- if (1 != *ctx)
- HDabort();
-
- /* Update context value */
- *ctx = 2;
-}
-
-/****************************************************************
-**
-** test_misc36(): Exercise H5atclose and H5is_library_terminating
-**
-****************************************************************/
-static void
-test_misc36(void)
-{
- bool is_terminating; /* Flag indicating the library is terminating */
- herr_t ret; /* Return value */
-
- /* Output message about test being performed */
- MESSAGE(5, ("H5atclose and H5is_library_terminating API calls"));
-
- /* Check whether the library thinks it's terminating */
- is_terminating = true;
- ret = H5is_library_terminating(&is_terminating);
- CHECK(ret, FAIL, "H5is_library_terminating");
- VERIFY(is_terminating, false, "H5is_library_terminating");
-
- /* Shut the library down */
- test_misc36_context = 0;
- H5close();
-
- /* Check whether the library thinks it's terminating */
- is_terminating = true;
- ret = H5is_library_terminating(&is_terminating);
- CHECK(ret, FAIL, "H5is_library_terminating");
- VERIFY(is_terminating, false, "H5is_library_terminating");
-
- /* Check the close context was not changed */
- VERIFY(test_misc36_context, 0, "H5atclose");
-
- /* Restart the library */
- H5open();
-
- /* Check whether the library thinks it's terminating */
- is_terminating = true;
- ret = H5is_library_terminating(&is_terminating);
- CHECK(ret, FAIL, "H5is_library_terminating");
- VERIFY(is_terminating, false, "H5is_library_terminating");
-
- /* Register the 'atclose' callbacks */
- /* (Note that these will be called in reverse order, which is checked) */
- ret = H5atclose(&test_misc36_cb2, &test_misc36_context);
- CHECK(ret, FAIL, "H5atclose");
- ret = H5atclose(&test_misc36_cb1, &test_misc36_context);
- CHECK(ret, FAIL, "H5atclose");
-
- /* Shut the library down */
- test_misc36_context = 0;
- H5close();
-
- /* Check the close context was changed correctly */
- VERIFY(test_misc36_context, 2, "H5atclose");
-
- /* Restart the library */
- H5open();
-
- /* Close the library again */
- test_misc36_context = 0;
- H5close();
-
- /* Check the close context was not changed */
- VERIFY(test_misc36_context, 0, "H5atclose");
-} /* end test_misc36() */
-
-#if 0
-/****************************************************************
-**
-** test_misc37():
-** Test for seg fault issue when closing the provided test file
-** which has an illegal file size in its cache image.
-** See HDFFV-11052/CVE-2020-10812 for details.
-**
-****************************************************************/
-static void
-test_misc37(void)
-{
- const char *testfile = H5_get_srcdir_filename(CVE_2020_10812_FILENAME);
- bool driver_is_default_compatible;
- hid_t fid;
- herr_t ret;
-
- /* Output message about test being performed */
- MESSAGE(5, ("Fix for HDFFV-11052/CVE-2020-10812"));
-
- ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible);
- CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible");
-
- if (!driver_is_default_compatible) {
- printf("-- SKIPPED --\n");
- return;
- }
-
- fid = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fopen");
-
- /* This should fail due to the illegal file size.
- It should fail gracefully and not seg fault */
- H5E_BEGIN_TRY
- {
- ret = H5Fclose(fid);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Fclose");
-
-} /* end test_misc37() */
-#endif
-
-/****************************************************************
-**
-** test_misc(): Main misc. test routine.
-**
-****************************************************************/
-void
-test_misc(void)
-{
- bool default_driver = h5_using_default_driver(NULL);
-
- /* Output message about test being performed */
- MESSAGE(5, ("Testing Miscellaneous Routines\n"));
-
- test_misc1(); /* Test unlinking a dataset & immediately re-using name */
- test_misc2(); /* Test storing a VL-derived datatype in two different files */
- test_misc3(); /* Test reading from chunked dataset with non-zero fill value */
- test_misc4(); /* Test retrieving the fileno for various objects with H5Oget_info() */
- test_misc5(); /* Test several level deep nested compound & VL datatypes */
- test_misc6(); /* Test object header continuation code */
-#if 0
- test_misc7(); /* Test for sensible datatypes stored on disk */
- test_misc8(); /* Test storage sizes of various types of dataset storage */
-#endif
- test_misc9(); /* Test for opening (not creating) core files */
-#if 0
- test_misc10(); /* Test for using dataset creation property lists from old files */
-#endif
-
- if (default_driver) {
- test_misc11(); /* Test for all properties of a file creation property list being stored */
- }
-
- test_misc12(); /* Test VL-strings in chunked datasets operating correctly */
-#if 0
- if (default_driver) {
- test_misc13(); /* Test that a user block can be insert in front of file contents */
- }
-#endif
- test_misc14(); /* Test that deleted dataset's data is removed from sieve buffer correctly */
- test_misc15(); /* Test that checking a file's access property list more than once works */
- test_misc16(); /* Test array of fixed-length string */
- test_misc17(); /* Test array of ASCII character */
- test_misc18(); /* Test new object header information in H5O_info2_t struct */
- test_misc19(); /* Test incrementing & decrementing ref count on IDs */
-#if 0
- test_misc20(); /* Test problems with truncated dimensions in version 2 of storage layout message */
-#endif
-#if defined(H5_HAVE_FILTER_SZIP) && !defined(H5_API_TEST_NO_FILTERS)
- test_misc21(); /* Test that "late" allocation time is treated the same as "incremental", for chunked
- datasets w/a filters */
- test_misc22(); /* check szip bits per pixel */
-#endif /* H5_HAVE_FILTER_SZIP */
- test_misc23(); /* Test intermediate group creation */
- test_misc24(); /* Test inappropriate API opens of objects */
- test_misc25a(); /* Exercise null object header message merge bug */
-#if 0
- test_misc25b(); /* Exercise null object header message merge bug on existing file */
-#endif
- test_misc25c(); /* Exercise another null object header message merge bug */
- test_misc26(); /* Test closing property lists with long filter pipelines */
-#if 0
- test_misc27(); /* Test opening file with object that has bad # of object header messages */
-#endif
- test_misc28(); /* Test that chunks are cached appropriately */
-#if 0
- test_misc29(); /* Test that speculative metadata reads are handled correctly */
- test_misc30(); /* Exercise local heap loading bug where free lists were getting dropped */
-
- if (default_driver) {
- test_misc31(); /* Test Reentering library through deprecated routines after H5close() */
- }
-#endif
- test_misc32(); /* Test filter memory allocation functions */
-#if 0
- test_misc33(); /* Test to verify that H5HL_offset_into() returns error if offset exceeds heap block */
- test_misc34(); /* Test behavior of 0 and NULL in H5MM API calls */
- test_misc35(); /* Test behavior of free-list & allocation statistics API calls */
-#endif
- test_misc36(); /* Exercise H5atclose and H5is_library_terminating */
-#if 0
- test_misc37(); /* Test for seg fault failure at file close */
-#endif
-} /* test_misc() */
-
-/*-------------------------------------------------------------------------
- * Function: cleanup_misc
- *
- * Purpose: Cleanup temporary test files
- *
- * Return: none
- *
- *-------------------------------------------------------------------------
- */
-void
-cleanup_misc(void)
-{
- H5Fdelete(MISC1_FILE, H5P_DEFAULT);
- H5Fdelete(MISC2_FILE_1, H5P_DEFAULT);
- H5Fdelete(MISC2_FILE_2, H5P_DEFAULT);
- H5Fdelete(MISC3_FILE, H5P_DEFAULT);
- H5Fdelete(MISC4_FILE_1, H5P_DEFAULT);
- H5Fdelete(MISC4_FILE_2, H5P_DEFAULT);
- H5Fdelete(MISC5_FILE, H5P_DEFAULT);
- H5Fdelete(MISC6_FILE, H5P_DEFAULT);
- H5Fdelete(MISC7_FILE, H5P_DEFAULT);
- H5Fdelete(MISC8_FILE, H5P_DEFAULT);
- H5Fdelete(MISC9_FILE, H5P_DEFAULT);
- H5Fdelete(MISC10_FILE_NEW, H5P_DEFAULT);
- H5Fdelete(MISC11_FILE, H5P_DEFAULT);
- H5Fdelete(MISC12_FILE, H5P_DEFAULT);
- H5Fdelete(MISC13_FILE_1, H5P_DEFAULT);
- H5Fdelete(MISC13_FILE_2, H5P_DEFAULT);
- H5Fdelete(MISC14_FILE, H5P_DEFAULT);
- H5Fdelete(MISC15_FILE, H5P_DEFAULT);
- H5Fdelete(MISC16_FILE, H5P_DEFAULT);
- H5Fdelete(MISC17_FILE, H5P_DEFAULT);
- H5Fdelete(MISC18_FILE, H5P_DEFAULT);
- H5Fdelete(MISC19_FILE, H5P_DEFAULT);
- H5Fdelete(MISC20_FILE, H5P_DEFAULT);
-#if defined(H5_HAVE_FILTER_SZIP) && !defined(H5_API_TEST_NO_FILTERS)
- H5Fdelete(MISC21_FILE, H5P_DEFAULT);
- H5Fdelete(MISC22_FILE, H5P_DEFAULT);
-#endif /* H5_HAVE_FILTER_SZIP */
- H5Fdelete(MISC23_FILE, H5P_DEFAULT);
- H5Fdelete(MISC24_FILE, H5P_DEFAULT);
- H5Fdelete(MISC25A_FILE, H5P_DEFAULT);
- H5Fdelete(MISC25C_FILE, H5P_DEFAULT);
- H5Fdelete(MISC26_FILE, H5P_DEFAULT);
- H5Fdelete(MISC28_FILE, H5P_DEFAULT);
- H5Fdelete(MISC29_COPY_FILE, H5P_DEFAULT);
- H5Fdelete(MISC30_FILE, H5P_DEFAULT);
-#ifndef H5_NO_DEPRECATED_SYMBOLS
- H5Fdelete(MISC31_FILE, H5P_DEFAULT);
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
-} /* end cleanup_misc() */