diff options
Diffstat (limited to 'test/fillval.c')
-rw-r--r-- | test/fillval.c | 411 |
1 files changed, 218 insertions, 193 deletions
diff --git a/test/fillval.c b/test/fillval.c index fd9045f..c9925f9 100644 --- a/test/fillval.c +++ b/test/fillval.c @@ -22,6 +22,8 @@ const char *FILENAME[] = { "fillval_4", "fillval_5", "fillval_6", + "fillval_7", + "fillval_8", NULL }; @@ -226,7 +228,7 @@ test_create(hid_t fapl, const char *base_name, H5D_layout_t layout) hid_t file=-1, space=-1, dcpl=-1, comp_type_id=-1; hid_t dset1=-1, dset2=-1, dset3=-1, dset4=-1, dset5=-1, dset6=-1, /* dset7=-1, */ dset8=-1, dset9=-1; - hsize_t cur_size[5] = {32, 16, 8, 4, 2}; + hsize_t cur_size[5] = {2, 16, 8, 4, 2}; hsize_t ch_size[5] = {1, 1, 1, 4, 2}; short rd_s, fill_s = 0x1234; long rd_l, fill_l = 0x4321; @@ -238,6 +240,8 @@ test_create(hid_t fapl, const char *base_name, H5D_layout_t layout) if (H5D_CHUNKED==layout) { TESTING("chunked dataset creation"); + } else if (H5D_COMPACT==layout) { + TESTING("compact dataset creation"); } else { TESTING("contiguous dataset creation"); } @@ -252,68 +256,74 @@ test_create(hid_t fapl, const char *base_name, H5D_layout_t layout) if ((dcpl=H5Pcreate(H5P_DATASET_CREATE))<0) goto error; if (H5D_CHUNKED==layout) { if (H5Pset_chunk(dcpl, 5, ch_size)<0) goto error; + } else if (H5D_COMPACT==layout) { + if (H5Pset_layout(dcpl, H5D_COMPACT)<0) goto error; } + /* Create a compound datatype */ if((comp_type_id = create_compound_type())<0) goto error; - /* I. Test cases for late space allocation */ - if(H5Pset_space_time(dcpl, H5D_SPACE_ALLOC_LATE) < 0) goto error; - if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; + /* I. Test cases for late space allocation except compact dataset */ - /* 1. Compound datatype test */ - if(H5Pget_fill_value(dcpl, comp_type_id, &fill_ctype)<0) goto error; - fill_ctype.y = 4444; - if(H5Pset_fill_value(dcpl, comp_type_id, &fill_ctype)<0) goto error; - if((dset9 = H5Dcreate(file, "dset9", comp_type_id, space, dcpl))<0) - goto error; + if(H5D_COMPACT!=layout) { + if(H5Pset_space_time(dcpl, H5D_SPACE_ALLOC_LATE) < 0) goto error; + if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; - /* The three datasets test three fill - * conversion paths: small to large, large to small, and no conversion. - * They depend on `short' being smaller than `long'. - */ - /* 2. Small to large fill conversion */ + /* 1. Compound datatype test */ + if(H5Pget_fill_value(dcpl, comp_type_id, &fill_ctype)<0) goto error; + fill_ctype.y = 4444; + if(H5Pset_fill_value(dcpl, comp_type_id, &fill_ctype)<0) goto error; + if((dset9 = H5Dcreate(file, "dset9", comp_type_id, space, dcpl))<0) + goto error; + + /* The three datasets test three fill + * conversion paths: small to large, large to small, and no conversion. + * They depend on `short' being smaller than `long'. + */ + /* 2. Small to large fill conversion */ #ifndef NO_FILLING - if (H5Pset_fill_value(dcpl, H5T_NATIVE_SHORT, &fill_s)<0) goto error; + if (H5Pset_fill_value(dcpl, H5T_NATIVE_SHORT, &fill_s)<0) goto error; #endif - if ((dset1=H5Dcreate(file, "dset1", H5T_NATIVE_LONG, space, dcpl))<0) - goto error; + if ((dset1=H5Dcreate(file, "dset1", H5T_NATIVE_LONG, space, dcpl))<0) + goto error; - /* 3. Large to small fill conversion */ + /* 3. Large to small fill conversion */ #ifndef NO_FILLING - if (H5Pset_fill_value(dcpl, H5T_NATIVE_LONG, &fill_l)<0) goto error; + if (H5Pset_fill_value(dcpl, H5T_NATIVE_LONG, &fill_l)<0) goto error; #endif - if ((dset2=H5Dcreate(file, "dset2", H5T_NATIVE_SHORT, space, dcpl))<0) - goto error; + if ((dset2=H5Dcreate(file, "dset2", H5T_NATIVE_SHORT, space, dcpl))<0) + goto error; - /* 4. No conversion */ + /* 4. No conversion */ #ifndef NO_FILLING - if (H5Pset_fill_value(dcpl, H5T_NATIVE_LONG, &fill_l)<0) goto error; + if (H5Pset_fill_value(dcpl, H5T_NATIVE_LONG, &fill_l)<0) goto error; #endif - if ((dset3=H5Dcreate(file, "dset3", H5T_NATIVE_LONG, space, dcpl))<0) - goto error; - - /* 5. late space allocation and never write fill value */ - if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; - if ((dset4=H5Dcreate(file, "dset4", H5T_NATIVE_LONG, space, dcpl))<0) - goto error; + if ((dset3=H5Dcreate(file, "dset3", H5T_NATIVE_LONG, space, dcpl))<0) + goto error; - /* 6. fill value is undefined while fill write time is H5D_FILL_TIME_ALLOC. - * Supposed to fail. */ - if(H5Pset_fill_value(dcpl, -1, NULL)<0) goto error; - if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; - H5E_BEGIN_TRY { - if(H5Dcreate(file, "dset7", H5T_NATIVE_LONG, space, dcpl)!=FAIL) + /* 5. late space allocation and never write fill value */ + if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; + if ((dset4=H5Dcreate(file, "dset4", H5T_NATIVE_LONG, space, dcpl))<0) goto error; - } H5E_END_TRY; - - - + /* 6. fill value is undefined while fill write time is H5D_FILL_TIME_ALLOC. + * Supposed to fail. */ + if(H5Pset_fill_value(dcpl, -1, NULL)<0) goto error; + if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; + H5E_BEGIN_TRY { + if(H5Dcreate(file, "dset7", H5T_NATIVE_LONG, space, dcpl)!=FAIL) + goto error; + } H5E_END_TRY; + } + /* II. Test early space allocation cases */ + if (H5Pclose(dcpl)<0) goto error; if ((dcpl=H5Pcreate(H5P_DATASET_CREATE))<0) goto error; if (H5D_CHUNKED==layout) { if (H5Pset_chunk(dcpl, 5, ch_size)<0) goto error; + } else if (H5D_COMPACT==layout) { + if (H5Pset_layout(dcpl, H5D_COMPACT)<0) goto error; } if(H5Pset_space_time(dcpl, H5D_SPACE_ALLOC_EARLY) < 0) goto error; @@ -345,16 +355,17 @@ test_create(hid_t fapl, const char *base_name, H5D_layout_t layout) goto error; } H5E_END_TRY; - /* Close everything */ - if (H5Dclose(dset1)<0) goto error; - if (H5Dclose(dset2)<0) goto error; - if (H5Dclose(dset3)<0) goto error; - if (H5Dclose(dset4)<0) goto error; + if(H5D_COMPACT != layout) { + if (H5Dclose(dset1)<0) goto error; + if (H5Dclose(dset2)<0) goto error; + if (H5Dclose(dset3)<0) goto error; + if (H5Dclose(dset4)<0) goto error; + if (H5Dclose(dset9)<0) goto error; + } if (H5Dclose(dset5)<0) goto error; if (H5Dclose(dset6)<0) goto error; if (H5Dclose(dset8)<0) goto error; - if (H5Dclose(dset9)<0) goto error; if (H5Sclose(space)<0) goto error; if (H5Pclose(dcpl)<0) goto error; if (H5Fclose(file)<0) goto error; @@ -363,101 +374,114 @@ test_create(hid_t fapl, const char *base_name, H5D_layout_t layout) if ((file=H5Fopen(filename, H5F_ACC_RDONLY, fapl))<0) goto error; - /* I. Test cases for late space allocation */ - - /* 1. Large to small conversion */ - if ((dset1=H5Dopen(file, "dset1"))<0) goto error; - if ((dcpl=H5Dget_create_plist(dset1))<0) goto error; + /* I. Check cases for late space allocation except compact dataset */ + if(H5D_COMPACT != layout) { + /* 1. Large to small conversion */ + if ((dset1=H5Dopen(file, "dset1"))<0) goto error; + if ((dcpl=H5Dget_create_plist(dset1))<0) goto error; #ifndef NO_FILLING - if (H5Pget_fill_value(dcpl, H5T_NATIVE_SHORT, &rd_s)<0) goto error; - if (rd_s!=fill_s) { - H5_FAILED(); - printf(" %d: Got a different fill value than what was set.",__LINE__); - printf(" Got %d, set %d\n", rd_s, fill_s); - goto error; - } + if (H5Pget_fill_value(dcpl, H5T_NATIVE_SHORT, &rd_s)<0) goto error; + if (rd_s!=fill_s) { + H5_FAILED(); + printf(" %d: Got a different fill value than what was set.",__LINE__); + printf(" Got %d, set %d\n", rd_s, fill_s); + goto error; + } #endif - if (H5Dclose(dset1)<0) goto error; - if (H5Pclose(dcpl)<0) goto error; + if (H5Dclose(dset1)<0) goto error; + if (H5Pclose(dcpl)<0) goto error; - /* 2. Small to large conversion */ - if ((dset2=H5Dopen(file, "dset2"))<0) goto error; - if ((dcpl=H5Dget_create_plist(dset2))<0) goto error; + /* 2. Small to large conversion */ + if ((dset2=H5Dopen(file, "dset2"))<0) goto error; + if ((dcpl=H5Dget_create_plist(dset2))<0) goto error; #ifndef NO_FILLING - if (H5Pget_fill_value(dcpl, H5T_NATIVE_LONG, &rd_l)<0) goto error; - if (rd_l!=fill_l) { - H5_FAILED(); - printf(" %d: Got a different fill value than what was set.",__LINE__); - printf(" Got %ld, set %ld\n", rd_l, fill_l); - goto error; - } + if (H5Pget_fill_value(dcpl, H5T_NATIVE_LONG, &rd_l)<0) goto error; + if (rd_l!=fill_l) { + H5_FAILED(); + printf(" %d: Got a different fill value than what was set.",__LINE__); + printf(" Got %ld, set %ld\n", rd_l, fill_l); + goto error; + } #endif - if (H5Dclose(dset2)<0) goto error; - if (H5Pclose(dcpl)<0) goto error; + if (H5Dclose(dset2)<0) goto error; + if (H5Pclose(dcpl)<0) goto error; - /* 3. No conversion */ - if ((dset3=H5Dopen(file, "dset3"))<0) goto error; - if ((dcpl=H5Dget_create_plist(dset3))<0) goto error; + /* 3. No conversion */ + if ((dset3=H5Dopen(file, "dset3"))<0) goto error; + if ((dcpl=H5Dget_create_plist(dset3))<0) goto error; #ifndef NO_FILLING - if (H5Pget_fill_value(dcpl, H5T_NATIVE_LONG, &rd_l)<0) goto error; - if (rd_l!=fill_l) { - H5_FAILED(); - printf(" %d: Got a different fill value than what was set.",__LINE__); - printf(" Got %ld, set %ld\n", rd_l, fill_l); - goto error; - } + if (H5Pget_fill_value(dcpl, H5T_NATIVE_LONG, &rd_l)<0) goto error; + if (rd_l!=fill_l) { + H5_FAILED(); + printf(" %d: Got a different fill value than what was set.",__LINE__); + printf(" Got %ld, set %ld\n", rd_l, fill_l); + goto error; + } #endif - if(H5Pget_space_time(dcpl, &alloc_time)<0) goto error; - if(H5Pget_fill_time(dcpl, &fill_time)<0) goto error; - if(alloc_time != H5D_SPACE_ALLOC_LATE) { - H5_FAILED(); - puts(" Got non-H5D_SPACE_ALLOC_LATE space allocation time."); - printf(" Got %d\n", alloc_time); - } - if(fill_time != H5D_FILL_TIME_ALLOC) { - H5_FAILED(); - puts(" Got non-H5D_FILL_TIME_ALLOC fill value write time."); - printf(" Got %d\n", fill_time); - } - if (H5Dclose(dset3)<0) goto error; - if (H5Pclose(dcpl)<0) goto error; + if(H5Pget_space_time(dcpl, &alloc_time)<0) goto error; + if(H5Pget_fill_time(dcpl, &fill_time)<0) goto error; + if(alloc_time != H5D_SPACE_ALLOC_LATE) { + H5_FAILED(); + puts(" Got non-H5D_SPACE_ALLOC_LATE space allocation time."); + printf(" Got %d\n", alloc_time); + } + if(fill_time != H5D_FILL_TIME_ALLOC) { + H5_FAILED(); + puts(" Got non-H5D_FILL_TIME_ALLOC fill value write time."); + printf(" Got %d\n", fill_time); + } + if (H5Dclose(dset3)<0) goto error; + if (H5Pclose(dcpl)<0) goto error; - /* 4. late space allocation and never write fill value */ - if ((dset4=H5Dopen(file, "dset4"))<0) goto error; - if (H5Dget_space_status(dset4, &allocation)<0) goto error; + /* 4. late space allocation and never write fill value */ + if ((dset4=H5Dopen(file, "dset4"))<0) goto error; + if (H5Dget_space_status(dset4, &allocation)<0) goto error; #ifndef H5_HAVE_PARALLEL - if (layout == H5D_CONTIGUOUS && allocation != H5D_SPACE_STATUS_NOT_ALLOCATED) { - H5_FAILED(); - puts(" Got allocated space instead of unallocated."); - printf(" Got %d\n", allocation); - goto error; - } + if (layout == H5D_CONTIGUOUS && allocation != H5D_SPACE_STATUS_NOT_ALLOCATED) { + H5_FAILED(); + puts(" Got allocated space instead of unallocated."); + printf(" Got %d\n", allocation); + goto error; + } #else - if (layout == H5D_CONTIGUOUS && allocation == H5D_SPACE_STATUS_NOT_ALLOCATED) { - H5_FAILED(); - printf(" %d: Got unallocated space instead of allocated.\n",__LINE__); - printf(" Got %d\n", allocation); - goto error; - } + if (layout == H5D_CONTIGUOUS && allocation == H5D_SPACE_STATUS_NOT_ALLOCATED) { + H5_FAILED(); + printf(" %d: Got unallocated space instead of allocated.\n",__LINE__); + printf(" Got %d\n", allocation); + goto error; + } #endif - if ((dcpl=H5Dget_create_plist(dset4))<0) goto error; - if(H5Pget_space_time(dcpl, &alloc_time)<0) goto error; - if(H5Pget_fill_time(dcpl, &fill_time)<0) goto error; - if(alloc_time != H5D_SPACE_ALLOC_LATE) { - H5_FAILED(); - puts(" Got non-H5D_SPACE_ALLOC_LATE space allocation time."); - printf(" Got %d\n", alloc_time); - } - if(fill_time != H5D_FILL_TIME_NEVER) { - H5_FAILED(); - puts(" Got non-H5D_FILL_TIME_NEVER fill value write time."); - printf(" Got %d\n", fill_time); + if ((dcpl=H5Dget_create_plist(dset4))<0) goto error; + if(H5Pget_space_time(dcpl, &alloc_time)<0) goto error; + if(H5Pget_fill_time(dcpl, &fill_time)<0) goto error; + if(alloc_time != H5D_SPACE_ALLOC_LATE) { + H5_FAILED(); + puts(" Got non-H5D_SPACE_ALLOC_LATE space allocation time."); + printf(" Got %d\n", alloc_time); + } + if(fill_time != H5D_FILL_TIME_NEVER) { + H5_FAILED(); + puts(" Got non-H5D_FILL_TIME_NEVER fill value write time."); + printf(" Got %d\n", fill_time); + } + if (H5Dclose(dset4)<0) goto error; + if (H5Pclose(dcpl)<0) goto error; + + /* 5. Compound datatype test */ + if ((dset9=H5Dopen(file, "dset9"))<0) goto error; + if ((dcpl=H5Dget_create_plist(dset9))<0) goto error; + if (H5Pget_fill_value(dcpl, comp_type_id, &rd_c)<0) goto error; + if( rd_c.a!=0 || rd_c.y != fill_ctype.y || rd_c.x != 0 || rd_c.z != '\0') { + H5_FAILED(); + puts(" Got wrong fill value"); + printf(" Got rd_c.a=%f, rd_c.y=%f and rd_c.x=%d, rd_c.z=%c\n", + rd_c.a, rd_c.y, rd_c.x, rd_c.z); + } + if (H5Dclose(dset9)<0) goto error; + if (H5Pclose(dcpl)<0) goto error; } - if (H5Dclose(dset4)<0) goto error; - if (H5Pclose(dcpl)<0) goto error; - - /* II. Check early space allocation case */ + /* II. Check early space allocation cases */ /* 1. Never write fill value */ if ((dset5=H5Dopen(file, "dset5"))<0) goto error; @@ -529,21 +553,6 @@ test_create(hid_t fapl, const char *base_name, H5D_layout_t layout) if (H5Dclose(dset8)<0) goto error; if (H5Pclose(dcpl)<0) goto error; - /* 4. Compound datatype test */ - if ((dset9=H5Dopen(file, "dset9"))<0) goto error; - if ((dcpl=H5Dget_create_plist(dset9))<0) goto error; - if (H5Pget_fill_value(dcpl, comp_type_id, &rd_c)<0) goto error; - if( rd_c.a!=0 || rd_c.y != fill_ctype.y || rd_c.x != 0 || rd_c.z != '\0') { - H5_FAILED(); - puts(" Got wrong fill value"); - printf(" Got rd_c.a=%f, rd_c.y=%f and rd_c.x=%d, rd_c.z=%c\n", - rd_c.a, rd_c.y, rd_c.x, rd_c.z); - } - if (H5Dclose(dset9)<0) goto error; - if (H5Pclose(dcpl)<0) goto error; - - - if (H5Tclose(comp_type_id)<0) goto error; if (H5Fclose(file)<0) goto error; PASSED(); return 0; @@ -552,14 +561,16 @@ test_create(hid_t fapl, const char *base_name, H5D_layout_t layout) H5E_BEGIN_TRY { H5Pclose(dcpl); H5Sclose(space); - H5Dclose(dset1); - H5Dclose(dset2); - H5Dclose(dset3); - H5Dclose(dset4); + if(H5D_COMPACT != layout) { + H5Dclose(dset1); + H5Dclose(dset2); + H5Dclose(dset3); + H5Dclose(dset4); + H5Dclose(dset9); + } H5Dclose(dset5); H5Dclose(dset6); H5Dclose(dset8); - H5Dclose(dset9); H5Fclose(file); } H5E_END_TRY; return 1; @@ -589,7 +600,7 @@ test_rdwr_cases(hid_t file, hid_t dcpl, const char *dname, void *_fillval, H5T_class_t datatype, hid_t ctype_id) { hid_t fspace=-1, mspace=-1, dset1=-1, dset2=-1; - hsize_t cur_size[5] = {32, 16, 8, 4, 2}; + hsize_t cur_size[5] = {2, 16, 8, 4, 2}; hsize_t one[5] = {1, 1, 1, 1, 1}; hsize_t hs_size[5], hs_stride[5]; hssize_t hs_offset[5], nelmts; @@ -819,6 +830,7 @@ test_rdwr_cases(hid_t file, hid_t dcpl, const char *dname, void *_fillval, H5Sclose(fspace); H5Sclose(mspace); } H5E_END_TRY; + return 1; } @@ -846,13 +858,15 @@ test_rdwr(hid_t fapl, const char *base_name, H5D_layout_t layout) { char filename[1024]; hid_t file=-1, dcpl=-1, ctype_id=-1; - hsize_t ch_size[5] = {1, 16, 8, 4, 2}; + hsize_t ch_size[5] = {2, 16, 8, 4, 2}; int nerrors=0; int fillval = 0x4c70f1cd; comp_datatype fill_ctype={0,0,0,0}; if (H5D_CHUNKED==layout) { TESTING("chunked dataset I/O"); + } else if (H5D_COMPACT==layout) { + TESTING("compact dataset I/O"); } else { TESTING("contiguous dataset I/O"); } @@ -864,62 +878,65 @@ test_rdwr(hid_t fapl, const char *base_name, H5D_layout_t layout) if ((dcpl=H5Pcreate(H5P_DATASET_CREATE))<0) goto error; if (H5D_CHUNKED==layout) { if (H5Pset_chunk(dcpl, 5, ch_size)<0) goto error; + } else if (H5D_COMPACT==layout) { + if (H5Pset_layout(dcpl, H5D_COMPACT)<0) goto error; } if ((ctype_id=create_compound_type())<0) goto error; /* I. Test H5D_SPACE_ALLOC_LATE space allocation cases */ - if(H5Pset_space_time(dcpl, H5D_SPACE_ALLOC_LATE) < 0) goto error; - - /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value to be default */ - if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; - fillval = 0; - nerrors += test_rdwr_cases(file, dcpl, "dset1", &fillval, H5D_FILL_TIME_ALLOC, + if(H5D_COMPACT != layout) { + if(H5Pset_space_time(dcpl, H5D_SPACE_ALLOC_LATE) < 0) goto error; + + /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value to be default */ + if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; + fillval = 0; + nerrors += test_rdwr_cases(file, dcpl, "dset1", &fillval, H5D_FILL_TIME_ALLOC, + layout, H5T_INTEGER, -1); + + /* case for H5D_FILL_TIME_NEVER as fill write time and fill value to be default */ + if (H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; + nerrors += test_rdwr_cases(file, dcpl, "dset2", &fillval, H5D_FILL_TIME_NEVER, layout, H5T_INTEGER, -1); - /* case for H5D_FILL_TIME_NEVER as fill write time and fill value to be default */ - if (H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; - nerrors += test_rdwr_cases(file, dcpl, "dset2", &fillval, H5D_FILL_TIME_NEVER, + /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value is user-defined */ + if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; + fillval = 0x4c70f1cd; + if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval)<0) goto error; + nerrors += test_rdwr_cases(file, dcpl, "dset3", &fillval, H5D_FILL_TIME_ALLOC, layout, H5T_INTEGER, -1); - /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value is user-defined */ - if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; - fillval = 0x4c70f1cd; - if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval)<0) goto error; - nerrors += test_rdwr_cases(file, dcpl, "dset3", &fillval, H5D_FILL_TIME_ALLOC, + /* case for H5D_FILL_TIME_NEVER as fill write time and fill value is user-defined */ + if (H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; + if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval)<0) goto error; + nerrors += test_rdwr_cases(file, dcpl, "dset4", &fillval, H5D_FILL_TIME_NEVER, layout, H5T_INTEGER, -1); - /* case for H5D_FILL_TIME_NEVER as fill write time and fill value is user-defined */ - if (H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; - if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval)<0) goto error; - nerrors += test_rdwr_cases(file, dcpl, "dset4", &fillval, H5D_FILL_TIME_NEVER, - layout, H5T_INTEGER, -1); + /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value is undefined */ + /* This case has been tested in test_create() function */ - /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value is undefined */ - /* This case has been tested in test_create() function */ - - /* case for H5D_FILL_TIME_NEVER as fill write time and fill value is undefined */ - if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; - if (H5Pset_fill_value(dcpl, -1, NULL)<0) goto error; - nerrors += test_rdwr_cases(file, dcpl, "dset5", &fillval, H5D_FILL_TIME_NEVER, + /* case for H5D_FILL_TIME_NEVER as fill write time and fill value is undefined */ + if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; + if (H5Pset_fill_value(dcpl, -1, NULL)<0) goto error; + nerrors += test_rdwr_cases(file, dcpl, "dset5", &fillval, H5D_FILL_TIME_NEVER, layout, H5T_INTEGER, -1); - /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value is user-defined - * as compound type */ - if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; - fill_ctype.y = 4444.4444; - if(H5Pset_fill_value(dcpl, ctype_id, &fill_ctype)<0) goto error; - nerrors += test_rdwr_cases(file, dcpl, "dset11", &fill_ctype, H5D_FILL_TIME_ALLOC, + /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value is user-defined + * as compound type */ + if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; + fill_ctype.y = 4444.4444; + if(H5Pset_fill_value(dcpl, ctype_id, &fill_ctype)<0) goto error; + nerrors += test_rdwr_cases(file, dcpl, "dset11", &fill_ctype, H5D_FILL_TIME_ALLOC, layout, H5T_COMPOUND, ctype_id); - if (H5Pclose(dcpl)<0) goto error; - if ((dcpl=H5Pcreate(H5P_DATASET_CREATE))<0) goto error; - if (H5D_CHUNKED==layout) { - if (H5Pset_chunk(dcpl, 5, ch_size)<0) goto error; + if (H5Pclose(dcpl)<0) goto error; + if ((dcpl=H5Pcreate(H5P_DATASET_CREATE))<0) goto error; + if (H5D_CHUNKED==layout) { + if (H5Pset_chunk(dcpl, 5, ch_size)<0) goto error; + } } - /* II. Test H5D_SPACE_ALLOC_EARLY space allocation cases */ if(H5Pset_space_time(dcpl, H5D_SPACE_ALLOC_EARLY) < 0) goto error; @@ -932,7 +949,7 @@ test_rdwr(hid_t fapl, const char *base_name, H5D_layout_t layout) /* case for H5D_FILL_TIME_NEVER as fill write time and fill value to be default */ if (H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) goto error; nerrors += test_rdwr_cases(file, dcpl, "dset7", &fillval, H5D_FILL_TIME_NEVER, layout, - H5T_INTEGER, -1); + H5T_INTEGER, -1); /* case for H5D_FILL_TIME_ALLOC as fill write time and fill value is user-defined */ if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0) goto error; @@ -1381,18 +1398,20 @@ error: int main(int argc, char *argv[]) { - int nerrors=0, argno, test_contig=1, test_chunk=1; + int nerrors=0, argno, test_contig=1, test_chunk=1, test_compact=1; hid_t fapl=-1; if (argc>=2) { - test_contig = test_chunk = 0; + test_contig = test_chunk = test_compact = 0; for (argno=1; argno<argc; argno++) { if (!strcmp(argv[argno], "contiguous")) { test_contig = 1; } else if (!strcmp(argv[argno], "chunked")) { test_chunk = 1; - } else { - fprintf(stderr, "usage: %s [contiguous] [chunked]\n", argv[0]); + } else if (!strcmp(argv[argno], "compact")) { + test_compact =1; + } else { + fprintf(stderr, "usage: %s [contiguous] [chunked] [compact]\n", argv[0]); exit(1); } } @@ -1417,7 +1436,13 @@ main(int argc, char *argv[]) nerrors += test_extend(fapl, FILENAME[5], H5D_CONTIGUOUS); nerrors += test_compatible(); } - + + /* Compact dataset storage tests */ + if (test_compact) { + nerrors += test_create(fapl, FILENAME[6], H5D_COMPACT); + nerrors += test_rdwr (fapl, FILENAME[7], H5D_COMPACT); + } + if (nerrors) goto error; puts("All fill value tests passed."); if (h5_cleanup(FILENAME, fapl)) remove(FILE_NAME_RAW); |