summaryrefslogtreecommitdiffstats
path: root/c++/test/tarray.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c++/test/tarray.cpp')
-rw-r--r--c++/test/tarray.cpp458
1 files changed, 228 insertions, 230 deletions
diff --git a/c++/test/tarray.cpp b/c++/test/tarray.cpp
index 1da9e0c..c07ba42 100644
--- a/c++/test/tarray.cpp
+++ b/c++/test/tarray.cpp
@@ -5,12 +5,10 @@
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*****************************************************************************
@@ -60,7 +58,7 @@ typedef enum int_t {
* Return: None.
*
* Programmer: Binh-Minh Ribler (using C version)
- * January, 2016
+ * January, 2016
*
* Modifications:
*
@@ -78,7 +76,7 @@ static void test_array_compound_array()
hsize_t sdims1[] = {SPACE1_DIM1};
hsize_t tdims1[] = {ARRAY1_DIM1};
int nmemb; // Number of compound members
- int ii; // counting variables
+ int ii; // counting variables
hsize_t idxi, idxj, idxk; // dimension indicing variables
H5T_class_t mclass; // Datatype class for field
@@ -87,180 +85,180 @@ static void test_array_compound_array()
for (idxj = 0; idxj < ARRAY1_DIM1; idxj++) {
wdata[idxi][idxj].i = idxi * 10 + idxj;
for(idxk = 0; idxk < ARRAY1_DIM1; idxk++)
- {
+ {
float temp = idxi * 10.0 + idxj * 2.5 + idxk;
wdata[idxi][idxj].f[idxk] = temp;
- }
+ }
} // end for
try {
- // Create File
- H5File file1(FILENAME, H5F_ACC_TRUNC);
+ // Create File
+ H5File file1(FILENAME, H5F_ACC_TRUNC);
- // Create dataspace for datasets
- DataSpace space(SPACE1_RANK, sdims1, NULL);
+ // Create dataspace for datasets
+ DataSpace space(SPACE1_RANK, sdims1, NULL);
- /*
- * Create an array datatype of compounds, arrtype. Each compound
- * datatype, comptype, contains an integer and an array of floats,
- * arrfltype.
- */
+ /*
+ * Create an array datatype of compounds, arrtype. Each compound
+ * datatype, comptype, contains an integer and an array of floats,
+ * arrfltype.
+ */
- // Create a compound datatype
- CompType comptype(sizeof(s1_t));
+ // Create a compound datatype
+ CompType comptype(sizeof(s1_t));
- // Insert integer field
- comptype.insertMember("i", HOFFSET(s1_t, i), PredType::NATIVE_INT);
+ // Insert integer field
+ comptype.insertMember("i", HOFFSET(s1_t, i), PredType::NATIVE_INT);
- // Create an array of floats datatype
- ArrayType arrfltype(PredType::NATIVE_FLOAT, ARRAY1_RANK, tdims1);
+ // Create an array of floats datatype
+ ArrayType arrfltype(PredType::NATIVE_FLOAT, ARRAY1_RANK, tdims1);
- // Insert float array field
- comptype.insertMember("f", HOFFSET(s1_t, f), arrfltype);
+ // Insert float array field
+ comptype.insertMember("f", HOFFSET(s1_t, f), arrfltype);
- // Close array of floats field datatype
- arrfltype.close();
+ // Close array of floats field datatype
+ arrfltype.close();
- // Create an array datatype of the compound datatype
- ArrayType arrtype(comptype, ARRAY1_RANK, tdims1);
+ // Create an array datatype of the compound datatype
+ ArrayType arrtype(comptype, ARRAY1_RANK, tdims1);
- // Close compound datatype comptype
- comptype.close();
+ // Close compound datatype comptype
+ comptype.close();
- // Create a dataset
- DataSet dataset = file1.createDataSet("Dataset1", arrtype, space);
+ // Create a dataset
+ DataSet dataset = file1.createDataSet("Dataset1", arrtype, space);
- // Write dataset to disk
- dataset.write(wdata, arrtype);
+ // Write dataset to disk
+ dataset.write(wdata, arrtype);
- // Close all
- dataset.close();
- arrtype.close();
- space.close();
- file1.close();
+ // Close all
+ dataset.close();
+ arrtype.close();
+ space.close();
+ file1.close();
- // Re-open file
- file1.openFile(FILENAME, H5F_ACC_RDONLY);
+ // Re-open file
+ file1.openFile(FILENAME, H5F_ACC_RDONLY);
- // Open the dataset
- dataset = file1.openDataSet("Dataset1");
+ // Open the dataset
+ dataset = file1.openDataSet("Dataset1");
- /*
- * Check the datatype array of compounds
- */
+ /*
+ * Check the datatype array of compounds
+ */
- // Verify that it is an array of compounds
- DataType dstype = dataset.getDataType();
- mclass = dstype.getClass();
- verify_val(mclass==H5T_ARRAY, true, "f2_type.getClass", __LINE__, __FILE__);
+ // Verify that it is an array of compounds
+ DataType dstype = dataset.getDataType();
+ mclass = dstype.getClass();
+ verify_val(mclass==H5T_ARRAY, true, "f2_type.getClass", __LINE__, __FILE__);
- dstype.close();
+ dstype.close();
- // Get the array datatype to check
- ArrayType atype_check = dataset.getArrayType();
+ // Get the array datatype to check
+ ArrayType atype_check = dataset.getArrayType();
- // Check the array rank
- int ndims = atype_check.getArrayNDims();
- verify_val(ndims, ARRAY1_RANK, "atype_check.getArrayNDims", __LINE__, __FILE__);
+ // Check the array rank
+ int ndims = atype_check.getArrayNDims();
+ verify_val(ndims, ARRAY1_RANK, "atype_check.getArrayNDims", __LINE__, __FILE__);
- // Get the array dimensions
- hsize_t rdims1[H5S_MAX_RANK];
- atype_check.getArrayDims(rdims1);
+ // Get the array dimensions
+ hsize_t rdims1[H5S_MAX_RANK];
+ atype_check.getArrayDims(rdims1);
- // Check the array dimensions
- for (ii =0; ii <ndims; ii++)
- if (rdims1[ii]!=tdims1[ii]) {
- TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%zd, tdims1[%d]=z%d\n", ii, rdims1[ii], ii, tdims1[ii]);
+ // Check the array dimensions
+ for (ii =0; ii <ndims; ii++)
+ if (rdims1[ii]!=tdims1[ii]) {
+ TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%zd, tdims1[%d]=z%d\n", ii, rdims1[ii], ii, tdims1[ii]);
continue;
} // end if
- // Test ArrayType::ArrayType(const hid_t existing_id)
- ArrayType new_arrtype(atype_check.getId());
+ // Test ArrayType::ArrayType(const hid_t existing_id)
+ ArrayType new_arrtype(atype_check.getId());
- // Check the array rank
- ndims = new_arrtype.getArrayNDims();
- verify_val(ndims, ARRAY1_RANK, "new_arrtype.getArrayNDims", __LINE__, __FILE__);
+ // Check the array rank
+ ndims = new_arrtype.getArrayNDims();
+ verify_val(ndims, ARRAY1_RANK, "new_arrtype.getArrayNDims", __LINE__, __FILE__);
- // Get the array dimensions
- new_arrtype.getArrayDims(rdims1);
+ // Get the array dimensions
+ new_arrtype.getArrayDims(rdims1);
- // Check the array dimensions
- for (ii = 0; ii < ndims; ii++)
- if (rdims1[ii] != tdims1[ii]) {
- TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%zd, tdims1[%d]=%zd\n", ii, rdims1[ii], ii, tdims1[ii]);
+ // Check the array dimensions
+ for (ii = 0; ii < ndims; ii++)
+ if (rdims1[ii] != tdims1[ii]) {
+ TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%zd, tdims1[%d]=%zd\n", ii, rdims1[ii], ii, tdims1[ii]);
continue;
} // end if
- /*
- * Check the compound datatype and the array of floats datatype
- * in the compound.
- */
- // Get the compound datatype, which is the base datatype of the
- // array datatype atype_check.
- DataType base_type = atype_check.getSuper();
- mclass = base_type.getClass();
- verify_val(mclass==H5T_COMPOUND, true, "atype_check.getClass", __LINE__, __FILE__);
-
- // Verify the compound datatype info
- CompType ctype_check(base_type.getId());
- base_type.close();
-
- // Check the number of members
- nmemb = ctype_check.getNmembers();
- verify_val(nmemb, 2, "ctype_check.getNmembers", __LINE__, __FILE__);
-
- // Check the 2nd field's name
- H5std_string field2_name = ctype_check.getMemberName(1);
- if (HDstrcmp(field2_name.c_str(),"f") != 0)
- TestErrPrintf("Compound field name doesn't match!, field2_name=%s\n",field2_name.c_str());
-
- // Get the 2nd field's datatype
- DataType f2_type = ctype_check.getMemberDataType(1);
-
- // Get the 2nd field's class, this 2nd field should have an array type
- mclass = f2_type.getClass();
- verify_val(mclass==H5T_ARRAY, true, "f2_type.getClass", __LINE__, __FILE__);
- f2_type.close();
-
- // Get the 2nd field, array of floats datatype, to check
- ArrayType f2_atype_check = ctype_check.getMemberArrayType(1);
-
- // Check the array rank
- ndims = f2_atype_check.getArrayNDims();
- verify_val(ndims, ARRAY1_RANK, "f2_atype_check.getArrayNDims", __LINE__, __FILE__);
-
- // Get the array dimensions
- HDmemset(rdims1, 0, H5S_MAX_RANK);
- f2_atype_check.getArrayDims(rdims1);
-
- // Check the array dimensions
- for (ii = 0; ii < ndims; ii++)
- if (rdims1[ii] != tdims1[ii]) {
- TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%zd, tdims1[%d]=%zd\n", ii, rdims1[ii], ii, tdims1[ii]);
- continue;
- } // end if
-
- // Close done datatypes
- f2_atype_check.close();
- ctype_check.close();
-
- // Read dataset from disk
- dataset.read(rdata, atype_check);
-
- // Compare data read in
- for (idxi = 0; idxi < SPACE1_DIM1; idxi++) {
- for (idxj = 0; idxj < ARRAY1_DIM1; idxj++) {
- if (wdata[idxi][idxj].i != rdata[idxi][idxj].i) {
- TestErrPrintf("Array data information doesn't match!, wdata[%d][%d].i=%d, rdata[%d][%d].i=%d\n",idxi,idxj,wdata[idxi][idxj].i,idxi,idxj,rdata[idxi][idxj].i);
- continue;
- } // end if
- } // end for
- } // end for
-
- // Close all
- atype_check.close();
- dataset.close();
- file1.close();
+ /*
+ * Check the compound datatype and the array of floats datatype
+ * in the compound.
+ */
+ // Get the compound datatype, which is the base datatype of the
+ // array datatype atype_check.
+ DataType base_type = atype_check.getSuper();
+ mclass = base_type.getClass();
+ verify_val(mclass==H5T_COMPOUND, true, "atype_check.getClass", __LINE__, __FILE__);
+
+ // Verify the compound datatype info
+ CompType ctype_check(base_type.getId());
+ base_type.close();
+
+ // Check the number of members
+ nmemb = ctype_check.getNmembers();
+ verify_val(nmemb, 2, "ctype_check.getNmembers", __LINE__, __FILE__);
+
+ // Check the 2nd field's name
+ H5std_string field2_name = ctype_check.getMemberName(1);
+ if (HDstrcmp(field2_name.c_str(),"f") != 0)
+ TestErrPrintf("Compound field name doesn't match!, field2_name=%s\n",field2_name.c_str());
+
+ // Get the 2nd field's datatype
+ DataType f2_type = ctype_check.getMemberDataType(1);
+
+ // Get the 2nd field's class, this 2nd field should have an array type
+ mclass = f2_type.getClass();
+ verify_val(mclass==H5T_ARRAY, true, "f2_type.getClass", __LINE__, __FILE__);
+ f2_type.close();
+
+ // Get the 2nd field, array of floats datatype, to check
+ ArrayType f2_atype_check = ctype_check.getMemberArrayType(1);
+
+ // Check the array rank
+ ndims = f2_atype_check.getArrayNDims();
+ verify_val(ndims, ARRAY1_RANK, "f2_atype_check.getArrayNDims", __LINE__, __FILE__);
+
+ // Get the array dimensions
+ HDmemset(rdims1, 0, H5S_MAX_RANK);
+ f2_atype_check.getArrayDims(rdims1);
+
+ // Check the array dimensions
+ for (ii = 0; ii < ndims; ii++)
+ if (rdims1[ii] != tdims1[ii]) {
+ TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%zd, tdims1[%d]=%zd\n", ii, rdims1[ii], ii, tdims1[ii]);
+ continue;
+ } // end if
+
+ // Close done datatypes
+ f2_atype_check.close();
+ ctype_check.close();
+
+ // Read dataset from disk
+ dataset.read(rdata, atype_check);
+
+ // Compare data read in
+ for (idxi = 0; idxi < SPACE1_DIM1; idxi++) {
+ for (idxj = 0; idxj < ARRAY1_DIM1; idxj++) {
+ if (wdata[idxi][idxj].i != rdata[idxi][idxj].i) {
+ TestErrPrintf("Array data information doesn't match!, wdata[%d][%d].i=%d, rdata[%d][%d].i=%d\n",idxi,idxj,wdata[idxi][idxj].i,idxi,idxj,rdata[idxi][idxj].i);
+ continue;
+ } // end if
+ } // end for
+ } // end for
+
+ // Close all
+ atype_check.close();
+ dataset.close();
+ file1.close();
PASSED();
} // end of try block
catch (Exception& E)
@@ -279,10 +277,10 @@ static void test_array_compound_array()
* Return: None.
*
* Programmer: Binh-Minh Ribler (using C version)
- * March, 2016
+ * March, 2016
*
* Description:
- * Used user's sample code in HDFFV-9562
+ * Used user's sample code in HDFFV-9562
*
* Modifications:
*
@@ -306,35 +304,35 @@ static void test_array_assignment()
SUBTEST("ArrayType::operator=");
try {
- // Create File
- H5File file1(FILENAME, H5F_ACC_TRUNC);
+ // Create File
+ H5File file1(FILENAME, H5F_ACC_TRUNC);
- // Create dataspace for datasets
- DataSpace space(SPACE1_RANK, sdims1, NULL);
+ // Create dataspace for datasets
+ DataSpace space(SPACE1_RANK, sdims1, NULL);
- /*
- * Create an array datatype of compounds, arrtype. Each compound
- * datatype, comptype, contains an integer and an array of floats,
- * arrfltype.
- */
+ /*
+ * Create an array datatype of compounds, arrtype. Each compound
+ * datatype, comptype, contains an integer and an array of floats,
+ * arrfltype.
+ */
- // Create a compound datatype
- CompType comptype(static_cast<size_t>(24));
+ // Create a compound datatype
+ CompType comptype(static_cast<size_t>(24));
- // Insert integer field
- comptype.insertMember("i", 0, PredType::NATIVE_INT);
+ // Insert integer field
+ comptype.insertMember("i", 0, PredType::NATIVE_INT);
- // Insert float array field
- comptype.insertMember("a", 4, getArr());
+ // Insert float array field
+ comptype.insertMember("a", 4, getArr());
- // Create a dataset
- DataSet dataset = file1.createDataSet("Dataset1", comptype, space);
+ // Create a dataset
+ DataSet dataset = file1.createDataSet("Dataset1", comptype, space);
- // Close all
- dataset.close();
- comptype.close();
- space.close();
- file1.close();
+ // Close all
+ dataset.close();
+ comptype.close();
+ space.close();
+ file1.close();
PASSED();
} // end of try block
@@ -353,7 +351,7 @@ static void test_array_assignment()
* Return: None.
*
* Programmer: Binh-Minh Ribler
- * April, 2016
+ * April, 2016
*
* Modifications:
*
@@ -371,7 +369,7 @@ static void test_array_info()
hsize_t sdims1[] = {SPACE1_DIM1};
hsize_t tdims1[] = {ARRAY1_DIM1};
int nmemb; // Number of compound members
- int ii; // counting variables
+ int ii; // counting variables
hsize_t idxi, idxj, idxk; // dimension indicing variables
H5T_class_t mclass; // Datatype class for field
@@ -380,84 +378,84 @@ static void test_array_info()
for (idxj = 0; idxj < ARRAY1_DIM1; idxj++) {
wdata[idxi][idxj].i = idxi * 10 + idxj;
for(idxk = 0; idxk < ARRAY1_DIM1; idxk++)
- {
+ {
float temp = idxi * 10.0 + idxj * 2.5 + idxk;
wdata[idxi][idxj].f[idxk] = temp;
- }
+ }
} // end for
try {
- // Create File
- H5File file1(FILENAME, H5F_ACC_TRUNC);
+ // Create File
+ H5File file1(FILENAME, H5F_ACC_TRUNC);
- // Create dataspace for datasets
- DataSpace space(SPACE1_RANK, sdims1, NULL);
+ // Create dataspace for datasets
+ DataSpace space(SPACE1_RANK, sdims1, NULL);
- /*
- * Create some array datatypes, then close the file.
- */
+ /*
+ * Create some array datatypes, then close the file.
+ */
- // Create an array of floats datatype
- ArrayType arrfltype(PredType::NATIVE_FLOAT, ARRAY1_RANK, tdims1);
+ // Create an array of floats datatype
+ ArrayType arrfltype(PredType::NATIVE_FLOAT, ARRAY1_RANK, tdims1);
- // Create an array datatype of the compound datatype
- ArrayType arrtype(PredType::NATIVE_UINT, ARRAY1_RANK, tdims1);
+ // Create an array datatype of the compound datatype
+ ArrayType arrtype(PredType::NATIVE_UINT, ARRAY1_RANK, tdims1);
- // Create a dataset
- DataSet dataset = file1.createDataSet("Dataset1", arrtype, space);
+ // Create a dataset
+ DataSet dataset = file1.createDataSet("Dataset1", arrtype, space);
- // Write dataset to disk
- dataset.write(wdata, arrtype);
+ // Write dataset to disk
+ dataset.write(wdata, arrtype);
- // Close array of floats field datatype
- arrfltype.close();
+ // Close array of floats field datatype
+ arrfltype.close();
- // Close all
- dataset.close();
- arrtype.close();
- space.close();
- file1.close();
+ // Close all
+ dataset.close();
+ arrtype.close();
+ space.close();
+ file1.close();
- // Re-open file
- file1.openFile(FILENAME, H5F_ACC_RDONLY);
+ // Re-open file
+ file1.openFile(FILENAME, H5F_ACC_RDONLY);
- // Open the dataset
- dataset = file1.openDataSet("Dataset1");
+ // Open the dataset
+ dataset = file1.openDataSet("Dataset1");
- /*
- * Check the datatype array of compounds
- */
+ /*
+ * Check the datatype array of compounds
+ */
- // Verify that it is an array of compounds
- DataType dstype = dataset.getDataType();
- mclass = dstype.getClass();
- verify_val(mclass==H5T_ARRAY, true, "f2_type.getClass", __LINE__, __FILE__);
+ // Verify that it is an array of compounds
+ DataType dstype = dataset.getDataType();
+ mclass = dstype.getClass();
+ verify_val(mclass==H5T_ARRAY, true, "f2_type.getClass", __LINE__, __FILE__);
- dstype.close();
+ dstype.close();
- { // Let atype_check go out of scope
- // Get the array datatype, declared as const
- const ArrayType atype_check = dataset.getArrayType();
+ { // Let atype_check go out of scope
+ // Get the array datatype, declared as const
+ const ArrayType atype_check = dataset.getArrayType();
- // Check the array rank with the const method
- int ndims = atype_check.getArrayNDims();
- verify_val(ndims, ARRAY1_RANK, "atype_check.getArrayNDims", __LINE__, __FILE__);
+ // Check the array rank with the const method
+ int ndims = atype_check.getArrayNDims();
+ verify_val(ndims, ARRAY1_RANK, "atype_check.getArrayNDims", __LINE__, __FILE__);
- // Get the array dimensions with the const method
- hsize_t rdims1[H5S_MAX_RANK];
- atype_check.getArrayDims(rdims1);
+ // Get the array dimensions with the const method
+ hsize_t rdims1[H5S_MAX_RANK];
+ atype_check.getArrayDims(rdims1);
- // Check the array dimensions
- for (ii =0; ii <ndims; ii++)
- if (rdims1[ii]!=tdims1[ii]) {
- TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%zd, tdims1[%d]=z%d\n", ii, rdims1[ii], ii, tdims1[ii]);
+ // Check the array dimensions
+ for (ii =0; ii <ndims; ii++)
+ if (rdims1[ii]!=tdims1[ii]) {
+ TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%zd, tdims1[%d]=z%d\n", ii, rdims1[ii], ii, tdims1[ii]);
continue;
} // end if
- }
+ }
- // Close all
- dataset.close();
- file1.close();
+ // Close all
+ dataset.close();
+ file1.close();
PASSED();
} // end of try block
catch (Exception& E)
@@ -492,14 +490,14 @@ void test_array()
/*-------------------------------------------------------------------------
- * Function: cleanup_array
+ * Function: cleanup_array
*
- * Purpose: Cleanup temporary test files
+ * Purpose: Cleanup temporary test files
*
- * Return: none
+ * Return: none
*
* Programmer: Binh-Minh Ribler (using C version)
- * January, 2016
+ * January, 2016
*
* Modifications:
*