subroutine ESMF_TestEnd(file, line, unit)
! !ARGUMENTS:
character(*), intent(in) :: file ! test file name
integer, intent(in) :: line ! test file line number
integer, intent(in), optional :: unit ! additional output unit number
! !DESCRIPTION:
! Prints a standard message; intended to be called at the end of any
! test code. If {\tt unit}
! is specified, will in addition write the same message to that
! Fortran unit number.
!
!EOP
!-------------------------------------------------------------------------------
integer :: rc, localrc
character(ESMF_MAXSTR) :: msg
real(ESMF_KIND_R8) :: end_time, elapsed_time
character(16) :: linestr
write (linestr,*) line
linestr = adjustl (linestr)
write(msg, *) "Ending Test, file ", trim(file), ", line ", trim (linestr)
print *, trim(msg)
call ESMF_LogWrite(trim(msg), ESMF_LOGMSG_INFO)
if (present(unit)) write(unit, *) trim(msg)
call ESMF_Finalize(rc=rc)
if (rc .ne. ESMF_SUCCESS) then
write(msg, *) "Failure in Finalizing ESMF"
print *, trim(msg)
call ESMF_LogWrite(trim(msg), ESMF_LOGMSG_INFO)
if (present(unit)) write(unit, *) trim(msg)
endif
! Calculate & print out test elasped time
call cpu_time(end_time)
elapsed_time = (end_time-start_time) * 1000.0 ! msec
write(msg, *) "PET", PETnum, " Test Elapsed Time ", elapsed_time, " msec."
print *, trim(msg)
end subroutine ESMF_TestEnd