Skip to content

Commit 1f120bb

Browse files
committed
feat: make test_result_t constructor elemental
1 parent 11133b7 commit 1f120bb

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

src/test_result_m.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module test_result_m
1717

1818
interface test_result_t
1919

20-
pure module function construct(description, passed) result(test_result)
20+
elemental module function construct(description, passed) result(test_result)
2121
!! The result is a test_result_t object with the components defined by the dummy arguments
2222
implicit none
2323
character(len=*), intent(in) :: description

test/main.f90

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,23 @@ program main
33
use data_partition_test, only : data_partition_test_t
44
use object_m_test, only : object_test_t
55
use formats_test, only : formats_test_t
6+
use test_result_test, only : test_result_test_t
67
implicit none
78

89
type(collectives_test_t) collectives_test
910
type(data_partition_test_t) data_partition_test
1011
type(formats_test_t) formats_test
1112
type(object_test_t) object_test
13+
type(test_result_test_t) test_result_test
1214

1315
integer :: passes=0, tests=0
1416

1517
call data_partition_test%report(passes, tests)
1618
call collectives_test%report(passes, tests)
1719
call object_test%report(passes, tests)
1820
call formats_test%report(passes, tests)
21+
call test_result_test%report(passes, tests)
1922

2023
print *
2124
print *,"_________ In total, ",passes," of ",tests, " tests pass. _________"
22-
2325
end program

test/test_result_test.f90

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
module test_result_test
2+
!! Verify object pattern asbtract parent
3+
use test_m, only : test_t, test_result_t
4+
use test_result_m, only : test_result_t
5+
implicit none
6+
7+
private
8+
public :: test_result_test_t
9+
10+
type, extends(test_t) :: test_result_test_t
11+
contains
12+
procedure, nopass :: subject
13+
procedure, nopass :: results
14+
end type
15+
16+
contains
17+
18+
pure function subject() result(specimen)
19+
character(len=:), allocatable :: specimen
20+
specimen = "The test_result_t type"
21+
end function
22+
23+
function results() result(test_results)
24+
type(test_result_t), allocatable :: test_results(:)
25+
26+
test_results = [ &
27+
test_result_t("constructs and array of test_result_t objects elmentally", check_array_result_construction()) &
28+
]
29+
end function
30+
31+
pure function check_array_result_construction() result(passed)
32+
type(test_result_t), allocatable :: test_results(:)
33+
logical passed
34+
35+
test_results = test_result_t(["foo","bar"], [.true.,.false.])
36+
37+
passed = size(test_results)==2
38+
end function
39+
40+
end module test_result_test

0 commit comments

Comments
 (0)