From c7782121eedc332660a85ce1a4fa97ed3289cf49 Mon Sep 17 00:00:00 2001 From: Raymond Lu Date: Mon, 24 Jan 2011 15:39:17 -0500 Subject: [svn-r19983] I added a test case for dataset with scale-offset filter into cross_read.c and updated the data files from BE, LE, and VMS. This is the test for bug 2131 that dataset of FLOAT with scale-offset filter can't be read across BE and LE. Tested on jam and linew. --- test/be_data.h5 | Bin 2288 -> 9424 bytes test/cross_read.c | 215 ++++++++++++++++++++++++++++++++++++++++++---- test/gen_cross.c | 251 ++++++++++++++++++++++++++++++++++++++++++++++++------ test/le_data.h5 | Bin 2288 -> 9424 bytes test/vms_data.h5 | Bin 2288 -> 9424 bytes 5 files changed, 426 insertions(+), 40 deletions(-) diff --git a/test/be_data.h5 b/test/be_data.h5 index f906545..ebabae5 100644 Binary files a/test/be_data.h5 and b/test/be_data.h5 differ diff --git a/test/cross_read.c b/test/cross_read.c index 3c64f26..92802af 100755 --- a/test/cross_read.c +++ b/test/cross_read.c @@ -17,8 +17,8 @@ * Programmer: Raymond Lu * Thursday, March 23, 2006 * - * Purpose: Check if floating-point data created on OpenVMS (VAX type), Solaris, - * and Linux machines can be read on the machine running this test. + * Purpose: Check if floating-point data created on OpenVMS, big-endian, and + * little-endian machines can be read on the machine running this test. */ #include "h5test.h" @@ -31,11 +31,28 @@ const char *FILENAME[] = { NULL }; -#define DATASETNAME "Array" -#define NX 5 /* output buffer dimensions */ -#define NY 6 -#define RANK 2 +#define DATASETNAME "Array" +#define DATASETNAME2 "Scale_offset_float_data" +#define DATASETNAME3 "Scale_offset_int_data" +#define NX 6 +#define NY 6 + +/*------------------------------------------------------------------------- + * Function: read_data + * + * Purpose: Read data from a data file. + * + * Return: Success: 0 + * Failure: -1 + * + * Programmer: Raymond Lu + * 21 January 2011 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ static int read_data(char *fname) { char pathname[1024]; @@ -43,10 +60,14 @@ static int read_data(char *fname) hid_t file, dataset; /* handles */ hid_t datatype; hid_t dt; - double data_in[NX][NY]; /* input buffer */ - double data_out[NX][NY]; /* output buffer */ + float data_in[NX][NY]; /* input buffer */ + float data_out[NX][NY]; /* output buffer */ + int int_data_in[NX][NY]; /* input buffer */ + int int_data_out[NX][NY]; /* output buffer */ int i, j; unsigned nerrors = 0; + const char *not_supported= " Scaleoffset filter is not enabled."; + const char *not_fixed= " Scaleoffset filter bug (2131) is not fixed yet."; pathname[0] = '\0'; /* Generate correct name for test file by prepending the source path */ @@ -57,6 +78,20 @@ static int read_data(char *fname) strcat(pathname, fname); /* + * Open the file. + */ + if((file = H5Fopen(pathname, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) + TEST_ERROR; + + TESTING(" regular dataset"); + + /* + * Open the regular dataset. + */ + if((dataset = H5Dopen2(file, DATASETNAME, H5P_DEFAULT)) < 0) + TEST_ERROR; + + /* * Data and output buffer initialization. */ for (j = 0; j < NX; j++) { @@ -71,17 +106,74 @@ static int read_data(char *fname) * 2 3 4 5 6 7 * 3 4 5 6 7 8 * 4 5 6 7 8 9 + * 5 6 7 8 9 10 + */ + + /* + * Get datatype and dataspace handles and then query + * dataset class, order, size, rank and dimensions. */ + if((dt = H5Dget_type(dataset)) < 0) /* datatype handle */ + TEST_ERROR; + if((datatype = H5Tget_native_type(dt, H5T_DIR_DEFAULT)) < 0) + TEST_ERROR; /* - * Open the file and the dataset. + * Read data from hyperslab in the file into the hyperslab in + * memory and display. */ - if((file = H5Fopen(pathname, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) + if(H5Dread(dataset, datatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, data_out) < 0) TEST_ERROR; - if((dataset = H5Dopen2(file, DATASETNAME, H5P_DEFAULT)) < 0) + + /* Check results */ + for (j=0; j