summaryrefslogtreecommitdiffstats
path: root/hl/test/test_ds.c
diff options
context:
space:
mode:
Diffstat (limited to 'hl/test/test_ds.c')
-rw-r--r--hl/test/test_ds.c164
1 files changed, 163 insertions, 1 deletions
diff --git a/hl/test/test_ds.c b/hl/test/test_ds.c
index 83ab7f7..c6d9b34 100644
--- a/hl/test/test_ds.c
+++ b/hl/test/test_ds.c
@@ -17,6 +17,8 @@
#include "H5LT.h"
#include <stdlib.h>
#include <string.h>
+#include "H5IM.h"
+
/* operator functions */
static herr_t verifiy_scale(hid_t dset, unsigned dim, hid_t scale, void *visitor_data);
@@ -1630,6 +1632,7 @@ static int test_errors(void)
hid_t gid; /* group ID */
hid_t sid; /* space ID */
hid_t sidds; /* space ID */
+ hsize_t pal_dims[] = {9,3};
printf("Testing error conditions\n");
@@ -1720,6 +1723,118 @@ static int test_errors(void)
goto out;
+/*-------------------------------------------------------------------------
+ * try to attach a scale that has scales
+ *-------------------------------------------------------------------------
+ */
+
+ TESTING2("attach a scale that has scales");
+
+ /* create the data space for the scale */
+ if ((sidds=H5Screate_simple(rankds,s1_dim,NULL))<0)
+ goto out;
+
+ /* create a dataset "ds_b" for the scale */
+ if ((dsid=H5Dcreate(fid,"ds_b",H5T_NATIVE_INT,sidds,H5P_DEFAULT))<0)
+ goto out;
+
+ /* open the previous written "ds_a" */
+ if ((did = H5Dopen(fid,"ds_a"))<0)
+ goto out;
+
+ /* attach "ds_b" to "ds_a", valid */
+ if(H5DSattach_scale(did,dsid,0)<0)
+ goto out;
+
+ /* close */
+ if (H5Dclose(dsid)<0)
+ goto out;
+ if (H5Dclose(did)<0)
+ goto out;
+ if (H5Sclose(sidds)<0)
+ goto out;
+
+ /* open the previous written "dset_a" */
+ if ((did = H5Dopen(fid,"dset_a"))<0)
+ goto out;
+
+ /* open the previous written "ds_a" */
+ if ((dsid = H5Dopen(fid,"ds_a"))<0)
+ goto out;
+
+ /* try to attach "ds_a" to "dset_a", not valid */
+ if(H5DSattach_scale(did,dsid,0)==SUCCESS)
+ goto out;
+
+ /* close */
+ if (H5Dclose(dsid)<0)
+ goto out;
+ if (H5Dclose(did)<0)
+ goto out;
+
+ PASSED();
+
+/*-------------------------------------------------------------------------
+ * try to attach a dataset that is a scale
+ *-------------------------------------------------------------------------
+ */
+
+ TESTING2("attach to a dataset that is a scale");
+
+ /* open the previous written "ds_b", that is a scale */
+ if ((dsid = H5Dopen(fid,"ds_b"))<0)
+ goto out;
+
+ /* open the previous written "ds_a" */
+ if ((did = H5Dopen(fid,"ds_a"))<0)
+ goto out;
+
+ /* try to attach "ds_a" to "ds_b", not valid */
+ if(H5DSattach_scale(dsid,did,0)==SUCCESS)
+ goto out;
+
+ /* close */
+ if (H5Dclose(dsid)<0)
+ goto out;
+ if (H5Dclose(did)<0)
+ goto out;
+
+ PASSED();
+
+/*-------------------------------------------------------------------------
+ * try to attach a scale to an image, pallete or table
+ *-------------------------------------------------------------------------
+ */
+
+ TESTING2("attach to a dataset that is a reserved class dataset");
+
+ /* make an image */
+ if (H5IMmake_image_8bit(fid,"image",100,50,NULL)<0)
+ goto out;
+
+ /* make a palette */
+ if (H5IMmake_palette(fid,"pallete",pal_dims,NULL)<0)
+ goto out;
+
+ /* open the previous written "ds_b" */
+ if ((dsid = H5Dopen(fid,"ds_b"))<0)
+ goto out;
+
+ /* open the image dataset */
+ if ((did = H5Dopen(fid,"image"))<0)
+ goto out;
+
+ /* try to attach "ds_a" to the image, not valid */
+ if(H5DSattach_scale(did,dsid,0)==SUCCESS)
+ goto out;
+
+ /* close */
+ if (H5Dclose(dsid)<0)
+ goto out;
+ if (H5Dclose(did)<0)
+ goto out;
+
+ PASSED();
/* close */
if (H5Fclose(fid)<0)
@@ -1755,7 +1870,6 @@ static int test_rank(void)
hid_t did; /* dataset ID */
hid_t dsid; /* scale ID */
int rank = 3; /* rank of data dataset */
- int rankds = 2; /* rank of DS dataset */
hsize_t dims[3] = {DIM1_SIZE,DIM2_SIZE,DIM3_SIZE}; /* size of data dataset */
char name[30]; /* dataset name buffer */
char names[30]; /* dataset scale name buffer */
@@ -1886,6 +2000,54 @@ static int test_rank(void)
/*-------------------------------------------------------------------------
+ * create a dataset and attach only to 1 dimension
+ *-------------------------------------------------------------------------
+ */
+
+ TESTING2("attach only to 1 dimension");
+
+ /* make a dataset */
+ if (H5LTmake_dataset_int(fid,"dset_b",rank,dims,NULL)<0)
+ goto out;
+
+ if ((did = H5Dopen(fid,"dset_b"))<0)
+ goto out;
+
+ /* attach a DS to dimension 1 */
+ sprintf(name,"ds_a_%d",1);
+ if((dsid = H5Dopen(fid,name))<0)
+ goto out;
+ if(H5DSattach_scale(did,dsid,DIM1)<0)
+ goto out;
+ if (H5DSis_attached(did,dsid,DIM1)<=0)
+ goto out;
+
+
+ /* try to detach all dimensions. for dimensions 0 and 2, it is an error */
+ for (i=0; i<rank; i++)
+ {
+ if ( i==1 )
+ {
+ if(H5DSdetach_scale(did,dsid,i)<0)
+ goto out;
+ }
+ else
+ {
+ if(H5DSdetach_scale(did,dsid,i)!=FAIL)
+ goto out;
+ }
+ }
+
+ if (H5Dclose(dsid)<0)
+ goto out;
+ if (H5Dclose(did)<0)
+ goto out;
+
+ PASSED();
+
+
+
+/*-------------------------------------------------------------------------
* close
*-------------------------------------------------------------------------
*/