Skip to content

Commit 7933e52

Browse files
committed
Add additional closed file tests.
1 parent f46c098 commit 7933e52

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed

test/unit/fortran/src/mock_routines/test_pio_reader.pf

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,138 @@ subroutine test_pio_reader_int_get_var_file_not_opened_err()
792792

793793
end subroutine test_pio_reader_int_get_var_file_not_opened_err
794794

795+
!----------------------------------------
796+
797+
@test
798+
subroutine test_pio_reader_char_get_var_file_not_opened_err()
799+
! Check that the PIO reader raises the correct error
800+
! when attempting to read a character variable from
801+
! a file that is not opened.
802+
803+
use funit
804+
805+
use ccpp_io_reader, only: abstract_netcdf_reader_t
806+
use ccpp_io_reader, only: create_netcdf_reader_t
807+
808+
class(abstract_netcdf_reader_t), allocatable :: reader
809+
810+
integer :: errcode
811+
character(len=256) :: errmsg
812+
813+
!Variable to be read:
814+
character(len=:), pointer :: gas_names(:)
815+
816+
! Expected error message:
817+
character(len=*), parameter :: expected_err_msg = &
818+
"File 'UNSET' is not open, need to call 'open_file' first."
819+
820+
! Begin test:
821+
822+
reader = create_netcdf_reader_t()
823+
824+
! Attempt to read variable without opening file:
825+
call reader%get_var("gas_names", gas_names, errmsg, errcode)
826+
827+
! Check that the correct error was raised:
828+
@assertTrue(errcode /= 0)
829+
@assertTrue(trim(errmsg) == expected_err_msg)
830+
831+
! Perform test cleanup:
832+
deallocate(reader)
833+
end subroutine test_pio_reader_char_get_var_file_not_opened_err
834+
835+
!----------------------------------------
836+
837+
@test
838+
subroutine test_pio_reader_real_get_var_file_not_opened_err()
839+
! Check that the PIO reader raises the correct error
840+
! when attempting to read a character variable from
841+
! a file that is not opened.
842+
843+
use funit
844+
845+
use ccpp_io_reader, only: abstract_netcdf_reader_t
846+
use ccpp_io_reader, only: create_netcdf_reader_t
847+
848+
class(abstract_netcdf_reader_t), allocatable :: reader
849+
850+
integer :: errcode
851+
character(len=256) :: errmsg
852+
853+
!Variable to be read:
854+
real(kind_phys), pointer :: press_ref(:)
855+
856+
! Expected error message:
857+
character(len=*), parameter :: expected_err_msg = &
858+
"File 'UNSET' is not open, need to call 'open_file' first."
859+
860+
! Begin test:
861+
862+
reader = create_netcdf_reader_t()
863+
864+
! Attempt to read variable without opening file:
865+
call reader%get_var("press_ref", press_ref, errmsg, errcode)
866+
867+
! Check that the correct error was raised:
868+
@assertTrue(errcode /= 0)
869+
@assertTrue(trim(errmsg) == expected_err_msg)
870+
871+
! Perform test cleanup:
872+
deallocate(reader)
873+
end subroutine test_pio_reader_real_get_var_file_not_opened_err
874+
875+
!----------------------------------------
876+
877+
subroutine test_pio_reader_get_var_open_close_err()
878+
! Check that the PIO reader raises the correct error
879+
! when attempting to read a variable from a file
880+
! that is opened and closed before attempting to read
881+
! the variable.
882+
883+
! NOTE: This behavior will be the same for all variable types,
884+
! so we only need to test it once.
885+
886+
use funit
887+
888+
use ccpp_io_reader, only: abstract_netcdf_reader_t
889+
use ccpp_io_reader, only: create_netcdf_reader_t
890+
891+
class(abstract_netcdf_reader_t), allocatable :: reader
892+
893+
integer :: errcode
894+
character(len=256) :: errmsg
895+
896+
!Variable to be read:
897+
integer, pointer :: pressure(:)
898+
899+
character(len=*), parameter :: fname = &
900+
"../../../rrtmgp-data/rrtmgp-gas-sw-g112.nc"
901+
902+
! Expected error message:
903+
character(len=*), parameter :: expected_err_msg = &
904+
"File '"//fname//"' is not open, need to call 'open_file' first."
905+
906+
! Begin test:
907+
908+
reader = create_netcdf_reader_t()
909+
910+
! Open file:
911+
call reader%open_file(fname, errmsg, errcode)
912+
913+
! Close file:
914+
call reader%close_file(errmsg, errcode)
915+
916+
! Attempt to read variable after closing file:
917+
call reader%get_var("pressure", pressure, errmsg, errcode)
918+
919+
! Check that the correct error was raised:
920+
@assertTrue(errcode /= 0)
921+
@assertTrue(trim(errmsg) == expected_err_msg)
922+
923+
! Perform test cleanup:
924+
deallocate(reader)
925+
926+
end subroutine test_pio_reader_get_var_open_close_err
795927

796928
!-----------------------------------------
797929

0 commit comments

Comments
 (0)