summaryrefslogtreecommitdiffstats
path: root/tools/h5diff/h5diffgentest.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/h5diff/h5diffgentest.c')
-rw-r--r--tools/h5diff/h5diffgentest.c59
1 files changed, 45 insertions, 14 deletions
diff --git a/tools/h5diff/h5diffgentest.c b/tools/h5diff/h5diffgentest.c
index 206dca0..7ea9365 100644
--- a/tools/h5diff/h5diffgentest.c
+++ b/tools/h5diff/h5diffgentest.c
@@ -4700,9 +4700,14 @@ static void test_non_comparables (const char * fname, int make_diffs)
hid_t sid1=0;
hid_t tid_dset1=0;
hid_t tid_attr1=0;
- hsize_t dims1[1] = {DIM_ARRY};
+ hsize_t dims1_1[1] = {DIM_ARRY};
+ hsize_t dims1_2[1] = {DIM_ARRY+1};
+ hsize_t dims2[2] = {DIM_ARRY, 1};
int data1[DIM_ARRY] = {0,0,0};
int data2[DIM_ARRY] = {1,1,1};
+ int data3[DIM_ARRY+1] = {1,1,1,1};
+ int data1_dim2[DIM_ARRY][1] = {0,0,0};
+ int rank_attr;
char data1_str[DIM_ARRY][STR_SIZE]= {"ab","cd","ef"};
herr_t status = SUCCEED;
int i;
@@ -4712,6 +4717,9 @@ static void test_non_comparables (const char * fname, int make_diffs)
void *attr_data_ptr1=NULL;
void *attr_data_ptr2=NULL;
void *attr_data_ptr3=NULL;
+ void *attr_data_ptr4=NULL;
+ void *attr2_dim_ptr=NULL;
+ void *attr3_dim_ptr=NULL;
/* init */
tid_dset1=H5Tcopy(H5T_NATIVE_INT);
@@ -4721,6 +4729,10 @@ static void test_non_comparables (const char * fname, int make_diffs)
tid_attr1=H5Tcopy(H5T_NATIVE_INT);
attr_data_ptr1=(int*)&data1;
attr_data_ptr3=(int*)&data1;
+ attr_data_ptr4=(int*)&data1;
+ attr2_dim_ptr=(hsize_t*)&dims1_1;
+ attr3_dim_ptr=(hsize_t*)&dims1_1;
+ rank_attr=1;
if (make_diffs)
{
@@ -4736,12 +4748,22 @@ static void test_non_comparables (const char * fname, int make_diffs)
* group2
*/
dset_data_ptr3=(int*)&data2;
- /* attr1 */
+ /* dset1/attr1 */
tid_attr1=H5Tcopy(H5T_C_S1);
H5Tset_size(tid_attr1, (size_t)STR_SIZE);
attr_data_ptr2=(char*)&data1_str;
- /* attr2 */
- attr_data_ptr3=(int*)&data2;
+
+ /* dset1/attr2 */
+ attr2_dim_ptr=(hsize_t*)&dims1_2;
+
+ /* dset1/attr3 */
+ attr_data_ptr3=(int*)&data1_dim2;
+ attr3_dim_ptr=(hsize_t*)&dims2;
+ rank_attr=2;
+
+ /* dset1/attr4 */
+ attr_data_ptr4=(int*)&data2;
+
}
@@ -4778,7 +4800,7 @@ static void test_non_comparables (const char * fname, int make_diffs)
/*-----------------------------------------------------------------------
* Datasets in /g1
*------------------------------------------------------------------------*/
- if((sid1 = H5Screate_simple(1, dims1, NULL)) < 0)
+ if((sid1 = H5Screate_simple(1, dims1_1, NULL)) < 0)
goto out;
/* dset1 */
@@ -4795,10 +4817,10 @@ static void test_non_comparables (const char * fname, int make_diffs)
status = FAIL;
goto out;
}
- write_attr(did1,1,dims1,"attr", H5T_NATIVE_INT, attr_data_ptr1);
+ write_attr(did1,1,dims1_1,"attr", H5T_NATIVE_INT, attr_data_ptr1);
/* dset2 */
- status = write_dset(gid1, 1, dims1,"dset2", H5T_NATIVE_INT, dset_data_ptr2);
+ status = write_dset(gid1, 1, dims1_1,"dset2", H5T_NATIVE_INT, dset_data_ptr2);
if (status == FAIL)
{
fprintf(stderr, "Error: %s> write_dset failed\n", fname);
@@ -4808,7 +4830,8 @@ static void test_non_comparables (const char * fname, int make_diffs)
/*-----------------------------------------------------------------------
* Datasets in /g2
*------------------------------------------------------------------------*/
- /* dset1 */
+ /* ---------
+ * dset1 */
if((did2 = H5Dcreate2(gid2, "dset1", H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
{
fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", "dset1");
@@ -4822,14 +4845,22 @@ static void test_non_comparables (const char * fname, int make_diffs)
status = FAIL;
goto out;
}
- /* attr1 */
- write_attr(did2,1,dims1,"attr1", tid_attr1, attr_data_ptr2);
+ /* attr1 - non-compatible : different type */
+ write_attr(did2,1,dims1_1,"attr1", tid_attr1, attr_data_ptr2);
- /* attr2 */
- write_attr(did2,1,dims1,"attr2", H5T_NATIVE_INT, attr_data_ptr3);
- /* dset2 */
- status = write_dset(gid2, 1, dims1,"dset2", H5T_NATIVE_INT, dset_data_ptr3);
+ /* attr2 - non-compatible : same rank, different dimention */
+ write_attr(did2,1, attr2_dim_ptr,"attr2", H5T_NATIVE_INT, data3);
+
+ /* attr3 - non-compatible : different rank */
+ write_attr(did2, rank_attr,attr3_dim_ptr,"attr3", H5T_NATIVE_INT, attr_data_ptr3);
+
+ /* attr4 - compatible : different data values */
+ write_attr(did2,1,dims1_1,"attr4", H5T_NATIVE_INT, attr_data_ptr4);
+
+ /*----------
+ * dset2 */
+ status = write_dset(gid2, 1, dims1_1,"dset2", H5T_NATIVE_INT, dset_data_ptr3);
if (status == FAIL)
{
fprintf(stderr, "Error: %s> write_dset failed\n", fname);