diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 838a3f56a..16c970759 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -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') diff --git a/fpm.toml b/fpm.toml index 605d4de22..6d5543f9b 100644 --- a/fpm.toml +++ b/fpm.toml @@ -256,4 +256,9 @@ main = "jf_test_48.F90" [[test]] name = "jf_test_49" source-dir = "src/tests" -main = "jf_test_49.F90" \ No newline at end of file +main = "jf_test_49.F90" + +[[test]] +name = "jf_test_50" +source-dir = "src/tests" +main = "jf_test_50.F90" \ No newline at end of file diff --git a/src/tests/jf_test_50.F90 b/src/tests/jf_test_50.F90 new file mode 100644 index 000000000..f2742de9b --- /dev/null +++ b/src/tests/jf_test_50.F90 @@ -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 +!***************************************************************************************** + diff --git a/visual_studio/jsonfortrantest/jsonfortrantest.vfproj b/visual_studio/jsonfortrantest/jsonfortrantest.vfproj index 9eda34b59..f3474f95d 100644 --- a/visual_studio/jsonfortrantest/jsonfortrantest.vfproj +++ b/visual_studio/jsonfortrantest/jsonfortrantest.vfproj @@ -95,5 +95,6 @@ +