summaryrefslogtreecommitdiffstats
path: root/test/tgenprop.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/tgenprop.c')
-rw-r--r--test/tgenprop.c157
1 files changed, 106 insertions, 51 deletions
diff --git a/test/tgenprop.c b/test/tgenprop.c
index 7a4fdf5..1a0b75f 100644
--- a/test/tgenprop.c
+++ b/test/tgenprop.c
@@ -72,7 +72,7 @@ test_genprop_basic_class(void)
MESSAGE(5, ("Testing Basic Generic Property List Class Creation Functionality\n"));
/* Create a new generic class, derived from the root of the class hierarchy */
- cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL);
+ cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(cid1, "H5Pcreate_class");
/* Check class name */
@@ -105,7 +105,7 @@ test_genprop_basic_class(void)
CHECK_I(ret, "H5Pclose_class");
/* Create another new generic class, derived from file creation class */
- cid1 = H5Pcreate_class(H5P_FILE_CREATE_NEW,CLASS2_NAME,CLASS2_HASHSIZE,NULL,NULL,NULL,NULL);
+ cid1 = H5Pcreate_class(H5P_FILE_CREATE_NEW,CLASS2_NAME,CLASS2_HASHSIZE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(cid1, "H5Pcreate_class");
/* Check class name */
@@ -164,7 +164,7 @@ test_genprop_basic_class_prop(void)
MESSAGE(5, ("Testing Basic Generic Property List Class Properties Functionality\n"));
/* Create a new generic class, derived from the root of the class hierarchy */
- cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL);
+ cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(cid1, "H5Pcreate_class");
/* Check the number of properties in class */
@@ -177,11 +177,11 @@ test_genprop_basic_class_prop(void)
VERIFY(ret, 0, "H5Pexist");
/* Insert first property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Try to insert the first property again (should fail) */
- ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
VERIFY(ret, FAIL, "H5Pregister");
/* Check the existance of the first property */
@@ -199,11 +199,11 @@ test_genprop_basic_class_prop(void)
VERIFY(nprops, 1, "H5Pget_nprops");
/* Insert second property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Try to insert the second property again (should fail) */
- ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
VERIFY(ret, FAIL, "H5Pregister");
/* Check the existance of the second property */
@@ -221,7 +221,7 @@ test_genprop_basic_class_prop(void)
VERIFY(nprops, 2, "H5Pget_nprops");
/* Insert third property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Check the existance of the third property */
@@ -320,23 +320,23 @@ test_genprop_class_iter(void)
MESSAGE(5, ("Testing Basic Generic Property List Class Property Iteration Functionality\n"));
/* Create a new generic class, derived from the root of the class hierarchy */
- cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL);
+ cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(cid1, "H5Pcreate_class");
/* Insert first property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert second property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert third property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert third property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Check the number of properties in class */
@@ -403,23 +403,23 @@ test_genprop_class_callback(void)
MESSAGE(5, ("Testing Basic Generic Property List Class Callback Functionality\n"));
/* Create a new generic class, derived from the root of the class hierarchy */
- cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,test_genprop_cls_cb1,&crt_cb_struct,test_genprop_cls_cb1,&cls_cb_struct);
+ cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,test_genprop_cls_cb1,&crt_cb_struct,NULL,NULL,test_genprop_cls_cb1,&cls_cb_struct);
CHECK_I(cid1, "H5Pcreate_class");
/* Insert first property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert second property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert third property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert fourth property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Check the number of properties in class */
@@ -502,17 +502,17 @@ test_genprop_basic_list(void)
MESSAGE(5, ("Testing Basic Generic Property List Creation Functionality\n"));
/* Create a new generic class, derived from the root of the class hierarchy */
- cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL);
+ cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(cid1, "H5Pcreate_class");
/* Add several properties (w/default values) */
/* Insert first property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert second property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Check the number of properties in class */
@@ -604,17 +604,17 @@ test_genprop_basic_list_prop(void)
MESSAGE(5, ("Testing Basic Generic Property List Property Functionality\n"));
/* Create a new generic class, derived from the root of the class hierarchy */
- cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL);
+ cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(cid1, "H5Pcreate_class");
/* Add several properties (several w/default values) */
/* Insert first property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert second property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Create a property list from the class */
@@ -629,11 +629,11 @@ test_genprop_basic_list_prop(void)
/* Add temporary properties */
/* Insert first temporary property into class (with no callbacks) */
- ret = H5Pinsert(lid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL);
+ ret = H5Pinsert(lid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pinsert");
/* Insert second temporary property into class (with no callbacks) */
- ret = H5Pinsert(lid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL);
+ ret = H5Pinsert(lid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pinsert");
/* Check the number of properties in list */
@@ -761,17 +761,17 @@ test_genprop_list_iter(void)
MESSAGE(5, ("Testing Generic Property List Iteration Functionality\n"));
/* Create a new generic class, derived from the root of the class hierarchy */
- cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL);
+ cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(cid1, "H5Pcreate_class");
/* Add several properties (several w/default values) */
/* Insert first property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert second property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Create a property list from the class */
@@ -786,11 +786,11 @@ test_genprop_list_iter(void)
/* Add temporary properties */
/* Insert first temporary property into class (with no callbacks) */
- ret = H5Pinsert(lid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL);
+ ret = H5Pinsert(lid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pinsert");
/* Insert second temporary property into class (with no callbacks) */
- ret = H5Pinsert(lid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL);
+ ret = H5Pinsert(lid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pinsert");
/* Check the number of properties in list */
@@ -844,6 +844,11 @@ typedef struct {
char *del_name;
void *del_value;
+ /* Copy information */
+ int cop_count;
+ char *cop_name;
+ void *cop_value;
+
/* Close information */
int cls_count;
char *cls_name;
@@ -860,13 +865,13 @@ prop_cb_info prop2_cb_info; /* Callback statistics for property #2 */
**
****************************************************************/
static herr_t
-test_genprop_prop_crt_cb1(const char *name, void *def_value)
+test_genprop_prop_crt_cb1(const char *name, size_t size, void *def_value)
{
/* Set the information from the creation call */
prop1_cb_info.crt_count++;
prop1_cb_info.crt_name=HDstrdup(name);
- prop1_cb_info.crt_value=HDmalloc(PROP1_SIZE);
- HDmemcpy(prop1_cb_info.crt_value,def_value,PROP1_SIZE);
+ prop1_cb_info.crt_value=HDmalloc(size);
+ HDmemcpy(prop1_cb_info.crt_value,def_value,size);
return(SUCCEED);
}
@@ -877,7 +882,7 @@ test_genprop_prop_crt_cb1(const char *name, void *def_value)
**
****************************************************************/
static herr_t
-test_genprop_prop_set_cb1(hid_t plist_id, const char *name, void *value)
+test_genprop_prop_set_cb1(hid_t plist_id, const char *name, size_t size, void *value)
{
/* Set the information from the set call */
prop1_cb_info.set_count++;
@@ -885,8 +890,8 @@ test_genprop_prop_set_cb1(hid_t plist_id, const char *name, void *value)
if(prop1_cb_info.set_name==NULL)
prop1_cb_info.set_name=HDstrdup(name);
if(prop1_cb_info.set_value==NULL)
- prop1_cb_info.set_value=HDmalloc(PROP1_SIZE);
- HDmemcpy(prop1_cb_info.set_value,value,PROP1_SIZE);
+ prop1_cb_info.set_value=HDmalloc(size);
+ HDmemcpy(prop1_cb_info.set_value,value,size);
return(SUCCEED);
}
@@ -897,7 +902,7 @@ test_genprop_prop_set_cb1(hid_t plist_id, const char *name, void *value)
**
****************************************************************/
static herr_t
-test_genprop_prop_get_cb1(hid_t plist_id, const char *name, void *value)
+test_genprop_prop_get_cb1(hid_t plist_id, const char *name, size_t size, void *value)
{
/* Set the information from the get call */
prop1_cb_info.get_count++;
@@ -905,8 +910,27 @@ test_genprop_prop_get_cb1(hid_t plist_id, const char *name, void *value)
if(prop1_cb_info.get_name==NULL)
prop1_cb_info.get_name=HDstrdup(name);
if(prop1_cb_info.get_value==NULL)
- prop1_cb_info.get_value=HDmalloc(PROP1_SIZE);
- HDmemcpy(prop1_cb_info.get_value,value,PROP1_SIZE);
+ prop1_cb_info.get_value=HDmalloc(size);
+ HDmemcpy(prop1_cb_info.get_value,value,size);
+
+ return(SUCCEED);
+}
+
+/****************************************************************
+**
+** test_genprop_prop_cop_cb1(): Property copy callback for test_genprop_list_callback
+**
+****************************************************************/
+static herr_t
+test_genprop_prop_cop_cb1(const char *name, size_t size, void *value)
+{
+ /* Set the information from the get call */
+ prop1_cb_info.cop_count++;
+ if(prop1_cb_info.cop_name==NULL)
+ prop1_cb_info.cop_name=HDstrdup(name);
+ if(prop1_cb_info.cop_value==NULL)
+ prop1_cb_info.cop_value=HDmalloc(size);
+ HDmemcpy(prop1_cb_info.cop_value,value,size);
return(SUCCEED);
}
@@ -917,13 +941,13 @@ test_genprop_prop_get_cb1(hid_t plist_id, const char *name, void *value)
**
****************************************************************/
static herr_t
-test_genprop_prop_cls_cb1(const char *name, void *value)
+test_genprop_prop_cls_cb1(const char *name, size_t size, void *value)
{
/* Set the information from the close call */
prop1_cb_info.cls_count++;
prop1_cb_info.cls_name=HDstrdup(name);
- prop1_cb_info.cls_value=HDmalloc(PROP1_SIZE);
- HDmemcpy(prop1_cb_info.cls_value,value,PROP1_SIZE);
+ prop1_cb_info.cls_value=HDmalloc(size);
+ HDmemcpy(prop1_cb_info.cls_value,value,size);
return(SUCCEED);
}
@@ -934,14 +958,14 @@ test_genprop_prop_cls_cb1(const char *name, void *value)
**
****************************************************************/
static herr_t
-test_genprop_prop_del_cb2(hid_t plist_id, const char *name, void *value)
+test_genprop_prop_del_cb2(hid_t plist_id, const char *name, size_t size, void *value)
{
/* Set the information from the delete call */
prop2_cb_info.del_count++;
prop2_cb_info.del_plist_id=plist_id;
prop2_cb_info.del_name=HDstrdup(name);
- prop2_cb_info.del_value=HDmalloc(PROP2_SIZE);
- HDmemcpy(prop2_cb_info.del_value,value,PROP2_SIZE);
+ prop2_cb_info.del_value=HDmalloc(size);
+ HDmemcpy(prop2_cb_info.del_value,value,size);
return(SUCCEED);
}
@@ -957,35 +981,40 @@ test_genprop_list_callback(void)
{
hid_t cid1; /* Generic Property class ID */
hid_t lid1; /* Generic Property list ID */
+ hid_t lid2; /* 2nd Generic Property list ID */
size_t nprops; /* Number of properties in class */
int prop1_value; /* Value for property #1 */
int prop1_new_value=20; /* Property #1 new value */
float prop2_value; /* Value for property #2 */
char prop3_value[10];/* Property #3 value */
double prop4_value; /* Property #4 value */
+ struct { /* Struct for callbacks */
+ int count;
+ hid_t id;
+ } cop_cb_struct;
herr_t ret; /* Generic return value */
/* Output message about test being performed */
MESSAGE(5, ("Testing Basic Generic Property List Property Callback Functionality\n"));
/* Create a new generic class, derived from the root of the class hierarchy */
- cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,NULL,NULL);
+ cid1 = H5Pcreate_class(H5P_NO_CLASS_NEW,CLASS1_NAME,CLASS1_HASHSIZE,NULL,NULL,test_genprop_cls_cb1,&cop_cb_struct,NULL,NULL);
CHECK_I(cid1, "H5Pcreate_class");
/* Insert first property into class (with callbacks) */
- ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,test_genprop_prop_crt_cb1,test_genprop_prop_set_cb1,test_genprop_prop_get_cb1,NULL,test_genprop_prop_cls_cb1);
+ ret = H5Pregister(cid1,PROP1_NAME,PROP1_SIZE,PROP1_DEF_VALUE,test_genprop_prop_crt_cb1,test_genprop_prop_set_cb1,test_genprop_prop_get_cb1,NULL,test_genprop_prop_cop_cb1,test_genprop_prop_cls_cb1);
CHECK_I(ret, "H5Pregister");
/* Insert second property into class (with only delete callback) */
- ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,test_genprop_prop_del_cb2,NULL);
+ ret = H5Pregister(cid1,PROP2_NAME,PROP2_SIZE,PROP2_DEF_VALUE,NULL,NULL,NULL,test_genprop_prop_del_cb2,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert third property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP3_NAME,PROP3_SIZE,PROP3_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Insert fourth property into class (with no callbacks) */
- ret = H5Pregister(cid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL,NULL);
+ ret = H5Pregister(cid1,PROP4_NAME,PROP4_SIZE,PROP4_DEF_VALUE,NULL,NULL,NULL,NULL,NULL,NULL);
CHECK_I(ret, "H5Pregister");
/* Check the number of properties in class */
@@ -993,8 +1022,13 @@ test_genprop_list_callback(void)
CHECK_I(ret, "H5Pget_nprops");
VERIFY(nprops, 4, "H5Pget_nprops");
+ /* Initialize class callback structs */
+ cop_cb_struct.count=0;
+ cop_cb_struct.id=(-1);
+
/* Initialize callback information for properties tracked */
HDmemset(&prop1_cb_info,0,sizeof(prop_cb_info));
+ HDmemset(&prop2_cb_info,0,sizeof(prop_cb_info));
/* Create a property list from the class */
lid1 = H5Pcreate_list(cid1);
@@ -1091,6 +1125,25 @@ test_genprop_list_callback(void)
printf("Property #2 value doesn't match!, line=%d\n",__LINE__);
} /* end if */
+ /* Copy first list */
+ lid2 = H5Pcopy(lid1);
+ CHECK_I(lid2, "H5Pcopy");
+
+ /* Verify copy callback information for properties tracked */
+ VERIFY(prop1_cb_info.cop_count, 1, "H5Pcopy");
+ if(HDstrcmp(prop1_cb_info.cop_name,PROP1_NAME)!=0) {
+ num_errs++;
+ printf("Property #1 name doesn't match!, line=%d\n",__LINE__);
+ } /* end if */
+ if(HDmemcmp(prop1_cb_info.cop_value,&prop1_new_value,PROP1_SIZE)!=0) {
+ num_errs++;
+ printf("Property #1 value doesn't match!, line=%d\n",__LINE__);
+ } /* end if */
+
+ /* Verify that the class creation callback occurred */
+ VERIFY(cop_cb_struct.count, 1, "H5Pcopy");
+ VERIFY(cop_cb_struct.id, lid2, "H5Pcopy");
+
/* Close first list */
ret = H5Pclose_list(lid1);
CHECK_I(ret, "H5Pclose_list");
@@ -1113,6 +1166,8 @@ test_genprop_list_callback(void)
HDfree(prop1_cb_info.get_value);
HDfree(prop1_cb_info.set_name);
HDfree(prop1_cb_info.set_value);
+ HDfree(prop1_cb_info.cop_name);
+ HDfree(prop1_cb_info.cop_value);
HDfree(prop1_cb_info.cls_name);
HDfree(prop1_cb_info.cls_value);
HDfree(prop2_cb_info.del_name);