From 44d0cd8d6243ec5b51980f3a69001b2535f49228 Mon Sep 17 00:00:00 2001 From: Steve Canny Date: Mon, 4 May 2020 12:37:06 -0700 Subject: [PATCH] fix: add unit test for CubeSet._is_numeric_mean --- src/cr/cube/cube.py | 1 + tests/unit/test_cube.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/cr/cube/cube.py b/src/cr/cube/cube.py index db2fbd9c1..fe9c8833f 100644 --- a/src/cr/cube/cube.py +++ b/src/cr/cube/cube.py @@ -141,6 +141,7 @@ def _is_multi_cube(self): """True if more than one cube-response was provided on construction.""" return len(self._cube_responses) > 1 + @lazyproperty def _is_numeric_mean(self): """True when CubeSet is special-case "numeric-mean" case requiring inflation. diff --git a/tests/unit/test_cube.py b/tests/unit/test_cube.py index 81fc98618..0e65a18dc 100644 --- a/tests/unit/test_cube.py +++ b/tests/unit/test_cube.py @@ -167,6 +167,29 @@ def it_provides_access_to_its_Cube_objects_to_help(self, _iter_cubes_, cube_): assert cubes == (cube_, cube_, cube_) + @pytest.mark.parametrize( + ("is_multi_cube", "cube_0_ndim", "expected_value"), + ((False, 1, False), (False, 0, False), (True, 1, False), (True, 0, True)), + ) + def it_knows_whether_it_is_numeric_mean_to_help( + self, + _is_multi_cube_prop_, + is_multi_cube, + Cube_, + cube_, + cube_0_ndim, + expected_value, + ): + _is_multi_cube_prop_.return_value = is_multi_cube + cube_.ndim = cube_0_ndim + Cube_.return_value = cube_ + cube_set = CubeSet(({"cube": 0}, {"cube": 1}), None, None, None) + + is_numeric_mean = cube_set._is_numeric_mean + + assert Cube_.call_args_list == ([call({"cube": 0})] if is_multi_cube else []) + assert is_numeric_mean == expected_value + def it_constructs_its_sequence_of_cube_objects_to_help( self, request, Cube_, _is_numeric_mean_prop_ ): @@ -263,6 +286,10 @@ def cube_(self, request): def _cubes_prop_(self, request): return property_mock(request, CubeSet, "_cubes") + @pytest.fixture + def _is_multi_cube_prop_(self, request): + return property_mock(request, CubeSet, "_is_multi_cube") + @pytest.fixture def _is_numeric_mean_prop_(self, request): return property_mock(request, CubeSet, "_is_numeric_mean")