julienne_test_s.F90 Source File


This file depends on

sourcefile~~julienne_test_s.f90~~EfferentGraph sourcefile~julienne_test_s.f90 julienne_test_s.F90 sourcefile~julienne_test_description_m.f90 julienne_test_description_m.f90 sourcefile~julienne_test_s.f90->sourcefile~julienne_test_description_m.f90 sourcefile~julienne_test_m.f90 julienne_test_m.F90 sourcefile~julienne_test_s.f90->sourcefile~julienne_test_m.f90 sourcefile~julienne_string_m.f90 julienne_string_m.F90 sourcefile~julienne_test_description_m.f90->sourcefile~julienne_string_m.f90 sourcefile~julienne_test_diagnosis_m.f90 julienne_test_diagnosis_m.F90 sourcefile~julienne_test_description_m.f90->sourcefile~julienne_test_diagnosis_m.f90 sourcefile~julienne_test_result_m.f90 julienne_test_result_m.f90 sourcefile~julienne_test_description_m.f90->sourcefile~julienne_test_result_m.f90 sourcefile~julienne_test_m.f90->sourcefile~julienne_test_description_m.f90 sourcefile~julienne_command_line_m.f90 julienne_command_line_m.f90 sourcefile~julienne_test_m.f90->sourcefile~julienne_command_line_m.f90 sourcefile~julienne_test_m.f90->sourcefile~julienne_test_result_m.f90 sourcefile~julienne_test_diagnosis_m.f90->sourcefile~julienne_string_m.f90 sourcefile~julienne_test_result_m.f90->sourcefile~julienne_string_m.f90 sourcefile~julienne_test_result_m.f90->sourcefile~julienne_test_diagnosis_m.f90

Source Code

! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute
! Terms of use are as specified in LICENSE.txt

#include "language-support.F90"

submodule(julienne_test_m) julienne_test_s
  use julienne_test_description_m, only : filter
  implicit none

contains

#if __GNUC__ && ( __GNUC__ > 13)

  module procedure run
    associate(matching_descriptions => filter(test_descriptions, test%subject()))
      test_results = matching_descriptions%run()
    end associate
  end procedure

#else

  module procedure run
    type(test_description_t), allocatable :: matching_descriptions(:)
    matching_descriptions = filter(test_descriptions, test%subject())
    test_results = matching_descriptions%run()
  end procedure

#endif

  module procedure report

    integer t
    logical, allocatable :: passing_tests(:), skipped_tests(:)

#if HAVE_MULTI_IMAGE_SUPPORT
    associate(me => this_image())
#else
    associate(me => 1)
#endif
      if (me==1) print '(a)', new_line('') // test%subject()

      associate(test_results =>  test%results())

        passing_tests = test_results%passed()
        skipped_tests = test_results%skipped()

        associate(num_tests => size(test_results))

          do t = 1, num_tests
            call test_results(t)%co_characterize()
          end do

          tests = tests + num_tests

          associate(num_passes => count(passing_tests), num_skipped => count(skipped_tests))
            if (me==1) print '(*(a,:,i0))', " ", num_passes, " of ", num_tests, " tests passed. ", num_skipped, " tests were skipped."
            passes = passes + num_passes
            skips  = skips  + num_skipped
          end associate
        end associate
      end associate
    end associate
  end procedure

end submodule julienne_test_s