diff options
author | Scot Breitenfeld <brtnfld@hdfgroup.org> | 2008-05-21 15:02:24 (GMT) |
---|---|---|
committer | Scot Breitenfeld <brtnfld@hdfgroup.org> | 2008-05-21 15:02:24 (GMT) |
commit | fcf8a9a2cbdca2dd8e8a7af51961ad9b0729c380 (patch) | |
tree | 1c6911ba828f6e4c729f7ea65be0d96dc3d9d49c | |
parent | 0c40ae2d42f935dcc2d8eed01a4c0e877417ef90 (diff) | |
download | hdf5-fcf8a9a2cbdca2dd8e8a7af51961ad9b0729c380.zip hdf5-fcf8a9a2cbdca2dd8e8a7af51961ad9b0729c380.tar.gz hdf5-fcf8a9a2cbdca2dd8e8a7af51961ad9b0729c380.tar.bz2 |
[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.
-rw-r--r-- | fortran/test/Makefile.am | 9 | ||||
-rw-r--r-- | fortran/test/Makefile.in | 9 | ||||
-rw-r--r-- | fortran/test/fortranlib_test.f90 | 405 | ||||
-rw-r--r-- | fortran/test/fortranlib_test_1_8.f90 | 58 | ||||
-rw-r--r-- | fortran/test/tH5A_1_8.f90 | 105 | ||||
-rw-r--r-- | fortran/test/tH5G_1_8.f90 | 44 | ||||
-rw-r--r-- | fortran/test/tf.f90 | 47 |
7 files changed, 341 insertions, 336 deletions
diff --git a/fortran/test/Makefile.am b/fortran/test/Makefile.am index 7d619d9..6fbbfb3 100644 --- a/fortran/test/Makefile.am +++ b/fortran/test/Makefile.am @@ -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 diff --git a/fortran/test/Makefile.in b/fortran/test/Makefile.in index 43f713b..e313325 100644 --- a/fortran/test/Makefile.in +++ b/fortran/test/Makefile.in @@ -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) diff --git a/fortran/test/fortranlib_test.f90 b/fortran/test/fortranlib_test.f90 index c3abf51..b82b3fe 100644 --- a/fortran/test/fortranlib_test.f90 +++ b/fortran/test/fortranlib_test.f90 @@ -17,323 +17,210 @@ ! ! Testing Fortran functionality. ! - PROGRAM fortranlibtest - - USE HDF5 - - 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(*,*) +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 + + 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(*,*) ! 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 - - 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_basic_select(cleanup, ret_total_error) + CALL write_test_status(ret_total_error, ' Basic selection test', 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 - - 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 + 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) + ! 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 - - 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 + 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) + ! 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 - - 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 identifier_test(cleanup, ret_total_error) + CALL write_test_status(ret_total_error, ' Identifier test', 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 - - 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 - - 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 - - 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) - - ! if errors detected, exit with non-zero code. - IF (total_error .ne. 0) CALL h5_exit_f (1) - - END PROGRAM fortranlibtest + ret_total_error = 0 + CALL group_test(cleanup, ret_total_error) + CALL write_test_status(ret_total_error, ' Group test', 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) + + 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(*, 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) + + ! if errors detected, exit with non-zero code. + IF (total_error .NE. 0) CALL h5_exit_f (1) + +END PROGRAM fortranlibtest diff --git a/fortran/test/fortranlib_test_1_8.f90 b/fortran/test/fortranlib_test_1_8.f90 index ac87272..30d69d7 100644 --- a/fortran/test/fortranlib_test_1_8.f90 +++ b/fortran/test/fortranlib_test_1_8.f90 @@ -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) diff --git a/fortran/test/tH5A_1_8.f90 b/fortran/test/tH5A_1_8.f90 index cbd1840..65064ad 100644 --- a/fortran/test/tH5A_1_8.f90 +++ b/fortran/test/tH5A_1_8.f90 @@ -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 diff --git a/fortran/test/tH5G_1_8.f90 b/fortran/test/tH5G_1_8.f90 index 4639731..65c2a29 100644 --- a/fortran/test/tH5G_1_8.f90 +++ b/fortran/test/tH5G_1_8.f90 @@ -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) + + 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) + + 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) - CALL objcopy(fapl, total_error) + ret_total_error = 0 + CALL objcopy(fapl, ret_total_error) + CALL write_test_status(ret_total_error, ' Testing object copy', total_error) - CALL lifecycle(cleanup, fapl2, 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) diff --git a/fortran/test/tf.f90 b/fortran/test/tf.f90 index 1cbac24..b69152e 100644 --- a/fortran/test/tf.f90 +++ b/fortran/test/tf.f90 @@ -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 :: check +!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 |