Testing Scientific Code
Fixture Table
Check Several Cases
A compact fixture table keeps inputs and expected outputs side by side, then loops over the active cases.
Program
Play the program to choose how many cases from the table are included.
fixture_table.f90
program fixture_table_demo
implicit none
integer :: inputs(4)
integer :: expected(4)
integer :: active_cases
integer :: i
integer :: actual
integer :: pass_count
inputs = [1, 2, 3, 4]
expected = [2, 4, 6, 9]
active_cases =
pass_count = 0
do i = 1, active_cases
actual = inputs(i) * 2
if (actual == expected(i)) pass_count = pass_count + 1
end do
print '(I0, 1X, I0)', pass_count, active_cases
end program fixture_table_demo
program fixture_table_demo
implicit none
integer :: inputs(4)
integer :: expected(4)
integer :: active_cases
integer :: i
integer :: actual
integer :: pass_count
inputs = [1, 2, 3, 4]
expected = [2, 4, 6, 9]
active_cases =
pass_count = 0
do i = 1, active_cases
actual = inputs(i) * 2
if (actual == expected(i)) pass_count = pass_count + 1
end do
print '(I0, 1X, I0)', pass_count, active_cases
end program fixture_table_demo
program fixture_table_demo
implicit none
integer :: inputs(4)
integer :: expected(4)
integer :: active_cases
integer :: i
integer :: actual
integer :: pass_count
inputs = [1, 2, 3, 4]
expected = [2, 4, 6, 9]
active_cases =
pass_count = 0
do i = 1, active_cases
actual = inputs(i) * 2
if (actual == expected(i)) pass_count = pass_count + 1
end do
print '(I0, 1X, I0)', pass_count, active_cases
end program fixture_table_demo
fixture table
Inputs and expected results live in arrays with matching positions.
active cases
`active_cases` lets a test run only a prefix of the table.
pass count
Counting passes gives a small summary without invoking a test framework.