Skip to content

Commit

Permalink
added a new test
Browse files Browse the repository at this point in the history
Fixes #546
  • Loading branch information
jacobwilliams committed Nov 18, 2023
1 parent 7819919 commit e13e088
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 1 deletion.
7 changes: 6 additions & 1 deletion fpm.toml
Original file line number Diff line number Diff line change
Expand Up @@ -256,4 +256,9 @@ main = "jf_test_48.F90"
[[test]]
name = "jf_test_49"
source-dir = "src/tests"
main = "jf_test_49.F90"
main = "jf_test_49.F90"

[[test]]
name = "jf_test_50"
source-dir = "src/tests"
main = "jf_test_50.F90"
94 changes: 94 additions & 0 deletions src/tests/jf_test_50.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
!*****************************************************************************************
!>
! Module for the 50th unit test. See Issue #546.

module jf_test_50_mod

use json_module, wp => json_RK, IK => json_IK, LK => json_LK, CK => json_CK
use, intrinsic :: iso_fortran_env , only: error_unit, output_unit

implicit none

private
public :: test_50

contains

subroutine test_50(error_cnt)

!! 50th unit test. see Issue #546

integer,intent(out) :: error_cnt

real(wp),dimension(6,6),parameter :: pcir = reshape(&
[0.00_wp, 0.35_wp, 0.15_wp, 0.00_wp, 0.50_wp, 0.00_wp, & ! these are the columns
1.00_wp, 0.00_wp, 0.00_wp, 0.25_wp, 0.00_wp, 0.00_wp, &
0.00_wp, 0.00_wp, 0.00_wp, 1.00_wp, 0.00_wp, 0.00_wp, &
0.00_wp, 0.90_wp, 0.55_wp, 0.00_wp, 0.00_wp, 0.90_wp, &
0.00_wp, 0.00_wp, 0.30_wp, 0.00_wp, 0.00_wp, 0.70_wp, &
0.00_wp, 0.00_wp, 0.00_wp, 1.10_wp, 0.50_wp, 0.00_wp], [6,6])

type(json_core) :: json
type(json_value),pointer :: p

call json%initialize(compress_vectors = .true.) ! so it will print each col on one line

call json%create_object(p,'') !create the root
call json_value_add_real_vec_2d(json, p, 'Pcir', pcir, by_col=.true.)
call json%print(p)

error_cnt = 0

end subroutine test_50

subroutine json_value_add_real_vec_2d(json, p, name, val, by_col)

implicit none

class(json_core),intent(inout) :: json
type(json_value),pointer :: p
character(kind=CK,len=*),intent(in) :: name !! name of the variable
real(wp),dimension(:,:),intent(in) :: val !! value
logical,intent(in) :: by_col !! if true, write by column. if false, write by row

type(json_value),pointer :: var
integer(IK) :: i !! counter

!create a variable as an array:
call json%create_array(var,name)

!populate as an array of arrays:
if (by_col) then
do i=1,size(val,2)
call json%add(var, CK_'', val(:,i))
end do
else
do i=1,size(val,1)
call json%add(var, CK_'', val(i,:))
end do
end if

!add it:
call json%add(p, var)

end subroutine json_value_add_real_vec_2d

end module jf_test_50_mod
!*****************************************************************************************

!*****************************************************************************************
#ifndef INTEGRATED_TESTS
program jf_test_50

use jf_test_50_mod , only: test_50

implicit none
integer :: n_errors

call test_50(n_errors)
if (n_errors /= 0) stop 1

end program jf_test_50
#endif
!*****************************************************************************************

1 change: 1 addition & 0 deletions visual_studio/jsonfortrantest/jsonfortrantest.vfproj
Original file line number Diff line number Diff line change
Expand Up @@ -95,5 +95,6 @@
<File RelativePath="..\..\src\tests\jf_test_47.F90"/>
<File RelativePath="..\..\src\tests\jf_test_48.F90"/>
<File RelativePath="..\..\src\tests\jf_test_49.F90"/>
<File RelativePath="..\..\src\tests\jf_test_50.F90"/>
<File RelativePath=".\jsonfortrantest.f90"/></Filter></Files>
<Globals/></VisualStudioProject>

0 comments on commit e13e088

Please sign in to comment.