mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-30 15:32:37 +08:00
[svn-r15054] Purpose:
Made reporting of the test status global by handling the output via a module. Cleaned-up output to the terminal. Description: Put writing the test status as a call to a subroutine instead of on a per account basis. Added the dependency of compiling in the correct order in the Makefiles for use of the Module.
This commit is contained in:
parent
0c40ae2d42
commit
fcf8a9a2cb
@ -70,4 +70,13 @@ FORTRAN_API=yes
|
||||
# fflush2 depends on files created by fflush1
|
||||
fflush2.chkexe_: fflush1.chkexe_
|
||||
|
||||
# Hardcode the dependencies of these files. There isn't a known way of
|
||||
# determining this automagically (like we do with the C files). So, when
|
||||
# doing a parallel make, some modules could be made way before the
|
||||
# modules they depend upon are actually made. *sigh*
|
||||
fortranlib_test.lo: fortranlib_test.f90 tf.lo
|
||||
fortranlib_test_1_8.lo: fortranlib_test_1_8.f90 tf.lo
|
||||
tH5A_1_8.lo: tH5A_1_8.f90 tf.lo
|
||||
tH5G_1_8.lo: tH5G_1_8.f90 tf.lo
|
||||
|
||||
include $(top_srcdir)/config/conclude.am
|
||||
|
@ -819,6 +819,15 @@ help:
|
||||
# fflush2 depends on files created by fflush1
|
||||
fflush2.chkexe_: fflush1.chkexe_
|
||||
|
||||
# Hardcode the dependencies of these files. There isn't a known way of
|
||||
# determining this automagically (like we do with the C files). So, when
|
||||
# doing a parallel make, some modules could be made way before the
|
||||
# modules they depend upon are actually made. *sigh*
|
||||
fortranlib_test.lo: fortranlib_test.f90 tf.lo
|
||||
fortranlib_test_1_8.lo: fortranlib_test_1_8.f90 tf.lo
|
||||
tH5A_1_8.lo: tH5A_1_8.f90 tf.lo
|
||||
tH5G_1_8.lo: tH5G_1_8.f90 tf.lo
|
||||
|
||||
# lib/progs/tests targets recurse into subdirectories. build-* targets
|
||||
# build files in this directory.
|
||||
build-lib: $(LIB)
|
||||
|
@ -17,323 +17,210 @@
|
||||
!
|
||||
! Testing Fortran functionality.
|
||||
!
|
||||
PROGRAM fortranlibtest
|
||||
PROGRAM fortranlibtest
|
||||
|
||||
USE HDF5
|
||||
USE error_handler
|
||||
|
||||
IMPLICIT NONE
|
||||
INTEGER :: total_error = 0
|
||||
INTEGER :: error
|
||||
INTEGER :: majnum, minnum, relnum
|
||||
LOGICAL :: cleanup = .TRUE.
|
||||
! LOGICAL :: cleanup = .FALSE.
|
||||
LOGICAL :: szip_flag
|
||||
INTEGER :: ret_total_error
|
||||
|
||||
USE HDF5
|
||||
CALL h5open_f(error)
|
||||
WRITE(*,*) ' ========================== '
|
||||
WRITE(*,*) ' FORTRAN tests '
|
||||
WRITE(*,*) ' ========================== '
|
||||
CALL h5get_libversion_f(majnum, minnum, relnum, total_error)
|
||||
IF(total_error .EQ. 0) THEN
|
||||
|
||||
IMPLICIT NONE
|
||||
INTEGER :: total_error = 0
|
||||
INTEGER :: error
|
||||
INTEGER :: mounting_total_error = 0
|
||||
INTEGER :: reopen_total_error = 0
|
||||
INTEGER :: fclose_total_error = 0
|
||||
INTEGER :: fspace_total_error = 0
|
||||
INTEGER :: dataset_total_error = 0
|
||||
INTEGER :: extend_dataset_total_error = 0
|
||||
INTEGER :: refobj_total_error = 0
|
||||
INTEGER :: refreg_total_error = 0
|
||||
INTEGER :: dataspace_total_error = 0
|
||||
INTEGER :: hyperslab_total_error = 0
|
||||
INTEGER :: element_total_error = 0
|
||||
INTEGER :: basic_select_total_error = 0
|
||||
INTEGER :: total_error_compoundtest = 0
|
||||
INTEGER :: basic_datatype_total_error = 0
|
||||
INTEGER :: enum_total_error = 0
|
||||
INTEGER :: external_total_error = 0
|
||||
INTEGER :: multi_file_total_error = 0
|
||||
INTEGER :: attribute_total_error = 0
|
||||
INTEGER :: identifier_total_error = 0
|
||||
INTEGER :: group_total_error = 0
|
||||
INTEGER :: error_total_error = 0
|
||||
INTEGER :: vl_total_error = 0
|
||||
INTEGER :: z_total_error = 0
|
||||
INTEGER :: sz_total_error = 0
|
||||
INTEGER :: majnum, minnum, relnum
|
||||
CHARACTER(LEN=8) error_string
|
||||
CHARACTER(LEN=8) :: success = ' PASSED '
|
||||
CHARACTER(LEN=8) :: failure = '*FAILED*'
|
||||
CHARACTER(LEN=8) :: skip = '--SKIP--'
|
||||
CHARACTER(LEN=4) :: e_format ='(8a)'
|
||||
LOGICAL :: cleanup = .TRUE.
|
||||
! LOGICAL :: cleanup = .FALSE.
|
||||
LOGICAL :: szip_flag
|
||||
|
||||
CALL h5open_f(error)
|
||||
write(*,*) ' ========================== '
|
||||
write(*,*) ' FORTRAN tests '
|
||||
write(*,*) ' ========================== '
|
||||
CALL h5get_libversion_f(majnum, minnum, relnum, total_error)
|
||||
if(total_error .eq. 0) then
|
||||
|
||||
write(*, '(" FORTRANLIB_TEST is linked with HDF5 Library version ")', advance="NO")
|
||||
write(*, '(I1)', advance="NO") majnum
|
||||
write(*, '(".")', advance="NO")
|
||||
write(*, '(I1)', advance="NO") minnum
|
||||
write(*, '(" release ")', advance="NO")
|
||||
write(*, '(I3)') relnum
|
||||
else
|
||||
total_error = total_error + 1
|
||||
endif
|
||||
write(*,*)
|
||||
WRITE(*, '(" FORTRANLIB_TEST is linked with HDF5 Library version ")', advance="NO")
|
||||
WRITE(*, '(I1)', advance="NO") majnum
|
||||
WRITE(*, '(".")', advance="NO")
|
||||
WRITE(*, '(I1)', advance="NO") minnum
|
||||
WRITE(*, '(" release ")', advance="NO")
|
||||
WRITE(*, '(I3)') relnum
|
||||
ELSE
|
||||
total_error = total_error + 1
|
||||
ENDIF
|
||||
WRITE(*,*)
|
||||
! CALL h5check_version_f(1,4,4,total_error)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing FILE Interface '
|
||||
! write(*,*) '========================================='
|
||||
error_string = failure
|
||||
CALL mountingtest(cleanup, mounting_total_error)
|
||||
IF (mounting_total_error == 0) error_string = success
|
||||
write(*, fmt = '(14a)', advance = 'no') ' Mounting test'
|
||||
write(*, fmt = '(56x,a)', advance = 'no') ' '
|
||||
|
||||
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + mounting_total_error
|
||||
error_string = failure
|
||||
CALL reopentest(cleanup, reopen_total_error)
|
||||
IF (reopen_total_error == 0) error_string = success
|
||||
write(*, fmt = '(12a)', advance = 'no') ' Reopen test'
|
||||
write(*, fmt = '(58x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + reopen_total_error
|
||||
ret_total_error = 0
|
||||
CALL mountingtest(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Mounting test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL reopentest(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Reopen test', total_error)
|
||||
|
||||
!DEC$ if defined(H5_VMS)
|
||||
goto 100
|
||||
GOTO 8
|
||||
!DEC$ else
|
||||
error_string = failure
|
||||
CALL file_close(cleanup, fclose_total_error)
|
||||
IF (fclose_total_error == 0) error_string = success
|
||||
write(*, fmt = '(21a)', advance = 'no') ' File open/close test'
|
||||
write(*, fmt = '(49x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + fclose_total_error
|
||||
ret_total_error = 0
|
||||
CALL file_close(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' File open/close test', total_error)
|
||||
!DEC$ endif
|
||||
100 continue
|
||||
error_string = failure
|
||||
CALL file_space(cleanup, fspace_total_error)
|
||||
IF (fspace_total_error == 0) error_string = success
|
||||
write(*, fmt = '(21a)', advance = 'no') ' File free space test'
|
||||
write(*, fmt = '(49x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + fspace_total_error
|
||||
8 CONTINUE
|
||||
|
||||
ret_total_error = 0
|
||||
CALL file_space(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' File free space test', total_error)
|
||||
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing DATASET Interface '
|
||||
! write(*,*) '========================================='
|
||||
|
||||
error_string = failure
|
||||
CALL datasettest(cleanup, dataset_total_error)
|
||||
IF (dataset_total_error == 0) error_string = success
|
||||
write(*, fmt = '(13a)', advance = 'no') ' Dataset test'
|
||||
write(*, fmt = '(57x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + dataset_total_error
|
||||
error_string = failure
|
||||
CALL extenddsettest(cleanup, extend_dataset_total_error)
|
||||
IF (extend_dataset_total_error == 0) error_string = success
|
||||
write(*, fmt = '(24a)', advance = 'no') ' Extendible dataset test'
|
||||
write(*, fmt = '(46x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + extend_dataset_total_error
|
||||
ret_total_error = 0
|
||||
CALL datasettest(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Dataset test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL extenddsettest(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Extendible dataset test', total_error)
|
||||
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing DATASPACE Interface '
|
||||
! write(*,*) '========================================='
|
||||
|
||||
error_string = failure
|
||||
CALL dataspace_basic_test(cleanup, dataspace_total_error)
|
||||
IF (dataspace_total_error == 0) error_string = success
|
||||
write(*, fmt = '(21a)', advance = 'no') ' Basic dataspace test'
|
||||
write(*, fmt = '(49x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + dataspace_total_error
|
||||
|
||||
ret_total_error = 0
|
||||
CALL dataspace_basic_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Basic dataspace test', total_error)
|
||||
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing REFERENCE Interface '
|
||||
! write(*,*) '========================================='
|
||||
|
||||
error_string = failure
|
||||
CALL refobjtest(cleanup, refobj_total_error)
|
||||
IF (refobj_total_error == 0) error_string = success
|
||||
write(*, fmt = '(25a)', advance = 'no') ' Reference to object test'
|
||||
write(*, fmt = '(45x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + refobj_total_error
|
||||
|
||||
error_string = failure
|
||||
CALL refregtest(cleanup, refreg_total_error)
|
||||
IF (refreg_total_error == 0) error_string = success
|
||||
write(*, fmt = '(33a)', advance = 'no') ' Reference to dataset region test'
|
||||
write(*, fmt = '(37x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + refreg_total_error
|
||||
ret_total_error = 0
|
||||
CALL refobjtest(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Reference to object test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL refregtest(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Reference to dataset region test', total_error)
|
||||
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing selection functionalities '
|
||||
! write(*,*) '========================================='
|
||||
|
||||
error_string = failure
|
||||
CALL test_basic_select(cleanup, basic_select_total_error)
|
||||
IF (basic_select_total_error == 0) error_string = success
|
||||
write(*, fmt = '(21a)', advance = 'no') ' Basic selection test'
|
||||
write(*, fmt = '(49x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + basic_select_total_error
|
||||
ret_total_error = 0
|
||||
CALL test_basic_select(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Basic selection test', total_error)
|
||||
|
||||
error_string = failure
|
||||
CALL test_select_hyperslab( cleanup, hyperslab_total_error)
|
||||
IF ( hyperslab_total_error == 0) error_string = success
|
||||
write(*, fmt = '(25a)', advance = 'no') ' Hyperslab selection test'
|
||||
write(*, fmt = '(45x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + hyperslab_total_error
|
||||
|
||||
error_string = failure
|
||||
CALL test_select_element(cleanup, element_total_error)
|
||||
IF (element_total_error == 0) error_string = success
|
||||
write(*, fmt = '(23a)', advance = 'no') ' Element selection test'
|
||||
write(*, fmt = '(47x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + element_total_error
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_select_hyperslab( cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Hyperslab selection test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_select_element(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Element selection test', total_error)
|
||||
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing DATATYPE interface '
|
||||
! write(*,*) '========================================='
|
||||
error_string = failure
|
||||
CALL basic_data_type_test(cleanup, basic_datatype_total_error)
|
||||
IF (basic_datatype_total_error == 0) error_string = success
|
||||
write(*, fmt = '(20a)', advance = 'no') ' Basic datatype test'
|
||||
write(*, fmt = '(50x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + basic_datatype_total_error
|
||||
ret_total_error = 0
|
||||
CALL basic_data_type_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Basic datatype test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL compoundtest(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Compound datatype test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL enumtest(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Enum datatype test', total_error)
|
||||
|
||||
error_string = failure
|
||||
CALL compoundtest(cleanup, total_error_compoundtest)
|
||||
IF (total_error_compoundtest == 0) error_string = success
|
||||
write(*, fmt = '(23a)', advance = 'no') ' Compound datatype test'
|
||||
write(*, fmt = '(47x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + total_error_compoundtest
|
||||
error_string = failure
|
||||
CALL enumtest(cleanup, enum_total_error)
|
||||
IF (enum_total_error == 0) error_string = success
|
||||
write(*, fmt = '(19a)', advance = 'no') ' Enum datatype test'
|
||||
write(*, fmt = '(51x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + enum_total_error
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing PROPERTY interface '
|
||||
! write(*,*) '========================================='
|
||||
|
||||
error_string = failure
|
||||
CALL external_test(cleanup, external_total_error)
|
||||
IF (external_total_error == 0) error_string = success
|
||||
write(*, fmt = '(22a)', advance = 'no') ' External dataset test'
|
||||
write(*, fmt = '(48x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + external_total_error
|
||||
ret_total_error = 0
|
||||
CALL external_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' External dataset test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
cleanup = .FALSE.
|
||||
CALL multi_file_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Multi file driver test', total_error)
|
||||
|
||||
error_string = failure
|
||||
! error_string = skip
|
||||
cleanup = .FALSE.
|
||||
CALL multi_file_test(cleanup, multi_file_total_error)
|
||||
IF (multi_file_total_error == 0) error_string = success
|
||||
write(*, fmt = '(23a)', advance = 'no') ' Multi file driver test'
|
||||
write(*, fmt = '(47x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + multi_file_total_error
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing ATTRIBUTE interface '
|
||||
! write(*,*) '========================================='
|
||||
|
||||
error_string = failure
|
||||
CALL attribute_test(cleanup, attribute_total_error)
|
||||
write(*, fmt = '(15a)', advance = 'no') ' Attribute test'
|
||||
write(*, fmt = '(55x,a)', advance = 'no') ' '
|
||||
IF (attribute_total_error == 0) error_string = success
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + attribute_total_error
|
||||
ret_total_error = 0
|
||||
CALL attribute_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Attribute test', total_error)
|
||||
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing IDENTIFIER interface '
|
||||
! write(*,*) '========================================='
|
||||
|
||||
error_string = failure
|
||||
CALL identifier_test(cleanup, identifier_total_error)
|
||||
IF (identifier_total_error == 0) error_string = success
|
||||
write(*, fmt = '(16a)', advance = 'no') ' Identifier test'
|
||||
write(*, fmt = '(54x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + identifier_total_error
|
||||
error_string = failure
|
||||
CALL filters_test(cleanup, z_total_error)
|
||||
IF (z_total_error == 0) error_string = success
|
||||
write(*, fmt = '(13a)', advance = 'no') ' Filters test'
|
||||
write(*, fmt = '(57x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + z_total_error
|
||||
ret_total_error = 0
|
||||
CALL identifier_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Identifier test', total_error)
|
||||
|
||||
CALL szip_test(szip_flag, cleanup, sz_total_error)
|
||||
IF (sz_total_error == 0) error_string = success
|
||||
! Reset the flag is compression was not available
|
||||
IF (.NOT. szip_flag) error_string = skip
|
||||
IF (sz_total_error .gt. 0) error_string = failure
|
||||
write(*, fmt = '(18a)', advance = 'no') ' SZIP filter test'
|
||||
write(*, fmt = '(53x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
if(sz_total_error .gt. 0) total_error = total_error + sz_total_error
|
||||
ret_total_error = 0
|
||||
CALL filters_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Filters test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL szip_test(szip_flag, cleanup, ret_total_error)
|
||||
|
||||
IF (.NOT. szip_flag) THEN ! test not available
|
||||
CALL write_test_status(-1, ' SZIP filter test', total_error)
|
||||
ELSE
|
||||
CALL write_test_status(ret_total_error, ' SZIP filter test', total_error)
|
||||
ENDIF
|
||||
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing GROUP interface '
|
||||
! write(*,*) '========================================='
|
||||
|
||||
error_string = failure
|
||||
CALL group_test(cleanup, group_total_error)
|
||||
IF (group_total_error == 0) error_string = success
|
||||
write(*, fmt = '(11a)', advance = 'no') ' Group test'
|
||||
write(*, fmt = '(59x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + group_total_error
|
||||
ret_total_error = 0
|
||||
CALL group_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Group test', total_error)
|
||||
|
||||
error_string = failure
|
||||
CALL error_report_test(cleanup, error_total_error)
|
||||
IF (error_total_error == 0) error_string = success
|
||||
write(*, fmt = '(11a)', advance = 'no') ' Error test'
|
||||
write(*, fmt = '(59x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + error_total_error
|
||||
ret_total_error = 0
|
||||
CALL error_report_test(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Error test', total_error)
|
||||
|
||||
error_string = failure
|
||||
CALL vl_test_integer(cleanup, vl_total_error)
|
||||
CALL vl_test_real(cleanup, vl_total_error)
|
||||
CALL vl_test_string(cleanup, vl_total_error)
|
||||
IF (vl_total_error == 0) error_string = success
|
||||
write(*, fmt = '(11a)', advance = 'no') ' VL test'
|
||||
write(*, fmt = '(62x,a)', advance = 'no') ' '
|
||||
write(*, fmt = e_format) error_string
|
||||
total_error = total_error + vl_total_error
|
||||
ret_total_error = 0
|
||||
CALL vl_test_integer(cleanup, ret_total_error)
|
||||
CALL vl_test_real(cleanup, ret_total_error)
|
||||
CALL vl_test_string(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' VL test', total_error)
|
||||
|
||||
WRITE(*,*)
|
||||
|
||||
write(*,*)
|
||||
WRITE(*,*) ' ============================================ '
|
||||
WRITE(*, fmt = '(19x, 27a)', advance='NO') ' FORTRAN tests completed with '
|
||||
WRITE(*, fmt = '(i4)', advance='NO') total_error
|
||||
WRITE(*, fmt = '(12a)' ) ' error(s) ! '
|
||||
WRITE(*,*) ' ============================================ '
|
||||
|
||||
CALL h5close_f(error)
|
||||
|
||||
write(*,*) ' ============================================ '
|
||||
write(*, fmt = '(19x, 27a)', advance='NO') ' FORTRAN tests completed with '
|
||||
write(*, fmt = '(i4)', advance='NO') total_error
|
||||
write(*, fmt = '(12a)' ) ' error(s) ! '
|
||||
write(*,*) ' ============================================ '
|
||||
! if errors detected, exit with non-zero code.
|
||||
IF (total_error .NE. 0) CALL h5_exit_f (1)
|
||||
|
||||
CALL h5close_f(error)
|
||||
|
||||
! if errors detected, exit with non-zero code.
|
||||
IF (total_error .ne. 0) CALL h5_exit_f (1)
|
||||
|
||||
END PROGRAM fortranlibtest
|
||||
END PROGRAM fortranlibtest
|
||||
|
||||
|
||||
|
@ -20,16 +20,13 @@
|
||||
PROGRAM fortranlibtest
|
||||
|
||||
USE HDF5
|
||||
USE error_handler
|
||||
|
||||
IMPLICIT NONE
|
||||
INTEGER :: total_error = 0
|
||||
INTEGER :: error
|
||||
INTEGER :: ret_total_error
|
||||
INTEGER :: majnum, minnum, relnum
|
||||
CHARACTER(LEN=8) error_string
|
||||
CHARACTER(LEN=8) :: success = ' PASSED '
|
||||
CHARACTER(LEN=8) :: failure = '*FAILED*'
|
||||
CHARACTER(LEN=4) :: e_format ='(8a)'
|
||||
LOGICAL :: cleanup = .TRUE.
|
||||
! LOGICAL :: cleanup = .FALSE.
|
||||
|
||||
@ -51,69 +48,32 @@ PROGRAM fortranlibtest
|
||||
WRITE(*,*)
|
||||
|
||||
ret_total_error = 0
|
||||
error_string = failure
|
||||
CALL file_space(cleanup, ret_total_error)
|
||||
IF (ret_total_error == 0) error_string = success
|
||||
WRITE(*, fmt = '(21a)', advance = 'no') ' Testing file free space'
|
||||
WRITE(*, fmt = '(52x,a)', advance = 'no') ' '
|
||||
WRITE(*, fmt = e_format) error_string
|
||||
total_error = total_error + ret_total_error
|
||||
! write(*,*)
|
||||
! write(*,*) '========================================='
|
||||
! write(*,*) 'Testing ATTRIBUTE interface '
|
||||
! write(*,*) '========================================='
|
||||
CALL write_test_status(ret_total_error, ' Testing file free space', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
error_string = failure
|
||||
CALL attribute_test_1_8(cleanup, ret_total_error)
|
||||
WRITE(*, fmt = '(15a)', advance = 'no') ' Testing attributes'
|
||||
WRITE(*, fmt = '(57x,a)', advance = 'no') ' '
|
||||
IF (ret_total_error == 0) error_string = success
|
||||
WRITE(*, fmt = e_format) error_string
|
||||
total_error = total_error + ret_total_error
|
||||
CALL write_test_status(ret_total_error, ' Testing attributes', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
error_string = failure
|
||||
CALL group_test(cleanup, ret_total_error)
|
||||
WRITE(*, fmt = '(15a)', advance = 'no') ' Testing groups'
|
||||
WRITE(*, fmt = '(61x,a)', advance = 'no') ' '
|
||||
IF (ret_total_error == 0) error_string = success
|
||||
WRITE(*, fmt = e_format) error_string
|
||||
total_error = total_error + ret_total_error
|
||||
CALL write_test_status(ret_total_error, ' Testing groups', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
error_string = failure
|
||||
CALL test_h5o(cleanup, ret_total_error)
|
||||
WRITE(*, fmt = '(15a)', advance = 'no') ' Testing object interface'
|
||||
WRITE(*, fmt = '(51x,a)', advance = 'no') ' '
|
||||
IF (ret_total_error == 0) error_string = success
|
||||
WRITE(*, fmt = e_format) error_string
|
||||
total_error = total_error + ret_total_error
|
||||
CALL write_test_status(ret_total_error, ' Testing object interface', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
error_string = failure
|
||||
CALL dtransform(cleanup, ret_total_error)
|
||||
WRITE(*, fmt = '(15a)', advance = 'no') ' Testing data transform'
|
||||
WRITE(*, fmt = '(53x,a)', advance = 'no') ' '
|
||||
IF (ret_total_error == 0) error_string = success
|
||||
WRITE(*, fmt = e_format) error_string
|
||||
total_error = total_error + ret_total_error
|
||||
CALL write_test_status(ret_total_error, ' Testing data transform', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
error_string = failure
|
||||
CALL test_genprop_basic_class(cleanup, ret_total_error)
|
||||
WRITE(*, fmt = '(30a)', advance = 'no') ' Testing basic generic properties'
|
||||
WRITE(*, fmt = '(43x,a)', advance = 'no') ' '
|
||||
IF (ret_total_error == 0) error_string = success
|
||||
WRITE(*, fmt = e_format) error_string
|
||||
total_error = total_error + ret_total_error
|
||||
CALL write_test_status(ret_total_error, ' Testing basic generic properties', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_h5s_encode(cleanup, ret_total_error)
|
||||
WRITE(*, fmt = '(15a)', advance = 'no') ' Testing dataspace encoding and decoding'
|
||||
WRITE(*, fmt = '(36x,a)', advance = 'no') ' '
|
||||
IF (ret_total_error == 0) error_string = success
|
||||
WRITE(*, fmt = e_format) error_string
|
||||
total_error = total_error + ret_total_error
|
||||
CALL write_test_status(ret_total_error, ' Testing dataspace encoding and decoding', total_error)
|
||||
|
||||
! CALL test_hard_query(group_total_error)
|
||||
|
||||
|
@ -22,7 +22,8 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error)
|
||||
!
|
||||
|
||||
USE HDF5 ! This module contains all necessary modules
|
||||
|
||||
USE error_handler
|
||||
|
||||
IMPLICIT NONE
|
||||
LOGICAL, INTENT(IN) :: cleanup
|
||||
INTEGER, INTENT(OUT) :: total_error
|
||||
@ -56,6 +57,7 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error)
|
||||
LOGICAL, DIMENSION(1:2) :: new_format = (/.TRUE.,.FALSE./)
|
||||
LOGICAL, DIMENSION(1:2) :: use_shared = (/.TRUE.,.FALSE./)
|
||||
|
||||
INTEGER :: ret_total_error
|
||||
|
||||
! ********************
|
||||
! test_attr equivelent
|
||||
@ -81,14 +83,18 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error)
|
||||
CALL check(" H5Pset_shared_mesg_index_f",error, total_error)
|
||||
|
||||
DO i = 1, 2
|
||||
|
||||
IF (new_format(i)) THEN
|
||||
! WRITE(*,*) " - Testing with new file format"
|
||||
WRITE(*,'(1X,A)') "Testing with new file format:"
|
||||
my_fapl = fapl2
|
||||
ELSE
|
||||
! WRITE(*,*) " - Testing with old file format"
|
||||
WRITE(*,'(1X,A)') "Testing with old file format:"
|
||||
my_fapl = fapl
|
||||
END IF
|
||||
CALL test_attr_basic_write(my_fapl, total_error)
|
||||
ret_total_error = 0
|
||||
CALL test_attr_basic_write(my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' - Tests INT attributes on both datasets and groups', total_error)
|
||||
|
||||
!!$ CALL test_attr_basic_read(my_fapl)
|
||||
!!$ CALL test_attr_flush(my_fapl)
|
||||
!!$ CALL test_attr_plist(my_fapl) ! this is next
|
||||
@ -104,39 +110,76 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error)
|
||||
IF(new_format(i)) THEN
|
||||
DO j = 1, 2
|
||||
IF (use_shared(j)) THEN
|
||||
! WRITE(*,*) " - Testing with shared attributes"
|
||||
WRITE(*,*) " - Testing with shared attributes:"
|
||||
my_fcpl = fcpl2
|
||||
ELSE
|
||||
! WRITE(*,*) " - Testing without shared attributes"
|
||||
WRITE(*,*) " - Testing without shared attributes:"
|
||||
my_fcpl = fcpl
|
||||
END IF
|
||||
!!$ CALL test_attr_dense_create(my_fcpl, my_fapl)
|
||||
CALL test_attr_dense_open(my_fcpl, my_fapl, total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_attr_dense_open(my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, &
|
||||
' - Testing INT attributes on both datasets and groups', total_error)
|
||||
|
||||
!!$ CALL test_attr_dense_delete(my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_dense_rename(my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_dense_unlink(my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_dense_limits(my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_big(my_fcpl, my_fapl)
|
||||
CALL test_attr_null_space(my_fcpl, my_fapl, total_error)
|
||||
ret_total_error = 0
|
||||
CALL test_attr_null_space(my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, &
|
||||
' - Testing storing attribute with "null" dataspace', total_error)
|
||||
!!$ CALL test_attr_deprec(fcpl, my_fapl)
|
||||
CALL test_attr_many(new_format(i), my_fcpl, my_fapl, total_error)
|
||||
CALL test_attr_corder_create_basic(my_fcpl, my_fapl, total_error)
|
||||
CALL test_attr_corder_create_compact(my_fcpl, my_fapl, total_error)
|
||||
ret_total_error = 0
|
||||
CALL test_attr_many(new_format(i), my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' - Testing storing lots of attributes', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_attr_corder_create_basic(my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, &
|
||||
' - Testing creating objects with attribute creation order', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_attr_corder_create_compact(my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, &
|
||||
' - Testing compact storage on objects with attribute creation order', total_error)
|
||||
!!$ CALL test_attr_corder_create_dense(my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_corder_create_reopen(my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_corder_transition(my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_corder_delete(my_fcpl, my_fapl)
|
||||
CALL test_attr_info_by_idx(new_format, my_fcpl, my_fapl, total_error)
|
||||
CALL test_attr_delete_by_idx(new_format, my_fcpl, my_fapl, total_error)
|
||||
ret_total_error = 0
|
||||
CALL test_attr_info_by_idx(new_format, my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, &
|
||||
' - Testing querying attribute info by index', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_attr_delete_by_idx(new_format, my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' - Testing deleting attribute by index', total_error)
|
||||
|
||||
!!$ CALL test_attr_iterate2(new_format, my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_open_by_idx(new_format, my_fcpl, my_fapl)
|
||||
!!$ CALL test_attr_open_by_name(new_format, my_fcpl, my_fapl)
|
||||
CALL test_attr_create_by_name(new_format(i), my_fcpl, my_fapl, total_error)
|
||||
ret_total_error = 0
|
||||
CALL test_attr_create_by_name(new_format(i), my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' - Testing creating attributes by name', total_error)
|
||||
|
||||
! /* More complex tests with both "new format" and "shared" attributes */
|
||||
IF( use_shared(j) ) THEN
|
||||
!!$ CALL test_attr_shared_write(my_fcpl, my_fapl)
|
||||
CALL test_attr_shared_rename(my_fcpl, my_fapl, total_error)
|
||||
CALL test_attr_shared_delete(my_fcpl, my_fapl, total_error)
|
||||
ret_total_error = 0
|
||||
CALL test_attr_shared_rename(my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error,&
|
||||
' - Testing renaming shared attributes in "compact" & "dense" storage', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_attr_shared_delete(my_fcpl, my_fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error,&
|
||||
' - Testing deleting shared attributes in "compact" & "dense" storage', total_error)
|
||||
|
||||
|
||||
!!$ CALL test_attr_shared_unlink(my_fcpl, my_fapl)
|
||||
END IF
|
||||
!!$ CALL test_attr_bug1(my_fcpl, my_fapl)
|
||||
@ -155,7 +198,7 @@ SUBROUTINE attribute_test_1_8(cleanup, total_error)
|
||||
!!$ CALL test_attr_bug1(fcpl, my_fapl)
|
||||
|
||||
END IF
|
||||
END DO
|
||||
ENDDO
|
||||
|
||||
CALL H5Pclose_f(fcpl, error)
|
||||
CALL CHECK("H5Pclose", error,total_error)
|
||||
@ -171,6 +214,13 @@ END SUBROUTINE attribute_test_1_8
|
||||
|
||||
SUBROUTINE test_attr_corder_create_compact(fcpl,fapl, total_error)
|
||||
|
||||
!/****************************************************************
|
||||
!**
|
||||
!** test_attr_corder_create_compact(): Test basic H5A (attribute) code.
|
||||
!** Tests compact attribute storage on objects with attribute creation order info
|
||||
!**
|
||||
!****************************************************************/
|
||||
|
||||
! Needed for get_info_by_name
|
||||
|
||||
USE HDF5 ! This module contains all necessary modules
|
||||
@ -510,6 +560,13 @@ END SUBROUTINE test_attr_null_space
|
||||
|
||||
SUBROUTINE test_attr_create_by_name(new_format,fcpl,fapl, total_error)
|
||||
|
||||
!/****************************************************************
|
||||
!**
|
||||
!** test_attr_create_by_name(): Test basic H5A (attribute) code.
|
||||
!** Tests creating attributes by name
|
||||
!**
|
||||
!****************************************************************/
|
||||
|
||||
USE HDF5
|
||||
|
||||
IMPLICIT NONE
|
||||
@ -762,6 +819,13 @@ END SUBROUTINE test_attr_create_by_name
|
||||
|
||||
SUBROUTINE test_attr_info_by_idx(new_format, fcpl, fapl, total_error)
|
||||
|
||||
!/****************************************************************
|
||||
!**
|
||||
!** test_attr_info_by_idx(): Test basic H5A (attribute) code.
|
||||
!** Tests querying attribute info by index
|
||||
!**
|
||||
!****************************************************************/
|
||||
|
||||
USE HDF5
|
||||
|
||||
IMPLICIT NONE
|
||||
@ -1610,6 +1674,13 @@ END SUBROUTINE test_attr_shared_rename
|
||||
|
||||
SUBROUTINE test_attr_delete_by_idx(new_format, fcpl, fapl, total_error)
|
||||
|
||||
!/****************************************************************
|
||||
!**
|
||||
!** test_attr_delete_by_idx(): Test basic H5A (attribute) code.
|
||||
!** Tests deleting attribute by index
|
||||
!**
|
||||
!****************************************************************/
|
||||
|
||||
USE HDF5
|
||||
|
||||
IMPLICIT NONE
|
||||
|
@ -15,6 +15,7 @@
|
||||
!
|
||||
SUBROUTINE group_test(cleanup, total_error)
|
||||
USE HDF5 ! This module contains all necessary modules
|
||||
USE error_handler
|
||||
|
||||
IMPLICIT NONE
|
||||
LOGICAL, INTENT(IN) :: cleanup
|
||||
@ -22,7 +23,7 @@ SUBROUTINE group_test(cleanup, total_error)
|
||||
|
||||
INTEGER(HID_T) :: fapl, fapl2, my_fapl ! /* File access property lists */
|
||||
|
||||
INTEGER :: error
|
||||
INTEGER :: error, ret_total_error
|
||||
|
||||
! WRITE(*,*) "TESTING GROUPS"
|
||||
CALL H5Pcreate_f(H5P_FILE_ACCESS_F, fapl, error)
|
||||
@ -40,19 +41,42 @@ SUBROUTINE group_test(cleanup, total_error)
|
||||
my_fapl = fapl2
|
||||
|
||||
|
||||
CALL mklinks(fapl2, total_error)
|
||||
CALL cklinks(fapl2, total_error)
|
||||
ret_total_error = 0
|
||||
CALL mklinks(fapl2, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing building a file with assorted links', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL cklinks(fapl2, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing links are correct and building assorted links', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL group_info(cleanup, fapl2, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing create group with creation order indices, test querying group info', total_error)
|
||||
|
||||
CALL group_info(cleanup, fapl2,total_error)
|
||||
! CALL ud_hard_links(fapl2,total_error)
|
||||
CALL timestamps(cleanup, fapl2, total_error)
|
||||
CALL test_move_preserves(fapl2, total_error)
|
||||
CALL delete_by_idx(cleanup,fapl2, total_error)
|
||||
CALL test_lcpl(cleanup, fapl, total_error)
|
||||
ret_total_error = 0
|
||||
CALL timestamps(cleanup, fapl2, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing disabling tracking timestamps for an object', total_error)
|
||||
|
||||
CALL objcopy(fapl, total_error)
|
||||
ret_total_error = 0
|
||||
CALL test_move_preserves(fapl2, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing moving and renaming links preserves their properties', total_error)
|
||||
|
||||
CALL lifecycle(cleanup, fapl2, total_error)
|
||||
ret_total_error = 0
|
||||
CALL delete_by_idx(cleanup,fapl2,ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing deleting links by index', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_lcpl(cleanup, fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing link creation property lists', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL objcopy(fapl, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing object copy', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL lifecycle(cleanup, fapl2, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing adding links to a group follow proper "lifecycle"', total_error)
|
||||
|
||||
IF(cleanup) CALL h5_cleanup_f("TestLinks", H5P_DEFAULT_F, error)
|
||||
CALL check("h5_cleanup_f", error, total_error)
|
||||
|
@ -18,11 +18,56 @@
|
||||
! This file contains subroutines which are used in
|
||||
! all the hdf5 fortran tests
|
||||
!
|
||||
MODULE error_handler
|
||||
|
||||
! Controls the output style for reporting test results
|
||||
|
||||
CHARACTER(LEN=8) :: error_string
|
||||
CHARACTER(LEN=8), PARAMETER :: success = ' PASSED '
|
||||
CHARACTER(LEN=8), PARAMETER :: failure = '*FAILED*'
|
||||
CHARACTER(LEN=8), PARAMETER :: skip = '--SKIP--'
|
||||
CHARACTER(LEN=4), PARAMETER :: e_format ='(8a)'
|
||||
|
||||
CONTAINS
|
||||
|
||||
!This definition is needed for Windows DLLs
|
||||
!DEC$if defined(BUILD_HDF5_DLL)
|
||||
!DEC$attributes dllexport :: write_test_status
|
||||
!DEC$endif
|
||||
SUBROUTINE write_test_status( test_result, test_title, total_error)
|
||||
|
||||
! Writes the results of the tests
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
INTEGER, INTENT(IN) :: test_result ! negative, --skip --
|
||||
! 0 , passed
|
||||
! positive, failed
|
||||
|
||||
CHARACTER(LEN=*), INTENT(IN) :: test_title ! Short description of test
|
||||
INTEGER, INTENT(INOUT) :: total_error ! Accumulated error
|
||||
|
||||
error_string = failure
|
||||
IF (test_result == 0) THEN
|
||||
error_string = success
|
||||
ELSE IF (test_result == -1) THEN
|
||||
error_string = skip
|
||||
ENDIF
|
||||
|
||||
WRITE(*, fmt = '(A,T72)', advance = 'no') test_title
|
||||
WRITE(*, fmt = e_format) error_string
|
||||
|
||||
IF(test_result.GT.0) total_error = total_error + test_result
|
||||
|
||||
END SUBROUTINE write_test_status
|
||||
|
||||
END MODULE error_handler
|
||||
|
||||
|
||||
!This definition is needed for Windows DLLs
|
||||
!DEC$if defined(BUILD_HDF5_DLL)
|
||||
!DEC$attributes dllexport :: check
|
||||
!DEC$endif
|
||||
|
||||
SUBROUTINE check(string,error,total_error)
|
||||
CHARACTER(LEN=*) :: string
|
||||
INTEGER :: error, total_error
|
||||
|
Loading…
Reference in New Issue
Block a user