mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-18 15:15:56 +08:00
[svn-r6171] Purpose:
Bug fix Description: Much of the VL-string testing code was recently disabled accidentally. Solution: Re-enable it and add test for writing/reading large string attributes. Platforms tested: FreeBSD 4.7 (sleipnir) - small enough to not need triple-check
This commit is contained in:
parent
5f3fdf4c40
commit
7662d643fa
@ -45,6 +45,7 @@
|
||||
|
||||
/* String for testing attributes */
|
||||
static const char *string_att = "This is the string for the attribute";
|
||||
static char *string_att_write=NULL;
|
||||
|
||||
void *test_vlstr_alloc_custom(size_t size, void *info);
|
||||
void test_vlstr_free_custom(void *mem, void *info);
|
||||
@ -166,7 +167,7 @@ test_vlstrings_basic(void)
|
||||
CHECK(dataset, FAIL, "H5Dcreate");
|
||||
|
||||
wdata2 = (char*)HDcalloc(65534, sizeof(char));
|
||||
memset(wdata2, 65, 65534);
|
||||
HDmemset(wdata2, 'A', 65533);
|
||||
|
||||
ret=H5Dwrite(dataset2,tid1,H5S_ALL,H5S_ALL,H5P_DEFAULT,&wdata2);
|
||||
CHECK(ret, FAIL, "H5Dwrite");
|
||||
@ -260,10 +261,7 @@ static void test_vlstring_type(void)
|
||||
/* Output message about test being performed */
|
||||
MESSAGE(5, ("Testing VL String type\n"));
|
||||
|
||||
/* Create file */
|
||||
/*fid = H5Fcreate(DATAFILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
||||
CHECK(fid, FAIL, "H5Fcreate");*/
|
||||
|
||||
/* Open file */
|
||||
fid = H5Fopen(DATAFILE, H5F_ACC_RDWR, H5P_DEFAULT);
|
||||
CHECK(fid, FAIL, "H5Fopen");
|
||||
|
||||
@ -344,10 +342,9 @@ static void test_write_vl_string_attribute(void)
|
||||
hid_t type;
|
||||
herr_t ret;
|
||||
char *string_att_check;
|
||||
char *string_att_write;
|
||||
|
||||
/*file = H5Fopen(DATAFILE, H5F_ACC_RDWR, H5P_DEFAULT);*/
|
||||
file = H5Fcreate(DATAFILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
||||
/* Open the file */
|
||||
file = H5Fopen(DATAFILE, H5F_ACC_RDWR, H5P_DEFAULT);
|
||||
CHECK(file, FAIL, "H5Fopen");
|
||||
|
||||
/* Create a datatype to refer to. */
|
||||
@ -363,12 +360,32 @@ static void test_write_vl_string_attribute(void)
|
||||
dataspace = H5Screate(H5S_SCALAR);
|
||||
CHECK(dataspace, FAIL, "H5Screate");
|
||||
|
||||
/* Test creating a "normal" sized string attribute */
|
||||
att = H5Acreate(root, "test_scalar", type, dataspace, H5P_DEFAULT);
|
||||
CHECK(att, FAIL, "H5Acreate");
|
||||
|
||||
ret = H5Awrite(att, type, &string_att);
|
||||
CHECK(ret, FAIL, "H5Awrite");
|
||||
|
||||
ret = H5Aread(att, type, &string_att_check);
|
||||
CHECK(ret, FAIL, "H5Aread");
|
||||
|
||||
if(HDstrcmp(string_att_check,string_att)!=0) {
|
||||
num_errs++;
|
||||
printf("VL string attributes don't match!, string_att=%s, string_att_check=%s\n",string_att,string_att_check);
|
||||
} /* end if */
|
||||
|
||||
HDfree(string_att_check);
|
||||
|
||||
ret = H5Aclose(att);
|
||||
CHECK(ret, FAIL, "HAclose");
|
||||
|
||||
/* Test creating a "large" sized string attribute */
|
||||
att = H5Acreate(root, "test_scalar_large", type, dataspace, H5P_DEFAULT);
|
||||
CHECK(att, FAIL, "H5Acreate");
|
||||
|
||||
string_att_write = (char*)HDcalloc(8192, sizeof(char));
|
||||
memset(string_att_write, 65, 8192);
|
||||
printf("string_att_write=%s\n", string_att_write);
|
||||
HDmemset(string_att_write, 'A', 8191);
|
||||
|
||||
ret = H5Awrite(att, type, &string_att_write);
|
||||
CHECK(ret, FAIL, "H5Awrite");
|
||||
@ -378,11 +395,12 @@ printf("string_att_write=%s\n", string_att_write);
|
||||
|
||||
if(HDstrcmp(string_att_check,string_att_write)!=0) {
|
||||
num_errs++;
|
||||
printf("VL string attributes don't match!, string_att=%s, string_att_check=%s\n",string_att_write,string_att_check);
|
||||
printf("VL string attributes don't match!, string_att_write=%s, string_att_check=%s\n",string_att_write,string_att_check);
|
||||
} /* end if */
|
||||
|
||||
free(string_att_check);
|
||||
free(string_att_write);
|
||||
HDfree(string_att_check);
|
||||
/* The attribute string written is freed below, in the test_read_vl_string_attribute() test */
|
||||
/* HDfree(string_att_write); */
|
||||
|
||||
ret = H5Aclose(att);
|
||||
CHECK(ret, FAIL, "HAclose");
|
||||
@ -415,6 +433,7 @@ static void test_read_vl_string_attribute(void)
|
||||
herr_t ret;
|
||||
char *string_att_check;
|
||||
|
||||
/* Open file */
|
||||
file = H5Fopen(DATAFILE, H5F_ACC_RDONLY, H5P_DEFAULT);
|
||||
CHECK(file, FAIL, "H5Fopen");
|
||||
|
||||
@ -428,6 +447,7 @@ static void test_read_vl_string_attribute(void)
|
||||
root = H5Gopen(file, "/");
|
||||
CHECK(root, FAIL, "H5Gopen");
|
||||
|
||||
/* Test reading "normal" sized string attribute */
|
||||
att = H5Aopen_name(root, "test_scalar");
|
||||
CHECK(att, FAIL, "H5Aopen_name");
|
||||
|
||||
@ -439,7 +459,25 @@ static void test_read_vl_string_attribute(void)
|
||||
printf("VL string attributes don't match!, string_att=%s, string_att_check=%s\n",string_att,string_att_check);
|
||||
} /* end if */
|
||||
|
||||
free(string_att_check);
|
||||
HDfree(string_att_check);
|
||||
|
||||
ret = H5Aclose(att);
|
||||
CHECK(ret, FAIL, "HAclose");
|
||||
|
||||
/* Test reading "large" sized string attribute */
|
||||
att = H5Aopen_name(root, "test_scalar_large");
|
||||
CHECK(att, FAIL, "H5Aopen_name");
|
||||
|
||||
ret = H5Aread(att, type, &string_att_check);
|
||||
CHECK(ret, FAIL, "H5Aread");
|
||||
|
||||
if(HDstrcmp(string_att_check,string_att_write)!=0) {
|
||||
num_errs++;
|
||||
printf("VL string attributes don't match!, string_att_write=%s, string_att_check=%s\n",string_att_write,string_att_check);
|
||||
} /* end if */
|
||||
|
||||
HDfree(string_att_check);
|
||||
HDfree(string_att_write); /* Free string allocated in test_write_vl_string_attribute */
|
||||
|
||||
ret = H5Aclose(att);
|
||||
CHECK(ret, FAIL, "HAclose");
|
||||
@ -470,11 +508,11 @@ test_vlstrings(void)
|
||||
/* These next tests use the same file */
|
||||
/* Test basic VL string datatype */
|
||||
test_vlstrings_basic();
|
||||
/* test_vlstring_type();
|
||||
*/
|
||||
/*Test using VL strings in attributes */
|
||||
/* test_write_vl_string_attribute();
|
||||
test_read_vl_string_attribute();*/
|
||||
test_vlstring_type();
|
||||
|
||||
/* Test using VL strings in attributes */
|
||||
test_write_vl_string_attribute();
|
||||
test_read_vl_string_attribute();
|
||||
} /* test_vlstrings() */
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user