From 844a56e79b49d93fe241ef06fb929eb3762c7cfe Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Tue, 23 Sep 2008 16:52:19 -0500 Subject: [svn-r15688] Description: Added additional tests for h5sget_select_hyper_blocklist_f and 5sget_select_elem_pointlist_f --- fortran/test/fortranlib_test.f90 | 8 + fortran/test/tH5Sselect.f90 | 749 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 756 insertions(+), 1 deletion(-) diff --git a/fortran/test/fortranlib_test.f90 b/fortran/test/fortranlib_test.f90 index 73946de..a540f99 100644 --- a/fortran/test/fortranlib_test.f90 +++ b/fortran/test/fortranlib_test.f90 @@ -127,6 +127,14 @@ PROGRAM fortranlibtest CALL test_select_element(cleanup, ret_total_error) CALL write_test_status(ret_total_error, ' Element selection test', total_error) + ret_total_error = 0 + CALL test_select_point(cleanup, ret_total_error) + CALL write_test_status(ret_total_error, ' Element selection functions test ', total_error) + + ret_total_error = 0 + CALL test_select_combine(cleanup, total_error) + CALL write_test_status(ret_total_error, ' Selection combinations test ', total_error) + ! write(*,*) ! write(*,*) '=========================================' ! write(*,*) 'Testing DATATYPE interface ' diff --git a/fortran/test/tH5Sselect.f90 b/fortran/test/tH5Sselect.f90 index a004ba7..57a846b 100644 --- a/fortran/test/tH5Sselect.f90 +++ b/fortran/test/tH5Sselect.f90 @@ -794,6 +794,8 @@ INTEGER :: error INTEGER(HSIZE_T), DIMENSION(3) :: data_dims + INTEGER :: i + ! !initialize the coord array to give the selected points' position ! @@ -916,7 +918,7 @@ CALL h5sget_select_hyper_blocklist_f(dataspace, startblock, & num_blocks, blocklist, error) CALL check("h5sget_select_hyper_blocklist_f", error, total_error) - !write(*,*) (blocklist(i), i =1, num_blocks*RANK*2) +! write(*,*) (blocklist(i), i =1, num_blocks*RANK*2) !result of blocklist selected is: !1, 1, 2, 2, 4, 1, 5, 2, 1, 4, 2, 5, 4, 4, 5, 5 @@ -1010,4 +1012,749 @@ RETURN END SUBROUTINE test_basic_select +!/**************************************************************** +!** +!** test_select_point(): Test basic H5S (dataspace) selection code. +!** Tests element selections between dataspaces of various sizes +!** and dimensionalities. +!** +!****************************************************************/ + +SUBROUTINE test_select_point(cleanup, total_error) + USE HDF5 ! This module contains all necessary modules + + IMPLICIT NONE + LOGICAL, INTENT(IN) :: cleanup + INTEGER, INTENT(OUT) :: total_error + INTEGER(HID_T) :: xfer_plist + + INTEGER, PARAMETER :: SPACE1_DIM1=3 + INTEGER, PARAMETER :: SPACE1_DIM2=15 + INTEGER, PARAMETER :: SPACE1_DIM3=13 + INTEGER, PARAMETER :: SPACE2_DIM1=30 + INTEGER, PARAMETER :: SPACE2_DIM2=26 + INTEGER, PARAMETER :: SPACE3_DIM1=15 + INTEGER, PARAMETER :: SPACE3_DIM2=26 + + INTEGER, PARAMETER :: SPACE1_RANK=3 + INTEGER, PARAMETER :: SPACE2_RANK=2 + INTEGER, PARAMETER :: SPACE3_RANK=2 + + ! /* Element selection information */ + INTEGER, PARAMETER :: POINT1_NPOINTS=10 + INTEGER(hid_t) ::fid1 ! /* HDF5 File IDs */ + INTEGER(hid_t) ::dataset ! /* Dataset ID */ + INTEGER(hid_t) ::sid1,sid2 ! /* Dataspace ID */ + INTEGER(hsize_t), DIMENSION(1:3) :: dims1 = (/SPACE1_DIM1, SPACE1_DIM2, SPACE1_DIM3/) + INTEGER(hsize_t), DIMENSION(1:2) :: dims2 = (/SPACE2_DIM1, SPACE2_DIM2/) + INTEGER(hsize_t), DIMENSION(1:2) :: dims3 = (/SPACE3_DIM1, SPACE3_DIM2/) + + INTEGER(hsize_t), DIMENSION(1:SPACE1_RANK,1:POINT1_NPOINTS) :: coord1 !/* Coordinates for point selection */ + INTEGER(hsize_t), DIMENSION(1:SPACE1_RANK,1:POINT1_NPOINTS) :: temp_coord1 !/* Coordinates for point selection */ + INTEGER(hsize_t), DIMENSION(1:SPACE2_RANK,1:POINT1_NPOINTS) :: coord2 !/* Coordinates for point selection */ + INTEGER(hsize_t), DIMENSION(1:SPACE2_RANK,1:POINT1_NPOINTS) :: temp_coord2 !/* Coordinates for point selection */ + INTEGER(hsize_t), DIMENSION(1:SPACE3_RANK,1:POINT1_NPOINTS) :: coord3 !/* Coordinates for point selection */ + INTEGER(hsize_t), DIMENSION(1:SPACE3_RANK,1:POINT1_NPOINTS) :: temp_coord3 !/* Coordinates for point selection */ + INTEGER(hssize_t) :: npoints + +!!$ uint8_t *wbuf, /* buffer to write to disk */ +!!$ *rbuf, /* buffer read from disk */ +!!$ *tbuf; /* temporary buffer pointer */ + INTEGER :: i,j; !/* Counters */ +! struct pnt_iter pi; /* Custom Pointer iterator struct */ + INTEGER :: error !/* Generic return value */ + CHARACTER(LEN=12) :: filename = 'h5s_hyper.h5' + CHARACTER(LEN=1), DIMENSION(1:SPACE2_DIM1,1:SPACE2_DIM2) :: wbuf, rbuf + + xfer_plist = H5P_DEFAULT_F +! MESSAGE(5, ("Testing Element Selection Functions\n")); + + !/* Allocate write & read buffers */ +!!$ wbuf = HDmalloc(sizeof(uint8_t) * SPACE2_DIM1 * SPACE2_DIM2); +!!$ rbuf = HDcalloc(sizeof(uint8_t), (size_t)(SPACE3_DIM1 * SPACE3_DIM2)); +!!$ + !/* Initialize WRITE buffer */ + + DO i = 1, SPACE2_DIM1 + DO j = 1, SPACE2_DIM2 + wbuf(i,j) = 'a' + ENDDO + ENDDO + +!!$ for(i=0, tbuf=wbuf; i