subroutine test_region_mask_2d(this)
class(ESMF_TestMethod), intent(inout) :: this
integer :: status, rc
real(ESMF_KIND_R4), pointer :: ptr2d(:,:), mask_ptr(:,:)
type(StateMask) :: mask
real(ESMF_KIND_R4), allocatable :: expected_array(:,:)
real(ESMF_KIND_R4) :: rval
character(len=:), allocatable :: expr
call ESMF_FieldGet(mask_field, 0, farrayPtr=mask_ptr, _RC)
call ESMF_FieldGet(field_2d, 0, farrayPtr=ptr2d, _RC)
expr = "regionmask(field_2d,region_mask;2,5)"
rval = 17.0
ptr2d = rval
allocate(expected_array(3,3),_STAT)
expected_array= reshape([0.0, rval, 0.0, rval, rval, 0.0, rval, rval, 0.0],shape=[3,3])
mask_ptr = reshape([1.0, 5.0, 1.0, 5.0, 2.0, 1.0, 2.0, 5.0, 1.0],shape=[3,3])
mask = StateMask(expr, _RC)
call mask%evaluate_mask(state,out_field_2d,_RC)
call ESMF_FieldGet(out_field_2d, 0, farrayPtr=ptr2d, _RC)
@assertEqual(expected_array, ptr2d)
_RETURN(_SUCCESS)
end subroutine test_region_mask_2d