Skip to content

Commit 3e29175

Browse files
authored
Merge pull request #17 from JHenneberg/master
added function test_case_get_assert_results()
2 parents 59735d2 + 61b77e5 commit 3e29175

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

src/assert_test.F90

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ program test_assert
99
type(test_suite_type) :: test_suite_equal
1010
type(test_suite_type) :: test_suite_great_than
1111

12+
logical, allocatable :: test_suite_assert_results(:)
13+
logical, allocatable :: test_case_assert_results(:)
14+
1215
! test assert_approximate routines
1316
call test_suite_init('Approximate', test_suite_approximate)
1417

@@ -191,6 +194,14 @@ program test_assert
191194
call assert_great_than(reshape([1.0D0, 1.0D0, 1.0D0, 1.0D0], [2, 2]), reshape([0.0D0, 2.0D0, 0.0D0, 0.0D0], [2, 2]), __FILE__, __LINE__, test_suite_great_than)
192195
call assert_great_than(reshape([1.0D0, 1.0D0, 1.0D0, 1.0D0], [2, 2]), reshape([0.0D0, 0.0D0, 0.0D0, 0.0D0], [2, 2]), __FILE__, __LINE__, test_suite_great_than)
193196

197+
test_case_assert_results = test_case_get_assert_results('real', test_suite_great_than)
198+
call assert_false(all(test_case_assert_results(1:12:2)), __FILE__, __LINE__, test_suite_great_than)
199+
call assert_true(all(test_case_assert_results(2:12:2)), __FILE__, __LINE__, test_suite_great_than)
200+
201+
test_suite_assert_results = test_suite_get_assert_results(test_suite_great_than)
202+
call assert_false(all(test_suite_assert_results(1:38:2)), __FILE__, __LINE__, test_suite_great_than)
203+
call assert_true(all(test_suite_assert_results(2:38:2)), __FILE__, __LINE__, test_suite_great_than)
204+
194205
call test_suite_report(test_suite_great_than)
195206
call test_suite_final(test_suite_great_than)
196207

src/test_case_mod.F90

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module test_case_mod
99
public test_case_create
1010
public test_case_append_assert
1111
public test_case_report
12+
public test_case_get_assert_results
1213

1314
contains
1415

@@ -97,7 +98,7 @@ subroutine test_case_append_assert(assert_operator, passed, left_operand, right_
9798
dummy_suite => default_test_suite
9899
end if
99100

100-
if (.not. associated(dummy_suite%test_case_tail)) call test_case_create('default')
101+
if (.not. associated(dummy_suite%test_case_tail)) call test_case_create('default', dummy_suite)
101102

102103
if (.not. associated(dummy_suite%test_case_tail%assert_result_head)) then
103104
allocate(dummy_suite%test_case_tail%assert_result_head)
@@ -143,4 +144,34 @@ function get_test_case(name, suite) result(res)
143144

144145
end function get_test_case
145146

147+
function test_case_get_assert_results(name, suite) result(res)
148+
implicit none
149+
150+
character(*), intent(in) :: name
151+
type(test_suite_type), target, optional :: suite
152+
logical, allocatable :: res(:)
153+
154+
type(test_suite_type), pointer :: dummy_suite
155+
type(test_case_type), pointer :: dummy_case
156+
type(assert_result_type), pointer :: dummy_assert_result
157+
158+
integer :: i
159+
160+
if (present(suite) ) then
161+
dummy_suite => suite
162+
else
163+
dummy_suite => default_test_suite
164+
end if
165+
166+
dummy_case => get_test_case(name, suite)
167+
allocate(res(dummy_case%num_assert), source = .false.)
168+
169+
dummy_assert_result => dummy_case%assert_result_head
170+
res(1) = dummy_assert_result%passed
171+
do i = 1, dummy_case%num_assert - 1
172+
dummy_assert_result => dummy_assert_result%next
173+
res(i + 1) = dummy_assert_result%passed
174+
end do
175+
end function test_case_get_assert_results
176+
146177
end module test_case_mod

0 commit comments

Comments
 (0)