Skip to content

Commit

Permalink
Merge pull request #547 from jacobwilliams/546-example
Browse files Browse the repository at this point in the history
added a new test
  • Loading branch information
jacobwilliams authored May 25, 2024
2 parents fff5372 + 1f01ab1 commit de3c062
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 6 deletions.
11 changes: 6 additions & 5 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,27 @@ jobs:

- name: Set vars
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
# run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} # this is depreciated: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
run: echo "name=tag::${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT

- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4.1.6
with:
submodules: recursive

- name: Setup cmake
if: contains( matrix.gcc_v, 9 )
uses: jwlawson/actions-setup-cmake@v1.13
uses: jwlawson/actions-setup-cmake@v2.0.2
with:
cmake-version: '3.19.x'

- name: Install Python
uses: actions/setup-python@v4 # Use pip to install latest CMake, & FORD/Jin2For, etc.
uses: actions/setup-python@v5.1.0 # Use pip to install latest CMake, & FORD/Jin2For, etc.
with:
python-version: ${{ matrix.python-version }}

- name: Setup Graphviz
uses: ts-graphviz/setup-graphviz@v1
uses: ts-graphviz/setup-graphviz@v2.0.2

- name: Install Python dependencies
if: contains( matrix.os, 'ubuntu')
Expand Down
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, CK_'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 de3c062

Please sign in to comment.