julienne_test_harness_m.f90 Source File


This file depends on

sourcefile~~julienne_test_harness_m.f90~~EfferentGraph sourcefile~julienne_test_harness_m.f90 julienne_test_harness_m.f90 sourcefile~julienne_test_fixture_m.f90 julienne_test_fixture_m.f90 sourcefile~julienne_test_harness_m.f90->sourcefile~julienne_test_fixture_m.f90 sourcefile~julienne_test_m.f90 julienne_test_m.F90 sourcefile~julienne_test_fixture_m.f90->sourcefile~julienne_test_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_description_m.f90 julienne_test_description_m.f90 sourcefile~julienne_test_m.f90->sourcefile~julienne_test_description_m.f90 sourcefile~julienne_test_result_m.f90 julienne_test_result_m.f90 sourcefile~julienne_test_m.f90->sourcefile~julienne_test_result_m.f90 sourcefile~julienne_user_defined_collectives_m.f90 julienne_user_defined_collectives_m.f90 sourcefile~julienne_test_m.f90->sourcefile~julienne_user_defined_collectives_m.f90 sourcefile~julienne_test_description_m.f90->sourcefile~julienne_test_result_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->sourcefile~julienne_string_m.f90 sourcefile~julienne_test_result_m.f90->sourcefile~julienne_test_diagnosis_m.f90 sourcefile~julienne_test_diagnosis_m.f90->sourcefile~julienne_string_m.f90

Files dependent on this one

sourcefile~~julienne_test_harness_m.f90~~AfferentGraph sourcefile~julienne_test_harness_m.f90 julienne_test_harness_m.f90 sourcefile~julienne_m.f90 julienne_m.f90 sourcefile~julienne_m.f90->sourcefile~julienne_test_harness_m.f90 sourcefile~julienne_test_harness_s.f90 julienne_test_harness_s.F90 sourcefile~julienne_test_harness_s.f90->sourcefile~julienne_test_harness_m.f90 sourcefile~assertions.f90 assertions.F90 sourcefile~assertions.f90->sourcefile~julienne_m.f90 sourcefile~check-for-command-line-argument.f90 check-for-command-line-argument.f90 sourcefile~check-for-command-line-argument.f90->sourcefile~julienne_m.f90 sourcefile~get-command-line-flag-value.f90 get-command-line-flag-value.f90 sourcefile~get-command-line-flag-value.f90->sourcefile~julienne_m.f90 sourcefile~julienne_test_suite_s.f90 julienne_test_suite_s.F90 sourcefile~julienne_test_suite_s.f90->sourcefile~julienne_m.f90 sourcefile~scaffold.f90 scaffold.F90 sourcefile~scaffold.f90->sourcefile~julienne_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

module julienne_test_harness_m
  !! Define a test harness encapsulating an array of text fixtures, each of which can run a set of tests.
  use julienne_test_fixture_m, only : test_fixture_t

  implicit none

  private
  public :: test_harness_t

  type test_harness_t
    !! Encapsulate a set of test fixtures, each of which can run a set of tests.
    private
    type(test_fixture_t), allocatable :: test_fixture_(:)
  contains
    procedure report_results
  end type

  interface test_harness_t

    module function component_constructor(test_fixtures) result(test_harness) ! can be pure in Fortran 2028
      !! Component-wise user-defined structure constructor
      class(test_fixture_t) test_fixtures(:)
      type(test_harness_t) test_harness
    end function

  end interface

  interface

    module subroutine report_results(self)
      !! If command line includes -h or --help, print usage information and stop.
      !! Otherwise, run tests and print results, including diagnostics for any failures.
      !! Also, tally and print the numbers of passing tests, total tests, skipped tests.
      implicit none
      class(test_harness_t), intent(in) :: self
    end subroutine

  end interface

end module julienne_test_harness_m