This is a Fortran Unit Test library purely written in Fortran to encourage scientific programmer to write tests.
Go to Top
A CMake-Setup is provided.
Go to Top
demo.F90:
program good_test
use unit_test
implicit none
type(test_suite_type) :: specific_suite
! example with default suite
call test_suite_init()
call test_case_create('Test 1')
! By sending macros __FILE__ and __LINE__, report will print the file and line number where assertion fails.
call assert_approximate(1.0, 2.0, __FILE__, __LINE__) ! line 14
! report the complete suite
call test_suite_report()
! finalize
call test_case_final()
! example with specific suite
call test_suite_init('my specific test suite', specific_suite)
call test_case_create('Specific Test 1', specific_suite)
! suite = SUITE need in this case (cause optional argument eps, file_name, line_number is missing)
call assert_approximate(1.0, 2.0, suite=specific_suite)
call test_case_create('Specific Test 2', specific_suite)
! suite = SUITE need in this case (cause optional argument eps is missing)
call assert_equal(1.0, 2.0, __FILE__, __LINE__, suite=specific_suite)
call test_case_create('Specific Test 3', specific_suite)
call assert_approximate(1.0, 2.0, __FILE__, __LINE__, 1E-0, specific_suite)
! report a test_case
call test_case_report('Specific Test 2', specific_suite)
! report the complete suite
call test_suite_report(specific_suite)
! finalize
call test_suite_final(specific_suite)
end program good_test
Output:
///////////////////// Report of Suite: Default test suite ///////////////////////
+-> Details:
| |
| +-> Test 1: 1 of 1 assertions succeed.
| |
|
+-> Summary:
| +-> Default test suite: 1 of 1 assertions succeed.
////////////////////////////////////////////////////////////////////////////////
//////// Report of Suite: my specific test suite, Case: Specific Test 2 /////////
+-> Specific Test 2: 0 of 1 assertions succeed.
| |
| +-> Assertion #1 failed with reason: x ( 1.000) == y ( 2.000)
| +-> Check line: test_assert.F90:29
/////////////////// Report of Suite: my specific test suite /////////////////////
+-> Details:
| |
| +-> Specific Test 1: 1 of 1 assertions succeed.
| |
| +-> Specific Test 2: 0 of 1 assertions succeed.
| | |
| | +-> Assertion #1 failed with reason: x ( 1.000) == y ( 2.000)
| | +-> Check line: test_assert.F90:29
| |
| +-> Specific Test 3: 0 of 1 assertions succeed.
| | |
| | +-> Assertion #1 failed with reason: x ( 1.000) =~ y ( 2.000)
| | +-> Check line: test_assert.F90:32
| |
|
+-> Summary:
| +-> my specific test suite: 1 of 3 assertions succeed.
////////////////////////////////////////////////////////////////////////////////
You can integrate this library into your CMake based project as:
...
add_subdirectory (<fortran-unit-test root>)
include_directories (${UNIT_TEST_INCLUDE_DIR})
...
target_link_libraries (<user target> fortran_unit_test ...)
Go to Top
- assert_equal()
- single data type
-
integer(1)
; -
integer(2)
; -
integer(4)
; -
integer(8)
; -
real(4)
; -
real(8)
; -
character(*)
;
-
- vector data type
-
integer(1), dimension(:)
; -
integer(2), dimension(:)
; -
integer(4), dimension(:)
; -
integer(8), dimension(:)
; -
real(4), dimension(:)
; -
real(8), dimension(:)
; -
character(*), dimension(:)
;
-
- array data type
-
integer(1), dimension(:, :)
; -
integer(2), dimension(:, :)
; -
integer(4), dimension(:, :)
; -
integer(8), dimension(:, :)
; -
real(4), dimension(:, :)
; -
real(8), dimension(:, :)
; -
character(*), dimension(:, :)
;
-
- single data type
- assert_approximate()
- single data type
-
real(4)
; -
real(8)
;
-
- vector data type
-
real(4), dimension(:)
; -
real(8), dimension(:)
;
-
- array data type
-
real(4), dimension(:, :)
; -
real(8), dimension(:, :)
;
-
- single data type
- assert_great_then()
- single data type
-
integer(1)
; -
integer(2)
; -
integer(4)
; -
integer(8)
; -
real(4)
; -
real(8)
;
-
- vector data type
-
integer(1), dimension(:)
; -
integer(2), dimension(:)
; -
integer(4), dimension(:)
; -
integer(8), dimension(:)
; -
real(4), dimension(:)
; -
real(8), dimension(:)
;
-
- array data type
-
integer(1), dimension(:, :)
; -
integer(2), dimension(:, :)
; -
integer(4), dimension(:, :)
; -
integer(8), dimension(:, :)
; -
real(4), dimension(:, :)
; -
real(8), dimension(:, :)
;
-
- single data type
Go to Top
Go to Top
Go to Top