From 254073088ce6c91b99c4f3a04005342977ff170f Mon Sep 17 00:00:00 2001 From: Benjamin Auer Date: Mon, 9 Sep 2024 17:15:23 -0400 Subject: [PATCH] add tests, fix bug --- generic3g/tests/Test_FixedLevelsVerticalGrid.pf | 15 +++++++++++++++ generic3g/vertical/FixedLevelsVerticalGrid.F90 | 6 ++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/generic3g/tests/Test_FixedLevelsVerticalGrid.pf b/generic3g/tests/Test_FixedLevelsVerticalGrid.pf index 36ab5d58590f..2230f79c8217 100644 --- a/generic3g/tests/Test_FixedLevelsVerticalGrid.pf +++ b/generic3g/tests/Test_FixedLevelsVerticalGrid.pf @@ -30,5 +30,20 @@ contains end subroutine test_equals + @test + subroutine test_not_equals() + type(FixedLevelsVerticalGrid) :: vgrid1, vgrid2, vgrid3 + + real, parameter :: levels1(*) = [1.,5.,7.] + real, parameter :: levels2(*) = [.01,4.] + + vgrid1 = FixedLevelsVerticalGrid(standard_name='air_pressure', units='Pa', levels=levels1) + vgrid2 = FixedLevelsVerticalGrid(standard_name='air_pressure', units='mb', levels=levels1) + vgrid3 = FixedLevelsVerticalGrid(standard_name='air_pressure', units='Pa', levels=levels2) + @assert_that(vgrid1 /= vgrid2, is(.true.)) + @assert_that(vgrid1 /= vgrid3, is(.true.)) + + end subroutine test_not_equals + end module Test_FixedLevelsVerticalGrid diff --git a/generic3g/vertical/FixedLevelsVerticalGrid.F90 b/generic3g/vertical/FixedLevelsVerticalGrid.F90 index 1727b2dc19a0..f0dac26777bf 100644 --- a/generic3g/vertical/FixedLevelsVerticalGrid.F90 +++ b/generic3g/vertical/FixedLevelsVerticalGrid.F90 @@ -91,17 +91,19 @@ logical function can_connect_to(this, src, rc) _UNUSED_DUMMY(src) end function can_connect_to - logical function equal_FixedLevelsVerticalGrid(a, b) result(equal) + impure elemental logical function equal_FixedLevelsVerticalGrid(a, b) result(equal) type(FixedLevelsVerticalGrid), intent(in) :: a, b equal = a%standard_name == b%standard_name if (.not. equal) return equal = a%units == b%units if (.not. equal) return + equal = size(a%levels) == size(b%levels) + if (.not. equal) return equal = all(a%levels == b%levels) end function equal_FixedLevelsVerticalGrid - logical function not_equal_FixedLevelsVerticalGrid(a, b) result(not_equal) + impure elemental logical function not_equal_FixedLevelsVerticalGrid(a, b) result(not_equal) type(FixedLevelsVerticalGrid), intent(in) :: a, b not_equal = .not. (a==b)