naturalfruit Module

This module contains the procedures and variables that the user may use for unit testing with fruit.


Contents


Variables

TypeVisibility AttributesNameInitial
integer, public, parameter:: FRUIT_PREFIX_LEN_MAX =50

Interfaces

public interface assert_equal

Test that var1 and var2 are equal.

Read more…
  • private subroutine assert_eq_logical_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    logical, intent(in) :: var1
    logical, intent(in) :: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_1d_logical_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    logical, intent(in), dimension(:):: var1
    logical, intent(in), dimension(:):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_2d_logical_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    logical, intent(in), dimension(:, :):: var1
    logical, intent(in), dimension(:, :):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_string_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in) :: var1
    character(len=*), intent(in) :: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_1d_string_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in), dimension(:):: var1
    character(len=*), intent(in), dimension(:):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_2d_string_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in), dimension(:, :):: var1
    character(len=*), intent(in), dimension(:, :):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_int_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in) :: var1
    integer, intent(in) :: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_1d_int_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in), dimension(:):: var1
    integer, intent(in), dimension(:):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_2d_int_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in), dimension(:, :):: var1
    integer, intent(in), dimension(:, :):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real, intent(in) :: var1
    real, intent(in) :: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_1d_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real, intent(in), dimension(:):: var1
    real, intent(in), dimension(:):: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_2d_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real, intent(in), dimension(:, :):: var1
    real, intent(in), dimension(:, :):: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(in) :: var1
    real(kind=dp), intent(in) :: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_1d_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(in), dimension(:):: var1
    real(kind=dp), intent(in), dimension(:):: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_2d_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(in), dimension(:, :):: var1
    real(kind=dp), intent(in), dimension(:, :):: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_complex_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex, intent(in) :: var1
    complex, intent(in) :: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_1d_complex_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex, intent(in), dimension(:):: var1
    complex, intent(in), dimension(:):: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_2d_complex_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex, intent(in), dimension(:, :):: var1
    complex, intent(in), dimension(:, :):: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_complex_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(in) :: var1
    complex(kind=dp), intent(in) :: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_1d_complex_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(in), dimension(:):: var1
    complex(kind=dp), intent(in), dimension(:):: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_eq_2d_complex_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(in), dimension(:, :):: var1
    complex(kind=dp), intent(in), dimension(:, :):: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status

public interface assert_not_equal

Test that var1 and var2 are not equal.

Read more…
  • private subroutine assert_not_eq_logical_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    logical, intent(in) :: var1
    logical, intent(in) :: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_1d_logical_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    logical, intent(in), dimension(:):: var1
    logical, intent(in), dimension(:):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_2d_logical_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    logical, intent(in), dimension(:, :):: var1
    logical, intent(in), dimension(:, :):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_string_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in) :: var1
    character(len=*), intent(in) :: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_1d_string_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in), dimension(:):: var1
    character(len=*), intent(in), dimension(:):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_2d_string_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in), dimension(:, :):: var1
    character(len=*), intent(in), dimension(:, :):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_int_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in) :: var1
    integer, intent(in) :: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_1d_int_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in), dimension(:):: var1
    integer, intent(in), dimension(:):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_2d_int_(var1, var2, message, status)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in), dimension(:, :):: var1
    integer, intent(in), dimension(:, :):: var2
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real, intent(in) :: var1
    real, intent(in) :: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_1d_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real, intent(in), dimension(:):: var1
    real, intent(in), dimension(:):: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_2d_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real, intent(in), dimension(:, :):: var1
    real, intent(in), dimension(:, :):: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(in) :: var1
    real(kind=dp), intent(in) :: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_1d_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(in), dimension(:):: var1
    real(kind=dp), intent(in), dimension(:):: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_2d_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(in), dimension(:, :):: var1
    real(kind=dp), intent(in), dimension(:, :):: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_complex_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex, intent(in) :: var1
    complex, intent(in) :: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_1d_complex_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex, intent(in), dimension(:):: var1
    complex, intent(in), dimension(:):: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_2d_complex_real_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex, intent(in), dimension(:, :):: var1
    complex, intent(in), dimension(:, :):: var2
    real, intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_complex_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(in) :: var1
    complex(kind=dp), intent(in) :: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_1d_complex_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(in), dimension(:):: var1
    complex(kind=dp), intent(in), dimension(:):: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status
  • private subroutine assert_not_eq_2d_complex_double_(var1, var2, delta, message, status)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(in), dimension(:, :):: var1
    complex(kind=dp), intent(in), dimension(:, :):: var2
    real(kind=dp), intent(in), optional :: delta
    character(len=*), intent(in), optional :: message
    logical, intent(out), optional :: status

public interface add_fail

Print message to screen on assert failure and add to count.

Read more…
  • private subroutine add_fail_(message)

    Print message to screen on assert failure and add to count.

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in), optional :: message
  • private subroutine add_fail_case_named_(caseName, message)

    Print message to screen on assert failure and add to count.

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in) :: caseName
    character(len=*), intent(in) :: message

Functions

public function fruit_if_case_failed()

Category
testsuite subroutine

Return TRUE if any assert in current case has failed.

Arguments

None

Return Value logical

public function get_last_message()

Category
testsuite subroutine

Return last message.

Arguments

None

Return Value character(len=MSG_LENGTH)

public function is_last_passed()

Category
testsuite subroutine

Return true if last assert is successful in case.

Arguments

None

Return Value logical

public function is_case_passed()

Category
testsuite subroutine

Return true if all asserts are successful in case.

Arguments

None

Return Value logical


Subroutines

public subroutine testsuite_initialize(rank)

Category
testsuite subroutine

Initialize FRUIT driver environment.

Arguments

Type IntentOptional AttributesName
integer, intent(in), optional :: rank

public subroutine testsuite_finalize(exit_code)

Category
testsuite subroutine

Finalize FRUIT driver environment

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(out), optional :: exit_code

public subroutine testsuite_initialize_xml(rank)

Category
testsuite subroutine

Initialize FRUIT driver environment for output to XML file

Arguments

Type IntentOptional AttributesName
integer, intent(in), optional :: rank

public subroutine case_passed_xml(tc_name, classname)

Category
testsuite subroutine

Write to XML file a passed case.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: tc_name
character(len=*), intent(in) :: classname

public subroutine case_failed_xml(tc_name, classname)

Category
testsuite subroutine

Write to XML file a passed case.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: tc_name
character(len=*), intent(in) :: classname

public subroutine testsuite_summary_xml()

Category
testsuite subroutine

Summarize FRUIT test results in XML format to result.xml file.

Arguments

None

public subroutine fruit_show_dots()

Category
testsuite subroutine

Show dots signifying test success on screen. Visible by default.

Arguments

None

public subroutine fruit_hide_dots()

Category
testsuite subroutine

Hide dots signifying test success on screen. Visible by default.

Arguments

None

public subroutine testcase_initialize(tc_name)

Category
testcase subroutine

Initialize a testcase.

Read more…

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in), optional :: tc_name

public subroutine testcase_finalize(exit_code)

Category
testcase subroutine

Finalize a testcase

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(out), optional :: exit_code

public subroutine testsuite_summary()

Category
testsuite subroutine

Summarize FRUIT test results to screen.

Arguments

None

public subroutine testsuite_summary_table(succ_assert, fail_assert, succ_case, fail_case)

Category
testsuite subroutine

Print statistics of cases and asserts in default format.

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: succ_assert
integer, intent(in) :: fail_assert
integer, intent(in) :: succ_case
integer, intent(in) :: fail_case

public subroutine is_all_successful(result)

Category
testsuite subroutine

Return true to result if any assert has failed till now.

Arguments

Type IntentOptional AttributesName
logical, intent(out) :: result

public subroutine get_xml_filename_work(string)

Category
testsuite subroutine

Get filename of XML file. result.xml by default.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(out) :: string

public subroutine set_xml_filename_work(string)

Category
testsuite subroutine

Set filename of XML file. result.xml by default.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: string

public subroutine get_message_index(index)

Category
testsuite subroutine

Get number of failed assertion messages.

Arguments

Type IntentOptional AttributesName
integer, intent(out) :: index

public subroutine get_message_array(msgs)

Category
testsuite subroutine

Get failed asssertion messages to msgs.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(out) :: msgs(:)

public subroutine get_messages(msgs)

Category
testsuite subroutine

Get failed asssertion messages to msgs.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(out) :: msgs(:)

public subroutine get_total_count(count)

Category
testsuite subroutine

Get total number of asserts.

Arguments

Type IntentOptional AttributesName
integer, intent(out) :: count

public subroutine get_failed_count(count)

Category
testsuite subroutine

Get number of assert failures.

Arguments

Type IntentOptional AttributesName
integer, intent(out) :: count

public subroutine add_success()

Category
testsuite subroutine

Print message to screen on assert success and add to count.

Arguments

None

public subroutine failed_assert_action(expected, got, message, if_is)

Category
testsuite subroutine

Print message to screen and take necessary actions for assert failure.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: expected
character(len=*), intent(in) :: got
character(len=*), intent(in), optional :: message
logical, intent(in), optional :: if_is

public subroutine set_case_name(value)

Category
testsuite subroutine

Set name of case to value.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: value

public subroutine get_case_name(value)

Category
testsuite subroutine

Get name of case to value.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(out) :: value

public subroutine override_stdout(write_unit, filename)

Category
testsuite subroutine

Override stdout to a user-specified file. Terminal by default.

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: write_unit
character(len=*), intent(in) :: filename

public subroutine override_xml_work(new_unit, filename)

Category
testsuite subroutine

Override XML file unit number to a user-specified number. 21 by default.

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: new_unit
character(len=*), intent(in) :: filename

public subroutine stash_test_suite()

Category
testsuite subroutine

Stash results of test case for later use.

Arguments

None

public subroutine restore_test_suite()

Category
testsuite subroutine

Restore results of test case for use.

Arguments

None

public subroutine end_override_stdout()

Category
testsuite subroutine

Revert override of stdout to default. Terminal by default.

Arguments

None

public subroutine end_override_xml_work()

Category
testsuite subroutine

Revert override of XML file unit number to default. 21 by default.

Arguments

None

public subroutine set_prefix(str)

Category
testsuite subroutine

Set a common prefix for classname. Null by default.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: str

public subroutine get_prefix(str)

Category
testsuite subroutine

Get a common prefix for classname. Null by default.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(out) :: str

public subroutine get_assert_and_case_count(fail_assert, suc_assert, fail_case, suc_case)

Category
testsuite subroutine

Get statistics of cases and asserts.

Arguments

Type IntentOptional AttributesName
integer, intent(out) :: fail_assert
integer, intent(out) :: suc_assert
integer, intent(out) :: fail_case
integer, intent(out) :: suc_case

public subroutine assert_true(var1, message, status)

Category
testcase subroutine

Test that var1 is true.

Arguments

Type IntentOptional AttributesName
logical, intent(in) :: var1
character(len=*), intent(in), optional :: message
logical, intent(out), optional :: status

public subroutine assert_false(var1, message, status)

Category
testcase subroutine

Test that var1 is false.

Arguments

Type IntentOptional AttributesName
logical, intent(in) :: var1
character(len=*), intent(in), optional :: message
logical, intent(out), optional :: status

public subroutine assert_identical(filename1, filename2, message, status)

Category
testcase subroutine

Compare two files and return true if identical

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: filename1
character(len=*), intent(in) :: filename2
character(len=*), intent(in), optional :: message
logical, intent(out), optional :: status

public subroutine assert_not_identical(filename1, filename2, message, status)

Category
testcase subroutine

Compare two files and return true if not identical

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: filename1
character(len=*), intent(in) :: filename2
character(len=*), intent(in), optional :: message
logical, intent(out), optional :: status