summaryrefslogtreecommitdiffstats
path: root/c++/test
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2012-03-23 00:50:36 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2012-03-23 00:50:36 (GMT)
commit19a6303205d070f62f2579168397579001a38fe5 (patch)
tree89d6a83a1986e44d3e51621ba98f0080eb0b7f02 /c++/test
parentc9f0f2ec22961b297d615c2deac0ce4b52a07b96 (diff)
downloadhdf5-19a6303205d070f62f2579168397579001a38fe5.zip
hdf5-19a6303205d070f62f2579168397579001a38fe5.tar.gz
hdf5-19a6303205d070f62f2579168397579001a38fe5.tar.bz2
[svn-r22128] 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.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/c++/test/dsets.cpp b/c++/test/dsets.cpp
index ee1a206..26abace 100644
--- a/c++/test/dsets.cpp
+++ b/c++/test/dsets.cpp
@@ -268,6 +268,77 @@ test_simple_io( H5File& file)
} // 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
*
* Purpose: Test some simple data type conversion stuff.
@@ -1004,6 +1075,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)
{