diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2012-03-23 05:43:59 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2012-03-23 05:43:59 (GMT) |
commit | 2ae01a1bf49129a3d292257fc0fad929bf7e1301 (patch) | |
tree | 21839183672ea46951808b24c7302b9fad17a81f /c++/test | |
parent | b462f48e9b308886b6ed455a4aae7cbf0b8a2749 (diff) | |
download | hdf5-2ae01a1bf49129a3d292257fc0fad929bf7e1301.zip hdf5-2ae01a1bf49129a3d292257fc0fad929bf7e1301.tar.gz hdf5-2ae01a1bf49129a3d292257fc0fad929bf7e1301.tar.bz2 |
[svn-r22131] Purpose: Fixed bug 4279
Description:
Closed various HDF5 objects in DataSet::getInMemDataSize and
Attribute::getInMemDataSize to remove some memory leaks.
Platforms tested:
Linux/32 2.6 (jam)
Linux/64 2.6 (amani)
SunOS 5.10 (linew)
Diffstat (limited to 'c++/test')
-rw-r--r-- | c++/test/dsets.cpp | 88 |
1 files changed, 82 insertions, 6 deletions
diff --git a/c++/test/dsets.cpp b/c++/test/dsets.cpp index ee1a206..bb13f2f 100644 --- a/c++/test/dsets.cpp +++ b/c++/test/dsets.cpp @@ -61,7 +61,7 @@ const int H5Z_FILTER_BOGUS = 305; static size_t filter_bogus(unsigned int flags, size_t cd_nelmts, const unsigned int *cd_values, size_t nbytes, size_t *buf_size, void **buf); - + /*------------------------------------------------------------------------- * Function: test_create * @@ -179,7 +179,7 @@ test_create( H5File& file) return -1; } } // test_create - + /*------------------------------------------------------------------------- * Function: test_simple_io * @@ -266,7 +266,79 @@ test_simple_io( H5File& file) return -1; } } // test_simple_io - + +/*------------------------------------------------------------------------- + * Function: test_datasize + * + * Purpose: Tests DataSet::getInMemDataSize(). + * + * Return: Success: 0 + * + * Failure: -1 + * + * Programmer: Binh-Minh Ribler + * Thursday, March 22, 2012 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +test_datasize() +{ + + SUBTEST("DataSet::getInMemDataSize()"); + + int points[100][200]; + int check[100][200]; + int i, j, n; + + try + { + // Open FILE1. + H5File file(FILE1, H5F_ACC_RDWR, FileCreatPropList::DEFAULT, FileAccPropList::DEFAULT); + + // Open dataset DSET_SIMPLE_IO_NAME. + DataSet dset = file.openDataSet (DSET_SIMPLE_IO_NAME); + + // Get the dataset's dataspace to calculate the size for verification. + DataSpace space(dset.getSpace()); + + // Get the dimension sizes. + hsize_t dims[2]; + int n_dims = space.getSimpleExtentDims(dims); + + // Calculate the supposed size. Size of each value is int (4), from + // test_simple_io. + int expected_size = 4 * dims[0] * dims[1]; + + // getInMemDataSize() returns the in memory size of the data. + size_t ds_size = dset.getInMemDataSize(); + + // Verify the data size. + if (ds_size != expected_size) + { + H5_FAILED(); + cerr << " Expected data size = " << expected_size; + cerr << " but dset.getInMemDataSize() returned " << ds_size << endl; + throw Exception("test_compression", "Failed in testing DataSet::getInMemDataSize()"); + } + + PASSED(); + return 0; + } // end try + + // catch all dataset, space, plist exceptions + catch (Exception E) + { + cerr << " FAILED" << endl; + cerr << " <<< " << E.getDetailMsg() << " >>>" << endl << endl; + + return -1; + } +} // test_datasize + + /*------------------------------------------------------------------------- * Function: test_tconv * @@ -389,7 +461,7 @@ filter_bogus(unsigned int flags, size_t cd_nelmts, return nbytes; } - + /*------------------------------------------------------------------------- * Function: test_compression * @@ -759,7 +831,7 @@ test_multiopen (H5File& file) } } // test_multiopen - + /*------------------------------------------------------------------------- * Function: test_types * @@ -948,7 +1020,7 @@ test_types(H5File& file) return -1; } } // test_types - + /*------------------------------------------------------------------------- * Function: test_dset * @@ -1004,6 +1076,10 @@ void test_dset() nerrors += test_compression(file)<0 ?1:0; nerrors += test_multiopen (file)<0 ?1:0; nerrors += test_types(file)<0 ?1:0; + + // Close the file before testing data size. + file.close(); + nerrors += test_datasize() <0 ? 1:0; } catch (Exception E) { |