julienne_test_diagnosis_m Module

Define abstractions, defined operations, and procedures for writing correctness checks in the form of assertions and tests.


Uses

  • module~~julienne_test_diagnosis_m~~UsesGraph module~julienne_test_diagnosis_m julienne_test_diagnosis_m module~julienne_string_m julienne_string_m module~julienne_test_diagnosis_m->module~julienne_string_m iso_c_binding iso_c_binding module~julienne_string_m->iso_c_binding

Used by

  • module~~julienne_test_diagnosis_m~~UsedByGraph module~julienne_test_diagnosis_m julienne_test_diagnosis_m module~julienne_m julienne_m module~julienne_m->module~julienne_test_diagnosis_m module~julienne_test_description_m julienne_test_description_m module~julienne_m->module~julienne_test_description_m module~julienne_test_result_m julienne_test_result_m module~julienne_m->module~julienne_test_result_m module~julienne_vector_test_description_m julienne_vector_test_description_m module~julienne_m->module~julienne_vector_test_description_m module~julienne_test_m julienne_test_m module~julienne_m->module~julienne_test_m module~julienne_test_description_m->module~julienne_test_diagnosis_m module~julienne_test_description_m->module~julienne_test_result_m module~julienne_test_diagnosis_s julienne_test_diagnosis_s module~julienne_test_diagnosis_s->module~julienne_test_diagnosis_m module~julienne_test_result_m->module~julienne_test_diagnosis_m module~julienne_vector_test_description_m->module~julienne_test_diagnosis_m module~julienne_vector_test_description_m->module~julienne_test_result_m module~julienne_test_description_s julienne_test_description_s module~julienne_test_description_s->module~julienne_test_description_m module~julienne_test_m->module~julienne_test_result_m module~julienne_test_result_s julienne_test_result_s module~julienne_test_result_s->module~julienne_test_result_m module~julienne_vector_test_description_s julienne_vector_test_description_s module~julienne_vector_test_description_s->module~julienne_vector_test_description_m program~assertions assertions program~assertions->module~julienne_m program~check_for_command_line_argument check_for_command_line_argument program~check_for_command_line_argument->module~julienne_m program~get_command_line_flag_value get_command_line_flag_value program~get_command_line_flag_value->module~julienne_m module~julienne_test_s julienne_test_s module~julienne_test_s->module~julienne_test_m

Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: default_real = kind(1.)
integer, private, parameter :: double_precision = kind(1D0)

Interfaces

public interface call_julienne_assert_

  • private pure module subroutine julienne_assert(test_diagnosis, file, line)

    Use cases: 1. When invoked via the generic interface, the preprocessor passes the 'file' and 'line' dummy arguments automatically. 2. When invoked directly, there is 1 argument: an expression containing defined operations such as 1 .equalsExpected. 1

    Arguments

    Type IntentOptional Attributes Name
    type(test_diagnosis_t), intent(in) :: test_diagnosis
    character(len=*), intent(in), optional :: file
    integer, intent(in), optional :: line

public interface operator(.all.)

public interface operator(.and.)

public interface operator(.approximates.)

  • private elemental module function approximates_double_precision(actual, expected) result(operands)

    Arguments

    Type IntentOptional Attributes Name
    double precision, intent(in) :: actual
    double precision, intent(in) :: expected

    Return Value type(operands_t(double_precision))

  • private elemental module function approximates_real(actual, expected) result(operands)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: actual
    real, intent(in) :: expected

    Return Value type(operands_t)

public interface operator(.equalsExpected.)

  • private elemental module function equals_expected_integer(actual, expected) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: actual
    integer, intent(in) :: expected

    Return Value type(test_diagnosis_t)

public interface operator(.greaterThan.)

  • private elemental module function greater_than_double(actual, expected_floor) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    double precision, intent(in) :: actual
    double precision, intent(in) :: expected_floor

    Return Value type(test_diagnosis_t)

  • private elemental module function greater_than_integer(actual, expected_floor) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: actual
    integer, intent(in) :: expected_floor

    Return Value type(test_diagnosis_t)

  • private elemental module function greater_than_real(actual, expected_floor) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: actual
    real, intent(in) :: expected_floor

    Return Value type(test_diagnosis_t)

  • private elemental module function greater_than_or_equal_to_double_precision(actual, expected_min) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    double precision, intent(in) :: actual
    double precision, intent(in) :: expected_min

    Return Value type(test_diagnosis_t)

  • private elemental module function greater_than_or_equal_to_integer(actual, expected_min) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: actual
    integer, intent(in) :: expected_min

    Return Value type(test_diagnosis_t)

  • private elemental module function greater_than_or_equal_to_real(actual, expected_min) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: actual
    real, intent(in) :: expected_min

    Return Value type(test_diagnosis_t)

public interface operator(.isAtLeast.)

  • private elemental module function greater_than_or_equal_to_integer(actual, expected_min) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: actual
    integer, intent(in) :: expected_min

    Return Value type(test_diagnosis_t)

  • private elemental module function greater_than_or_equal_to_real(actual, expected_min) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: actual
    real, intent(in) :: expected_min

    Return Value type(test_diagnosis_t)

  • private elemental module function greater_than_or_equal_to_double_precision(actual, expected_min) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    double precision, intent(in) :: actual
    double precision, intent(in) :: expected_min

    Return Value type(test_diagnosis_t)

public interface operator(.isAtMost.)

  • private elemental module function less_than_or_equal_to_integer(actual, expected_max) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: actual
    integer, intent(in) :: expected_max

    Return Value type(test_diagnosis_t)

  • private elemental module function less_than_or_equal_to_real(actual, expected_max) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: actual
    real, intent(in) :: expected_max

    Return Value type(test_diagnosis_t)

  • private elemental module function less_than_or_equal_to_double_precision(actual, expected_max) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    double precision, intent(in) :: actual
    double precision, intent(in) :: expected_max

    Return Value type(test_diagnosis_t)

public interface operator(.lessThan.)

  • private elemental module function less_than_double(actual, expected_ceiling) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    double precision, intent(in) :: actual
    double precision, intent(in) :: expected_ceiling

    Return Value type(test_diagnosis_t)

  • private elemental module function less_than_integer(actual, expected_ceiling) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: actual
    integer, intent(in) :: expected_ceiling

    Return Value type(test_diagnosis_t)

  • private elemental module function less_than_real(actual, expected_ceiling) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: actual
    real, intent(in) :: expected_ceiling

    Return Value type(test_diagnosis_t)

  • private elemental module function less_than_or_equal_to_double_precision(actual, expected_max) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    double precision, intent(in) :: actual
    double precision, intent(in) :: expected_max

    Return Value type(test_diagnosis_t)

  • private elemental module function less_than_or_equal_to_integer(actual, expected_max) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: actual
    integer, intent(in) :: expected_max

    Return Value type(test_diagnosis_t)

  • private elemental module function less_than_or_equal_to_real(actual, expected_max) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: actual
    real, intent(in) :: expected_max

    Return Value type(test_diagnosis_t)

public interface operator(.within.)

  • private elemental module function within_double_precision(operands, tolerance) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    type(operands_t(double_precision)), intent(in) :: operands
    double precision, intent(in) :: tolerance

    Return Value type(test_diagnosis_t)

  • private elemental module function within_real(operands, tolerance) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    type(operands_t), intent(in) :: operands
    real, intent(in) :: tolerance

    Return Value type(test_diagnosis_t)

public interface operator(.withinFraction.)

  • private elemental module function within_double_precision_fraction(operands, fractional_tolerance) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    type(operands_t(double_precision)), intent(in) :: operands
    double precision, intent(in) :: fractional_tolerance

    Return Value type(test_diagnosis_t)

  • private elemental module function within_real_fraction(operands, fractional_tolerance) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    type(operands_t), intent(in) :: operands
    real, intent(in) :: fractional_tolerance

    Return Value type(test_diagnosis_t)

public interface operator(.withinPercentage.)

  • private elemental module function within_double_precision_percentage(operands, percentage_tolerance) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    type(operands_t(double_precision)), intent(in) :: operands
    double precision, intent(in) :: percentage_tolerance

    Return Value type(test_diagnosis_t)

  • private elemental module function within_real_percentage(operands, percentage_tolerance) result(test_diagnosis)

    Arguments

    Type IntentOptional Attributes Name
    type(operands_t), intent(in) :: operands
    real, intent(in) :: percentage_tolerance

    Return Value type(test_diagnosis_t)

public interface test_diagnosis_t

  • private elemental module function construct_from_character(test_passed, diagnostics_string) result(test_diagnosis)

    The result is a test_diagnosis_t object with the components defined by the dummy arguments

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: test_passed
    character(len=*), intent(in) :: diagnostics_string

    Return Value type(test_diagnosis_t)

  • private elemental module function construct_from_string_t(test_passed, diagnostics_string) result(test_diagnosis)

    The result is a test_diagnosis_t object with the components defined by the dummy arguments

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: test_passed
    type(string_t), intent(in) :: diagnostics_string

    Return Value type(test_diagnosis_t)

interface

  • private elemental module function diagnostics_string(self) result(string_)

    The result is a string describing the condition(s) that caused a test failure

    Arguments

    Type IntentOptional Attributes Name
    class(test_diagnosis_t), intent(in) :: self

    Return Value type(string_t)

interface

  • private elemental module function test_passed(self) result(passed)

    The result is .true. if the test passed and false otherwise

    Arguments

    Type IntentOptional Attributes Name
    class(test_diagnosis_t), intent(in) :: self

    Return Value logical


Derived Types

type, public ::  test_diagnosis_t

Encapsulate test outcome and diagnostic information

Components

Type Visibility Attributes Name Initial
character(len=:), private, allocatable :: diagnostics_string_
logical, private :: test_passed_

Constructor

private elemental, module function construct_from_character (test_passed, diagnostics_string)

The result is a test_diagnosis_t object with the components defined by the dummy arguments

private elemental, module function construct_from_string_t (test_passed, diagnostics_string)

The result is a test_diagnosis_t object with the components defined by the dummy arguments

Type-Bound Procedures

procedure, public :: diagnostics_string
procedure, public :: test_passed

type, private ::  double_precision_operands_t

Components

Type Visibility Attributes Name Initial
double precision, public :: actual
double precision, public :: expected

type, private ::  operands_t

Components

Type Visibility Attributes Name Initial
real(kind=k), public :: actual
real(kind=k), public :: expected
integer, public, kind :: k = default_real

type, private ::  operands_t

Components

Type Visibility Attributes Name Initial
real, public :: actual
real, public :: expected