summaryrefslogtreecommitdiffstats
path: root/hl
diff options
context:
space:
mode:
Diffstat (limited to 'hl')
-rw-r--r--hl/src/H5LT.c3
-rw-r--r--hl/src/H5PT.c3
-rw-r--r--hl/test/test_dset_opt.c2
-rw-r--r--hl/test/test_lite.c30
-rw-r--r--hl/test/test_packet.c103
-rw-r--r--hl/test/test_table.c38
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}}
};
/*-------------------------------------------------------------------------