Skip to content

Commit 50dfa06

Browse files
committed
Fix issue #136: Add .equalsExpected.(logical, logical)
1 parent bd9fa9a commit 50dfa06

3 files changed

Lines changed: 25 additions & 0 deletions

File tree

src/julienne/julienne_test_diagnosis_m.F90

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,12 @@ elemental module function expect(expected_true) result(test_diagnosis)
245245

246246
interface operator(.equalsExpected.)
247247

248+
elemental module function equals_expected_logical(actual, expected) result(test_diagnosis)
249+
implicit none
250+
logical, intent(in) :: actual, expected
251+
type(test_diagnosis_t) test_diagnosis
252+
end function
253+
248254
elemental module function equals_expected_c_ptr(actual, expected) result(test_diagnosis)
249255
implicit none
250256
type(c_ptr), intent(in) :: actual, expected

src/julienne/julienne_test_diagnosis_s.F90

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,18 @@ pure function aggregate_vector_diagnosis(diagnoses) result(diagnosis)
292292

293293
end procedure
294294

295+
module procedure equals_expected_logical
296+
297+
if (actual .EQV. expected) then
298+
test_diagnosis = test_diagnosis_t(test_passed=.true., diagnostics_string="")
299+
else
300+
test_diagnosis = test_diagnosis_t(test_passed = .false. &
301+
,diagnostics_string = "expected " // string_t(expected) // "; actual value is " // string_t(actual) &
302+
)
303+
end if
304+
305+
end procedure
306+
295307
module procedure equals_expected_integer
296308

297309
if (actual == expected) then

test/modules/test_diagnosis_test_m.F90

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ function results() result(test_results)
7171
,test_description_t("construction from string_t/character expressions 'a .equalsExpected. b'" , usher(check_equals_character_vs_string)) &
7272
,test_description_t("construction from the character expression 'a .equalsExpected. b'" , usher(check_equals_character)) &
7373
,test_description_t("construction from the type(c_ptr) expression 'p .equalsExpected. q'" , usher(check_equals_c_ptr)) &
74+
,test_description_t("construction from the logical expression 't .equalsExpected. t'" , usher(check_equals_logical)) &
7475
,test_description_t("construction from the string_t expression 'a .equalsExpected. b'" , usher(check_equals_string)) &
7576
,test_description_t("construction from the integer expression 'i .equalsExpected. j'" , usher(check_equals_integer)) &
7677
,test_description_t("construction from integer(int64) relational operators" , usher(check_int64_comparisons)) &
@@ -157,6 +158,12 @@ function check_equals_c_ptr() result(test_diagnosis)
157158
test_diagnosis = t_ptr .equalsExpected. c_loc(t)
158159
end function
159160

161+
function check_equals_logical() result(test_diagnosis)
162+
type(test_diagnosis_t) test_diagnosis
163+
logical, parameter :: t = .true., f = .false.
164+
test_diagnosis = (t .equalsExpected. t) .also. (f .equalsExpected. f)
165+
end function
166+
160167
function check_equals_string() result(test_diagnosis)
161168
type(test_diagnosis_t) test_diagnosis
162169
type(string_t) expected_value

0 commit comments

Comments
 (0)