diff options
Diffstat (limited to 'hl')
-rw-r--r-- | hl/src/H5LT.c | 3 | ||||
-rw-r--r-- | hl/src/H5PT.c | 3 | ||||
-rw-r--r-- | hl/test/test_dset_opt.c | 2 | ||||
-rw-r--r-- | hl/test/test_lite.c | 30 | ||||
-rw-r--r-- | hl/test/test_packet.c | 103 | ||||
-rw-r--r-- | hl/test/test_table.c | 38 |
6 files changed, 150 insertions, 29 deletions
diff --git a/hl/src/H5LT.c b/hl/src/H5LT.c index ed725a3..9d6123b 100644 --- a/hl/src/H5LT.c +++ b/hl/src/H5LT.c @@ -1981,7 +1981,8 @@ find_attr(hid_t loc_id, const char *name, const H5A_info_t *ainfo, * cause the iterator to immediately return that positive value, * indicating short-circuit success */ - if(HDstrncmp(name, (char *)op_data, HDstrlen((char *)op_data)) == 0) + + if(HDstrncmp(name, (char *)op_data, MAX(HDstrlen((char *)op_data),HDstrlen(name))) == 0) ret = H5_ITER_STOP; return ret; diff --git a/hl/src/H5PT.c b/hl/src/H5PT.c index 7a0bc20..6ed1ac0 100644 --- a/hl/src/H5PT.c +++ b/hl/src/H5PT.c @@ -130,6 +130,9 @@ hid_t H5PTcreate_fl ( hid_t loc_id, if((table->type_id = H5Tcopy(dtype_id)) < 0) goto out; + if((table->type_id = H5Tget_native_type(table->type_id, H5T_DIR_DEFAULT)) < 0) + goto out; + H5PT_create_index(table); table->size = 0; diff --git a/hl/test/test_dset_opt.c b/hl/test/test_dset_opt.c index bddd162..b0800a0 100644 --- a/hl/test/test_dset_opt.c +++ b/hl/test/test_dset_opt.c @@ -41,7 +41,7 @@ #define CHUNK_NX 4 #define CHUNK_NY 4 -#define DEFLATE_SIZE_ADJUST(s) (ceil(((double)(s))*1.001)+12) +#define DEFLATE_SIZE_ADJUST(s) (ceil(((double)(s))*1.001F)+12) /* Temporary filter IDs used for testing */ #define H5Z_FILTER_BOGUS1 305 diff --git a/hl/test/test_lite.c b/hl/test/test_lite.c index d61d6cf..19d3759 100644 --- a/hl/test/test_lite.c +++ b/hl/test/test_lite.c @@ -36,10 +36,12 @@ #define DIM 6 +#define ATTR_NAME_SUB "att" #define ATTR1_NAME "attr string" #define ATTR2_NAME "attr char" #define ATTR3_NAME "attr short" #define ATTR4_NAME "attr int" +#define ATTR_NAME_EXT "att int ext" #define ATTR5_NAME "attr long" #define ATTR6_NAME "attr uchar" #define ATTR7_NAME "attr ushort" @@ -646,6 +648,14 @@ static herr_t make_attributes( hid_t loc_id, const char* obj_name ) if ( H5LTset_attribute_int( loc_id, obj_name, ATTR4_NAME, attr_int_in, (size_t)5 ) < 0 ) return -1; + /* Set the attribute which is a substring of an existing attribute */ + if ( H5LTset_attribute_int( loc_id, obj_name, ATTR_NAME_SUB, attr_int_in, (size_t)5 ) < 0 ) + return -1; + + /* Set the attribute which is an extension of an existing attribute */ + if ( H5LTset_attribute_int( loc_id, obj_name, ATTR_NAME_EXT, attr_int_in, (size_t)5 ) < 0 ) + return -1; + PASSED(); /*------------------------------------------------------------------------- @@ -666,6 +676,26 @@ static herr_t make_attributes( hid_t loc_id, const char* obj_name ) } } + if ( H5LTget_attribute_int( loc_id, obj_name, ATTR_NAME_SUB, attr_int_out ) < 0 ) + return -1; + + for (i = 0; i < 5; i++) + { + if ( attr_int_in[i] != attr_int_out[i] ) { + return -1; + } + } + + if ( H5LTget_attribute_int( loc_id, obj_name, ATTR_NAME_EXT, attr_int_out ) < 0 ) + return -1; + + for (i = 0; i < 5; i++) + { + if ( attr_int_in[i] != attr_int_out[i] ) { + return -1; + } + } + /* Get the attribute */ if ( H5LTget_attribute( loc_id, obj_name, ATTR4_NAME, H5T_NATIVE_INT, attr_int_out ) < 0 ) return -1; diff --git a/hl/test/test_packet.c b/hl/test/test_packet.c index 9d3074d..62e9ae3 100644 --- a/hl/test/test_packet.c +++ b/hl/test/test_packet.c @@ -54,14 +54,14 @@ typedef struct particle_t *------------------------------------------------------------------------- */ static particle_t testPart[NRECORDS] = { - {"zero", 0,0, 0.0f, 0.0}, - {"one", 10,10, 1.0f, 10.0}, - {"two", 20,20, 2.0f, 20.0}, - {"three",30,30, 3.0f, 30.0}, - {"four", 40,40, 4.0f, 40.0}, - {"five", 50,50, 5.0f, 50.0}, - {"six", 60,60, 6.0f, 60.0}, - {"seven",70,70, 7.0f, 70.0} + {"zero", 0,0, 0.0f, 0.0f}, + {"one", 10,10, 1.0f, 10.0f}, + {"two", 20,20, 2.0f, 20.0f}, + {"three",30,30, 3.0f, 30.0f}, + {"four", 40,40, 4.0f, 40.0f}, + {"five", 50,50, 5.0f, 50.0f}, + {"six", 60,60, 6.0f, 60.0f}, + {"seven",70,70, 7.0f, 70.0f} }; /*------------------------------------------------------------------------- @@ -895,6 +895,92 @@ error: return -1; } +/*------------------------------------------------------------------------- + * test_rw_non-native_dt + * + * test reading and writing packet table using datatypes that are not + * native. + * + *------------------------------------------------------------------------- + */ +static int test_rw_nonnative_dt(hid_t fid) +{ + hid_t ptable; /* Packet table identifier */ + + herr_t err; /* Function return status */ + hsize_t count; /* Number of records in the table */ + + int x; /* Loop variable */ + + /* Buffers to hold data */ + int writeBuffer[5]; + int readBuffer[5]; + + TESTING("reading/writing non-native packet table"); + + /* Initialize buffers */ + for(x=0; x<5; x++) { + writeBuffer[x]=x; + readBuffer[x] = -1; + } + + /* Create a fixed-length packet table within the file */ + /* This table's "packets" will be simple integers and it will use no compression */ + if(H5Tget_order(H5T_NATIVE_INT) == H5T_ORDER_LE) { + ptable = H5PTcreate_fl(fid, "Packet Test Dataset, Non-native", H5T_STD_I32BE, (hsize_t)100, -1); + } else { + ptable = H5PTcreate_fl(fid, "Packet Test Dataset, Non-native", H5T_STD_I32LE, (hsize_t)100, -1); + } + if(ptable == H5I_INVALID_HID) + goto out; + + /* Write one packet to the packet table */ + if( (err = H5PTappend(ptable, (hsize_t)1, &(writeBuffer[0]))) < 0 ) + goto out; + + /* Write several packets to the packet table */ + if( (err = H5PTappend(ptable, (hsize_t)4, &(writeBuffer[1]))) < 0) + goto out; + + if( (err = H5PTclose(ptable)) < 0) + goto out; + + /* Open the Packet table */ + if( (ptable = H5PTopen(fid, "Packet Test Dataset, Non-native")) < 0) + goto out; + + /* Get the number of packets in the packet table. This should be five. */ + if( (err = H5PTget_num_packets(ptable, &count)) < 0) + goto out; + + if( (int)count != 5 ) + goto out; + + /* Initialize packet table's "current record" */ + if( (err = H5PTcreate_index(ptable)) < 0) + goto out; + + /* Iterate through packets, read each one back */ + for(x=0; x<5; x++) { + if( (err = H5PTget_next(ptable, (hsize_t)1, &(readBuffer[x]))) < 0) + goto out; + if( x != readBuffer[x]) + goto out; + } + + /* Close the packet table */ + if( (err = H5PTclose(ptable)) < 0) + goto out; + + PASSED(); + return 0; + + out: + H5_FAILED(); + if( H5PTis_valid(ptable) < 0) + H5PTclose(ptable); + return -1; +} /*------------------------------------------------------------------------- * test_error @@ -1035,6 +1121,7 @@ static int test_packet_table(hid_t fid) test_read(fid); test_get_next(fid); test_big_table(fid); + test_rw_nonnative_dt(fid); #ifdef VLPT_REMOVED test_varlen(fid); #endif /* VLPT_REMOVED */ diff --git a/hl/test/test_table.c b/hl/test/test_table.c index c312296..8af6d28 100644 --- a/hl/test/test_table.c +++ b/hl/test/test_table.c @@ -218,7 +218,7 @@ static int test_table(hid_t fid, int do_write) hsize_t chunk_size=10; int compress=0; int *fill=NULL; - particle_t fill1[1] = { {"no data",-1, -99.0f, -99.0, -1} }; + particle_t fill1[1] = { {"no data",-1, -99.0f, -99.0f, -1} }; int fill1_new[1] = { -100 }; hsize_t position; char tname[20]; @@ -246,18 +246,18 @@ static int test_table(hid_t fid, int do_write) particle2_t rbuf2[NRECORDS]; particle3_t rbuf3[NRECORDS]; particle_t rbufc[NRECORDS*2]; - particle_t abuf[2]={{"eight",80,8.0f,80.0,80},{"nine",90,9.0f,90.0,90}}; - particle_t ibuf[2]={{"zero", 0, 0.0f, 0.0, 0},{"zero", 0, 0.0f, 0.0, 0}}; + particle_t abuf[2]={{"eight",80,8.0f,80.0f,80},{"nine",90,9.0f,90.0f,90}}; + particle_t ibuf[2]={{"zero", 0, 0.0f, 0.0f, 0},{"zero", 0, 0.0f, 0.0f, 0}}; particle_t wbufd[NRECORDS]; particle_t wbuf[NRECORDS] = { - {"zero", 0, 0.0f, 0.0, 0,}, - {"one", 10, 1.0f, 10.0, 10}, - {"two", 20, 2.0f, 20.0, 20}, - {"three",30, 3.0f, 30.0, 30}, - {"four", 40, 4.0f, 40.0, 40}, - {"five", 50, 5.0f, 50.0, 50}, - {"six", 60, 6.0f, 60.0, 60}, - {"seven",70, 7.0f, 70.0, 70} + {"zero", 0, 0.0f, 0.0f, 0,}, + {"one", 10, 1.0f, 10.0f, 10}, + {"two", 20, 2.0f, 20.0f, 20}, + {"three",30, 3.0f, 30.0f, 30}, + {"four", 40, 4.0f, 40.0f, 40}, + {"five", 50, 5.0f, 50.0f, 50}, + {"six", 60, 6.0f, 60.0f, 60}, + {"seven",70, 7.0f, 70.0f, 70} }; /* buffers for the field "Pressure" and "New_field" */ float pressure_in [NRECORDS] = { 0.0f,1.0f,2.0f,3.0f,4.0f,5.0f,6.0f,7.0f }; @@ -390,14 +390,14 @@ static int test_table(hid_t fid, int do_write) /* Define an array of Particles */ particle4_t p_data[NRECORDS] = { - {12112, 1.4, 2.5, {1,2,3},{4,5,6}, {99,100}}, - {12113, 1.4, 2.5, {1,2,3},{4,5,6}, {99,100}}, - {12114, 1.4, 2.5, {1,2,3},{4,5,6}, {99,100}}, - {12115, 1.4, 2.5, {1,2,3},{4,5,6}, {99,100}}, - {12116, 1.4, 2.5, {1,2,3},{4,5,6}, {99,100}}, - {12117, 1.4, 2.5, {1,2,3},{4,5,6}, {99,100}}, - {12118, 1.4, 2.5, {1,2,3},{4,5,6}, {99,100}}, - {12119, 1.4, 2.5, {1,2,3},{4,5,6}, {99,100}} + {12112, 1.4f, 2.5f, {1,2,3},{4,5,6}, {99,100}}, + {12113, 1.4f, 2.5f, {1,2,3},{4,5,6}, {99,100}}, + {12114, 1.4f, 2.5f, {1,2,3},{4,5,6}, {99,100}}, + {12115, 1.4f, 2.5f, {1,2,3},{4,5,6}, {99,100}}, + {12116, 1.4f, 2.5f, {1,2,3},{4,5,6}, {99,100}}, + {12117, 1.4f, 2.5f, {1,2,3},{4,5,6}, {99,100}}, + {12118, 1.4f, 2.5f, {1,2,3},{4,5,6}, {99,100}}, + {12119, 1.4f, 2.5f, {1,2,3},{4,5,6}, {99,100}} }; /*------------------------------------------------------------------------- |