diff --git a/lib/iris/tests/unit/concatenate/test__CubeSignature.py b/lib/iris/tests/unit/concatenate/test__CubeSignature.py index a148b6fdbd..a55140f156 100644 --- a/lib/iris/tests/unit/concatenate/test__CubeSignature.py +++ b/lib/iris/tests/unit/concatenate/test__CubeSignature.py @@ -6,10 +6,11 @@ # import iris tests first so that some things can be initialised # before importing anything else. -import iris.tests as tests # isort:skip +from dataclasses import dataclass from cf_units import Unit import numpy as np +import pytest from iris._concatenate import _CubeSignature as CubeSignature from iris.coords import DimCoord @@ -17,65 +18,73 @@ from iris.util import new_axis -class Test__coordinate_dim_metadata_equality(tests.IrisTest): - def setUp(self): +class Test__coordinate_dim_metadata_equality: + @pytest.fixture + def sample_data(self): + # Return a standard set of test items, wrapped in a data object + @dataclass + class SampleData: + series_inc: CubeSignature = None + series_inc_cube: Cube = None + series_dec: CubeSignature = None + series_dec_cube: Cube = None + scalar_cube: Cube = None + + data = SampleData() + nt = 10 - data = np.arange(nt, dtype=np.float32) - cube = Cube(data, standard_name="air_temperature", units="K") + cube_data = np.arange(nt, dtype=np.float32) + cube = Cube(cube_data, standard_name="air_temperature", units="K") # Temporal coordinate. t_units = Unit("hours since 1970-01-01 00:00:00", calendar="standard") t_coord = DimCoord(points=np.arange(nt), standard_name="time", units=t_units) cube.add_dim_coord(t_coord, 0) - # Increasing 1D time-series cube. - self.series_inc_cube = cube - self.series_inc = CubeSignature(self.series_inc_cube) + data.series_inc_cube = cube + data.series_inc = CubeSignature(data.series_inc_cube) # Decreasing 1D time-series cube. - self.series_dec_cube = self.series_inc_cube.copy() - self.series_dec_cube.remove_coord("time") + data.series_dec_cube = data.series_inc_cube.copy() + data.series_dec_cube.remove_coord("time") t_tmp = DimCoord( points=t_coord.points[::-1], standard_name="time", units=t_units ) - self.series_dec_cube.add_dim_coord(t_tmp, 0) - self.series_dec = CubeSignature(self.series_dec_cube) + data.series_dec_cube.add_dim_coord(t_tmp, 0) + data.series_dec = CubeSignature(data.series_dec_cube) # Scalar 0D time-series cube with scalar time coordinate. cube = Cube(0, standard_name="air_temperature", units="K") cube.add_aux_coord(DimCoord(points=nt, standard_name="time", units=t_units)) - self.scalar_cube = cube + data.scalar_cube = cube + return data - def test_scalar_non_common_axis(self): - scalar = CubeSignature(self.scalar_cube) - self.assertNotEqual(self.series_inc.dim_metadata, scalar.dim_metadata) - self.assertNotEqual(self.series_dec.dim_metadata, scalar.dim_metadata) + def test_scalar_non_common_axis(self, sample_data): + scalar = CubeSignature(sample_data.scalar_cube) + assert sample_data.series_inc.dim_metadata != scalar.dim_metadata + assert sample_data.series_dec.dim_metadata != scalar.dim_metadata - def test_1d_single_value_common_axis(self): + def test_1d_single_value_common_axis(self, sample_data): # Manually promote scalar time cube to be a 1d cube. - single = CubeSignature(new_axis(self.scalar_cube, "time")) - self.assertEqual(self.series_inc.dim_metadata, single.dim_metadata) - self.assertEqual(self.series_dec.dim_metadata, single.dim_metadata) + single = CubeSignature(new_axis(sample_data.scalar_cube, "time")) + assert sample_data.series_inc.dim_metadata == single.dim_metadata + assert sample_data.series_dec.dim_metadata == single.dim_metadata - def test_increasing_common_axis(self): - series_inc = self.series_inc - series_dec = self.series_dec - self.assertEqual(series_inc.dim_metadata, series_inc.dim_metadata) - self.assertNotEqual(series_inc.dim_metadata, series_dec.dim_metadata) + def test_increasing_common_axis(self, sample_data): + series_inc = sample_data.series_inc + series_dec = sample_data.series_dec + assert series_inc.dim_metadata == series_inc.dim_metadata + assert series_inc.dim_metadata != series_dec.dim_metadata - def test_decreasing_common_axis(self): - series_inc = self.series_inc - series_dec = self.series_dec - self.assertNotEqual(series_dec.dim_metadata, series_inc.dim_metadata) - self.assertEqual(series_dec.dim_metadata, series_dec.dim_metadata) + def test_decreasing_common_axis(self, sample_data): + series_inc = sample_data.series_inc + series_dec = sample_data.series_dec + assert series_dec.dim_metadata != series_inc.dim_metadata + assert series_dec.dim_metadata == series_dec.dim_metadata - def test_circular(self): - series_inc = self.series_inc - circular_cube = self.series_inc_cube.copy() + def test_circular(self, sample_data): + series_inc = sample_data.series_inc + circular_cube = sample_data.series_inc_cube.copy() circular_cube.coord("time").circular = True circular = CubeSignature(circular_cube) - self.assertNotEqual(circular.dim_metadata, series_inc.dim_metadata) - self.assertEqual(circular.dim_metadata, circular.dim_metadata) - - -if __name__ == "__main__": - tests.main() + assert circular.dim_metadata != series_inc.dim_metadata + assert circular.dim_metadata == circular.dim_metadata