diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2016-12-19 06:34:18 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2016-12-19 06:34:18 (GMT) |
commit | 798cdad29a49e0883446f7dad3c7992d53ea6ee3 (patch) | |
tree | 1de6ed6b6115be9cecd3753b63d3c69b54d03a80 /c++/test | |
parent | 700c6ae9851752d8ccf6fc18cdd5b44dcf9603a5 (diff) | |
download | hdf5-798cdad29a49e0883446f7dad3c7992d53ea6ee3.zip hdf5-798cdad29a49e0883446f7dad3c7992d53ea6ee3.tar.gz hdf5-798cdad29a49e0883446f7dad3c7992d53ea6ee3.tar.bz2 |
Purpose: Improvement for HDFFV-10004
Description:
When adding wrappers for H5Lexists, a new class, LinkAccPropList, was
added to the C++ API, triggered complicated circular dependencies. Thus,
some improvement was made to resolve the problems.
- Replaced existing functions openXxxType with individual type constructors
+ Added individual XxxType constructors to replace the existing functions
openXxxType because it's rather awkward to use these functions.
+ Moved openXxxType from H5Location back to CommonFG
+ Put back CommonFG as a baseclass of Group for openXxxType functions.
+ This replacement should improve usability and prevent the problem of
circular dependencies.
- Removed overloaded constructor that takes an Attribute when there is
already one that takes H5Location because Attribute inherits from
H5Location now.
Platforms tested:
Linux/32 2.6 (jam)
Darwin (osx1010test)
Linux/64 (platypus)
Diffstat (limited to 'c++/test')
-rw-r--r-- | c++/test/tarray.cpp | 16 | ||||
-rw-r--r-- | c++/test/tobject.cpp | 21 |
2 files changed, 33 insertions, 4 deletions
diff --git a/c++/test/tarray.cpp b/c++/test/tarray.cpp index 7fe2e6b..f10016f 100644 --- a/c++/test/tarray.cpp +++ b/c++/test/tarray.cpp @@ -34,6 +34,7 @@ using namespace H5; #include "h5cpputil.h" // C++ utilility header file const H5std_string FILENAME("tarray.h5"); +const H5std_string ARRAYTYPE_NAME("/Array type 1"); const int SPACE1_RANK = 1; const hsize_t SPACE1_DIM1 = 4; const int ARRAY1_RANK = 1; @@ -130,9 +131,22 @@ static void test_array_compound_array() // Write dataset to disk dataset.write(wdata, arrtype); + // Test opening ArrayType with opening constructor (Dec 2016) + + // Commit the arrtype to give it a name + arrtype.commit(file1, ARRAYTYPE_NAME); + + // Close it, then re-open with the opening constructor + arrtype.close(); + ArrayType named_type(file1, ARRAYTYPE_NAME); + + // Get and verify the type's name + H5std_string type_name = named_type.getObjName(); + verify_val(type_name, ARRAYTYPE_NAME, "DataType::getObjName tests constructor", __LINE__, __FILE__); + named_type.close(); + // Close all dataset.close(); - arrtype.close(); space.close(); file1.close(); diff --git a/c++/test/tobject.cpp b/c++/test/tobject.cpp index b8654c3..e142f02 100644 --- a/c++/test/tobject.cpp +++ b/c++/test/tobject.cpp @@ -23,8 +23,6 @@ #else #include <iostream> #endif -using std::cerr; -using std::endl; #include <string> #include "H5Cpp.h" // C++ API header file @@ -184,6 +182,16 @@ static void test_get_objname_ontypes() H5std_string inttype_name = inttype.getObjName(); verify_val(inttype_name, "/INT type of STD_B8LE", "DataType::getObjName", __LINE__, __FILE__); + // Close the type then open it again to test getting its name with + // the constructor + inttype.close(); + IntType newtype(file, "INT type of STD_B8LE"); + + // Get and verify its name + H5std_string type_name = newtype.getObjName(); + verify_val(type_name, "/INT type of STD_B8LE", "DataType::getObjName tests constructor", __LINE__, __FILE__); + newtype.close(); + // Make copy of a predefined type and save it DataType dtype(PredType::STD_B8LE); dtype.commit(file, "STD_B8LE"); @@ -197,7 +205,14 @@ static void test_get_objname_ontypes() dtype = file.openDataType("STD_B8LE"); // Get and verify its name - H5std_string type_name = dtype.getObjName(); + type_name = dtype.getObjName(); + verify_val(type_name, "/STD_B8LE", "DataType::getObjName", __LINE__, __FILE__); + + // Repeat the test with openDataType's replacement + DataType dtype2(file, "STD_B8LE"); + + // Get and verify its name + type_name = dtype2.getObjName(); verify_val(type_name, "/STD_B8LE", "DataType::getObjName", __LINE__, __FILE__); // Test getting type's name from copied type |