From 45054fa63084150dcbd4b41e8179d2184eb673cd Mon Sep 17 00:00:00 2001 From: cpelley Date: Wed, 19 Oct 2016 11:02:34 +0100 Subject: [PATCH] TEST: Intolerant area weighted float comparison failure --- ..._area_weighted_rectilinear_src_and_grid.py | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py b/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py index 16a63f4d6a6..53c7932ee06 100644 --- a/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py +++ b/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py @@ -1,4 +1,4 @@ -# (C) British Crown Copyright 2014 - 2015, Met Office +# (C) British Crown Copyright 2014 - 2016, Met Office # # This file is part of Iris. # @@ -150,5 +150,32 @@ def test_scalar_with_overlap_above_mdtol(self): self.assertEqual(ma.count_masked(res.data), 1) +class TestWrapAround(tests.IrisTest): + def test_float_tolerant_equality(self): + # Ensure that floating point numbers are treated appropriately when + # introducing precision difference from wrap_around. + source = Cube([[1]]) + bounds = np.array([[-91, 0]], dtype='float') + points = bounds.mean(axis=1) + lon_coord = DimCoord(points, bounds=bounds, standard_name='longitude') + source.add_aux_coord(lon_coord, 1) + + bounds = np.array([[-90, 90]], dtype='float') + points = bounds.mean(axis=1) + lat_coord = DimCoord(points, bounds=bounds, standard_name='latitude') + source.add_aux_coord(lat_coord, 0) + + grid = Cube([[0]]) + bounds = np.array([[270, 360]], dtype='float') + points = bounds.mean(axis=1) + lon_coord = DimCoord(points, bounds=bounds, standard_name='longitude') + grid.add_aux_coord(lon_coord, 1) + grid.add_aux_coord(lat_coord, 0) + + res = regrid(source, grid) + # The result should be equal to the source data and NOT be masked. + self.assertMaskedArrayEqual(res.data, np.array([1.0])) + + if __name__ == '__main__': tests.main()