|
31 | 31 | from iris.coords import DimCoord, AuxCoord, Coord |
32 | 32 | from iris.tests import mock |
33 | 33 | from iris.exceptions import UnitConversionError |
| 34 | +from iris.tests.unit.coords import CoordTestMixin |
34 | 35 |
|
35 | 36 |
|
36 | 37 | Pair = collections.namedtuple('Pair', 'points bounds') |
@@ -232,7 +233,7 @@ def test_time_as_object(self): |
232 | 233 | mock.sentinel.upper))]) |
233 | 234 |
|
234 | 235 |
|
235 | | -class Test_collapsed(tests.IrisTest): |
| 236 | +class Test_collapsed(tests.IrisTest, CoordTestMixin): |
236 | 237 |
|
237 | 238 | def test_serialize(self): |
238 | 239 | # Collapse a string AuxCoord, causing it to be serialised. |
@@ -300,6 +301,49 @@ def test_numeric_nd(self): |
300 | 301 | [4, 10], |
301 | 302 | [5, 11]])) |
302 | 303 |
|
| 304 | + def test_lazy_nd_points(self): |
| 305 | + import dask.array as da |
| 306 | + self.setupTestArrays((3, 4)) |
| 307 | + coord = AuxCoord(self.pts_lazy) |
| 308 | + |
| 309 | + collapsed_coord = coord.collapsed() |
| 310 | + |
| 311 | + self.assertTrue(collapsed_coord.has_lazy_points()) |
| 312 | + self.assertFalse(collapsed_coord.has_lazy_bounds()) |
| 313 | + |
| 314 | + self.assertArrayEqual(collapsed_coord.points, da.array([55])) |
| 315 | + self.assertArrayEqual(collapsed_coord.bounds, da.array([[0, 110]])) |
| 316 | + |
| 317 | + def test_lazy_nd_bounds(self): |
| 318 | + import dask.array as da |
| 319 | + |
| 320 | + self.setupTestArrays((3, 4)) |
| 321 | + coord = AuxCoord(self.pts_real, bounds=self.bds_lazy) |
| 322 | + |
| 323 | + collapsed_coord = coord.collapsed() |
| 324 | + |
| 325 | + # Note that the new points get recalculated from the lazy bounds |
| 326 | + # and so end up as lazy |
| 327 | + self.assertTrue(collapsed_coord.has_lazy_points()) |
| 328 | + self.assertTrue(collapsed_coord.has_lazy_bounds()) |
| 329 | + |
| 330 | + self.assertArrayEqual(collapsed_coord.points, np.array([55])) |
| 331 | + self.assertArrayEqual(collapsed_coord.bounds, da.array([[-2, 112]])) |
| 332 | + |
| 333 | + def test_lazy_nd_points_and_bounds(self): |
| 334 | + import dask.array as da |
| 335 | + |
| 336 | + self.setupTestArrays((3, 4)) |
| 337 | + coord = AuxCoord(self.pts_lazy, bounds=self.bds_lazy) |
| 338 | + |
| 339 | + collapsed_coord = coord.collapsed() |
| 340 | + |
| 341 | + self.assertTrue(collapsed_coord.has_lazy_points()) |
| 342 | + self.assertTrue(collapsed_coord.has_lazy_bounds()) |
| 343 | + |
| 344 | + self.assertArrayEqual(collapsed_coord.points, da.array([55])) |
| 345 | + self.assertArrayEqual(collapsed_coord.bounds, da.array([[-2, 112]])) |
| 346 | + |
303 | 347 |
|
304 | 348 | class Test_is_compatible(tests.IrisTest): |
305 | 349 | def setUp(self): |
|
0 commit comments