!***************************************************************************************** !> author: Jacob Williams ! date: 10/28/2015 ! ! Module for the 15th unit test. ! This one is testing a lot of the error conditions. module jf_test_15_mod use json_module, CK => json_CK use, intrinsic :: iso_fortran_env , only: error_unit,output_unit,wp=>real64 implicit none contains subroutine test_15(error_cnt) !! Test some of the edge cases, and incorrect usages. implicit none integer,intent(out) :: error_cnt !! report number of errors to caller type(json_core) :: json type(json_value),pointer :: p,p2 type(json_file) :: file1, file2 logical :: found,status_ok integer :: var_type,i,n_children real(wp) :: d logical :: tf character(kind=CK,len=:),allocatable :: error_msg write(error_unit,'(A)') '' write(error_unit,'(A)') '=================================' write(error_unit,'(A)') ' TEST 15' write(error_unit,'(A)') '=================================' write(error_unit,'(A)') '' error_cnt = 0 nullify(p2) nullify(p) call json%parse(p2, '{"int": 1, "real": 2.0, "logical": true}') call json%get(p2,'real', i) call json%get(p2,'logical',i) call json%get(p2,'integer',d) call json%get(p2,'logical',d) call json%get(p2,'integer',tf) call json%get(p2,'real', tf) call json%check_for_errors(status_ok, error_msg) !error condition true call json%initialize(print_signs=.true.) !print signs flag call json%check_for_errors(status_ok, error_msg) !error condition false call file1%move(file2) !should throw an exception since points are not associated call file1%initialize() call file1%print_file(-1) !invalid input call file1%initialize() call file1%print_file(filename='') !invalid filename call file1%initialize() call file1%info('this path does not exist',found,var_type,n_children) call file1%initialize() call file1%check_for_errors(status_ok,error_msg) call file1%clear_exceptions() call file1%destroy() file1 = json_file(p2,json) !constructor call file1%destroy(destroy_core=.true.) call json%initialize( verbose=.false.,& compact_reals=.true.,& print_signs=.false.,& real_format='E',& spaces_per_tab=4,& strict_type_checking=.true.,& trailing_spaces_significant=.false.,& case_sensitive_keys=.true.) call json%get_child(p2,-99,p) !invalid index call json%initialize() !clear exceptions call json%get_child(p2,'this child does not exist',p) !invalid index call json%initialize() !clear exceptions call json%print(p2,-1) !invalid input call json%initialize() !clear exceptions call json%print(p2,filename='') !invalid input call json%initialize() !clear exceptions end subroutine test_15 end module jf_test_15_mod !***************************************************************************************** !***************************************************************************************** program jf_test_15 !! 15th unit test. use jf_test_15_mod, only: test_15 implicit none integer :: n_errors call test_15(n_errors) if ( n_errors /= 0) stop 1 end program jf_test_15 !*****************************************************************************************