Skip to content

Commit

Permalink
Added H5VLnative_addr_to_token_f and H5VLnative_token_to_address_f tests
Browse files Browse the repository at this point in the history
  • Loading branch information
brtnfld committed Oct 30, 2023
1 parent 6e3a32d commit b8d210e
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 21 deletions.
24 changes: 12 additions & 12 deletions fortran/src/H5VLff.F90
Original file line number Diff line number Diff line change
Expand Up @@ -404,16 +404,16 @@ END SUBROUTINE H5VLunregister_connector_f
!>
!! \ingroup FH5VL
!!
!! \brief
!! \brief Retrieves the token representation from an address for a location identifier.
!!
!! \param loc_id
!! \param addr
!! \param token
!! \param loc_id Specifies a location identifier
!! \param addr Address for object in the file
!! \param token Token representing the object in the file
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5VLnative_addr_to_token()
!!
SUBROUTINE H5VLnative_addr_to_token_f(loc_id, addr, token, hdferr)
SUBROUTINE h5vlnative_addr_to_token_f(loc_id, addr, token, hdferr)
IMPLICIT NONE
INTEGER(HID_T) , INTENT(IN) :: loc_id
INTEGER(HADDR_T) , INTENT(IN) :: addr
Expand All @@ -431,21 +431,21 @@ END FUNCTION H5VLnative_addr_to_token

hdferr = INT(H5VLnative_addr_to_token(loc_id, addr, token))

END SUBROUTINE H5VLnative_addr_to_token_f
END SUBROUTINE h5vlnative_addr_to_token_f

!>
!! \ingroup FH5VL
!!
!! \brief TODO
!! \brief Retrieves the object address from a token representation for a location identifier.
!!
!! \param loc_id
!! \param token
!! \param addr
!! \param loc_id Specifies a location identifier
!! \param token Token representing the object in the file
!! \param addr Address for object in the file
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5VLnative_token_to_addr()
!!
SUBROUTINE H5VLnative_token_to_addr_f(loc_id, token, addr, hdferr)
SUBROUTINE h5vlnative_token_to_addr_f(loc_id, token, addr, hdferr)
IMPLICIT NONE
INTEGER(HID_T) , INTENT(IN) :: loc_id
TYPE(H5O_TOKEN_T_F), INTENT(IN) :: token
Expand All @@ -463,6 +463,6 @@ END FUNCTION H5VLnative_token_to_addr

hdferr = INT(H5VLnative_token_to_addr(loc_id, token, addr))

END SUBROUTINE H5VLnative_token_to_addr_f
END SUBROUTINE h5vlnative_token_to_addr_f

END MODULE H5VL
34 changes: 25 additions & 9 deletions fortran/test/tH5O_F03.F90
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ INTEGER FUNCTION compare_h5o_info_t( loc_id, oinfo_f, oinfo_c, field, full_f_fie
INTEGER :: cmp_value
INTEGER :: i
INTEGER :: ierr
INTEGER(HADDR_T) :: addr
TYPE(H5O_TOKEN_T_F) :: token

status = 0

Expand All @@ -82,7 +84,7 @@ INTEGER FUNCTION compare_h5o_info_t( loc_id, oinfo_f, oinfo_c, field, full_f_fie
RETURN
ENDIF
token_c%token = oinfo_c%token%token
CALL H5Otoken_cmp_f(loc_id, oinfo_f%token, token_c, cmp_value, ierr);
CALL H5Otoken_cmp_f(loc_id, oinfo_f%token, token_c, cmp_value, ierr)
IF( (ierr .EQ. -1) .OR. (cmp_value .NE. 0) ) THEN
status = -1
RETURN
Expand All @@ -96,6 +98,22 @@ INTEGER FUNCTION compare_h5o_info_t( loc_id, oinfo_f, oinfo_c, field, full_f_fie
RETURN
ENDIF

CALL h5vlnative_token_to_addr_f(loc_id, oinfo_f%token, addr, ierr)
IF( ierr .EQ. -1) THEN
status = -1
RETURN
ENDIF
CALL h5vlnative_addr_to_token_f(loc_id, addr, token, ierr)
IF( ierr .EQ. -1) THEN
status = -1
RETURN
ENDIF
CALL H5Otoken_cmp_f(loc_id, oinfo_f%token, token, cmp_value, ierr)
IF( (ierr .EQ. -1) .OR. (cmp_value .NE. 0) ) THEN
status = -1
RETURN
ENDIF

ENDIF

IF((field .EQ. H5O_INFO_TIME_F).OR.(field .EQ. H5O_INFO_ALL_F))THEN
Expand Down Expand Up @@ -132,7 +150,7 @@ INTEGER FUNCTION compare_h5o_info_t( loc_id, oinfo_f, oinfo_c, field, full_f_fie
status = 0
IF( oinfo_c%fileno .NE. oinfo_f%fileno) status = status + 1
token_c%token = oinfo_c%token%token
CALL H5Otoken_cmp_f(loc_id, oinfo_f%token, token_c, cmp_value, ierr);
CALL H5Otoken_cmp_f(loc_id, oinfo_f%token, token_c, cmp_value, ierr)
IF( (ierr .EQ. -1) .OR. (cmp_value .NE. 0) ) THEN
status = -1
RETURN
Expand All @@ -156,7 +174,7 @@ INTEGER FUNCTION compare_h5o_info_t( loc_id, oinfo_f, oinfo_c, field, full_f_fie
status = 0
IF( oinfo_c%fileno .NE. oinfo_f%fileno) status = status + 1
token_c%token = oinfo_c%token%token
CALL H5Otoken_cmp_f(loc_id, oinfo_f%token, token_c, cmp_value, ierr);
CALL H5Otoken_cmp_f(loc_id, oinfo_f%token, token_c, cmp_value, ierr)
IF( (ierr .EQ. -1) .OR. (cmp_value .NE. 0) ) THEN
status = -1
RETURN
Expand Down Expand Up @@ -234,25 +252,24 @@ INTEGER FUNCTION visit_obj_cb( group_id, name, oinfo_c, op_data) bind(C)
ENDIF

! Check H5Oget_info_by_name_f; if partial field values were filled correctly
CALL H5Oget_info_by_name_f(group_id, name2, oinfo_f, ierr);
CALL H5Oget_info_by_name_f(group_id, name2, oinfo_f, ierr)
visit_obj_cb = compare_h5o_info_t( group_id, oinfo_f, oinfo_c, op_data%field, .TRUE. )
IF(visit_obj_cb.EQ.-1) RETURN

! Check H5Oget_info_by_name_f, only check field values
CALL H5Oget_info_by_name_f(group_id, name2, oinfo_f, ierr, fields = op_data%field);
CALL H5Oget_info_by_name_f(group_id, name2, oinfo_f, ierr, fields = op_data%field)
visit_obj_cb = compare_h5o_info_t(group_id, oinfo_f, oinfo_c, op_data%field, .FALSE. )
IF(visit_obj_cb.EQ.-1) RETURN


IF(op_data%idx.EQ.1)THEN

! Check H5Oget_info_f, only check field values
CALL H5Oget_info_f(group_id, oinfo_f, ierr, fields = op_data%field);
CALL H5Oget_info_f(group_id, oinfo_f, ierr, fields = op_data%field)
visit_obj_cb = compare_h5o_info_t(group_id, oinfo_f, oinfo_c, op_data%field, .FALSE. )
IF(visit_obj_cb.EQ.-1) RETURN

! Check H5Oget_info_f; if partial field values where filled correctly
CALL H5Oget_info_f(group_id, oinfo_f, ierr);
CALL H5Oget_info_f(group_id, oinfo_f, ierr)
visit_obj_cb = compare_h5o_info_t(group_id, oinfo_f, oinfo_c, op_data%field, .TRUE. )
IF(visit_obj_cb.EQ.-1) RETURN

Expand Down Expand Up @@ -677,7 +694,6 @@ SUBROUTINE test_obj_info(total_error)
CALL check("h5oget_info_by_idx_f", -1, total_error)
ENDIF


! Close objects
CALL h5dclose_f(did, error)
CALL check("h5dclose_f", error, total_error)
Expand Down

0 comments on commit b8d210e

Please sign in to comment.