def test_no_first_fixed_surface(self): metadata = deepcopy(self.metadata) section = {'NV': 0, 'typeOfFirstFixedSurface': MISSING_SURFACE, 'scaledValueOfFirstFixedSurface': MISSING_LEVEL} vertical_coords(section, metadata) self.assertEqual(metadata, self.metadata)
def test_no_first_fixed_surface(self): metadata = deepcopy(self.metadata) section = { 'NV': 0, 'typeOfFirstFixedSurface': MISSING_SURFACE, 'scaledValueOfFirstFixedSurface': MISSING_LEVEL } vertical_coords(section, metadata) self.assertEqual(metadata, self.metadata)
def test_different_fixed_surfaces(self): section = {'NV': 0, 'typeOfFirstFixedSurface': 100, 'scaledValueOfFirstFixedSurface': None, 'scaleFactorOfFirstFixedSurface': None, 'typeOfSecondFixedSurface': 0} emsg = 'different types of first and second fixed surface' with self.assertRaisesRegexp(TranslationError, emsg): vertical_coords(section, None)
def test_same_fixed_surfaces_missing_second_scaled_value(self): section = {'NV': 0, 'typeOfFirstFixedSurface': 100, 'scaledValueOfFirstFixedSurface': None, 'scaleFactorOfFirstFixedSurface': None, 'typeOfSecondFixedSurface': 100, 'scaledValueOfSecondFixedSurface': MISSING_LEVEL} emsg = 'missing scaled value of second fixed surface' with self.assertRaisesRegexp(TranslationError, emsg): vertical_coords(section, None)
def test_different_fixed_surfaces(self): section = { 'NV': 0, 'typeOfFirstFixedSurface': 100, 'scaledValueOfFirstFixedSurface': None, 'scaleFactorOfFirstFixedSurface': None, 'typeOfSecondFixedSurface': 0 } emsg = 'different types of first and second fixed surface' with self.assertRaisesRegex(TranslationError, emsg): vertical_coords(section, None)
def test_hybrid_factories(self): def func(section, metadata): return metadata['factories'].append(factory) metadata = deepcopy(self.metadata) section = {'NV': 1} this = 'iris_grib._load_convert.hybrid_factories' factory = mock.sentinel.factory with mock.patch(this, side_effect=func) as hybrid_factories: vertical_coords(section, metadata) self.assertTrue(hybrid_factories.called) self.assertEqual(metadata['factories'], [factory])
def test_same_fixed_surfaces_missing_second_scaled_value(self): section = { 'NV': 0, 'typeOfFirstFixedSurface': 100, 'scaledValueOfFirstFixedSurface': None, 'scaleFactorOfFirstFixedSurface': None, 'typeOfSecondFixedSurface': 100, 'scaledValueOfSecondFixedSurface': MISSING_LEVEL } emsg = 'missing scaled value of second fixed surface' with self.assertRaisesRegex(TranslationError, emsg): vertical_coords(section, None)
def test_pressure_with_no_second_fixed_surface(self): metadata = deepcopy(self.metadata) section = {'NV': 0, 'typeOfFirstFixedSurface': 100, # pressure / Pa 'scaledValueOfFirstFixedSurface': 10, 'scaleFactorOfFirstFixedSurface': 1, 'typeOfSecondFixedSurface': MISSING_SURFACE} vertical_coords(section, metadata) coord = DimCoord(1.0, long_name='pressure', units='Pa') expected = deepcopy(self.metadata) expected['aux_coords_and_dims'].append((coord, None)) self.assertEqual(metadata, expected)
def test_pressure_with_no_second_fixed_surface(self): metadata = deepcopy(self.metadata) section = { 'NV': 0, 'typeOfFirstFixedSurface': 100, # pressure / Pa 'scaledValueOfFirstFixedSurface': 10, 'scaleFactorOfFirstFixedSurface': 1, 'typeOfSecondFixedSurface': MISSING_SURFACE } vertical_coords(section, metadata) coord = DimCoord(1.0, long_name='pressure', units='Pa') expected = deepcopy(self.metadata) expected['aux_coords_and_dims'].append((coord, None)) self.assertEqual(metadata, expected)
def test_height_with_second_fixed_surface(self): metadata = deepcopy(self.metadata) section = {'NV': 0, 'typeOfFirstFixedSurface': 103, 'scaledValueOfFirstFixedSurface': 1000, 'scaleFactorOfFirstFixedSurface': 2, 'typeOfSecondFixedSurface': 103, 'scaledValueOfSecondFixedSurface': 3000, 'scaleFactorOfSecondFixedSurface': 2} vertical_coords(section, metadata) coord = DimCoord(20.0, long_name='height', units='m', bounds=[10.0, 30.0]) expected = deepcopy(self.metadata) expected['aux_coords_and_dims'].append((coord, None)) self.assertEqual(metadata, expected)
def test_height_with_second_fixed_surface(self): metadata = deepcopy(self.metadata) section = { 'NV': 0, 'typeOfFirstFixedSurface': 103, 'scaledValueOfFirstFixedSurface': 1000, 'scaleFactorOfFirstFixedSurface': 2, 'typeOfSecondFixedSurface': 103, 'scaledValueOfSecondFixedSurface': 3000, 'scaleFactorOfSecondFixedSurface': 2 } vertical_coords(section, metadata) coord = DimCoord(20.0, long_name='height', units='m', bounds=[10.0, 30.0]) expected = deepcopy(self.metadata) expected['aux_coords_and_dims'].append((coord, None)) self.assertEqual(metadata, expected)
def _check(self, value, msg): this = 'iris_grib._load_convert.options' with mock.patch('warnings.warn') as warn: with mock.patch(this) as options: for request_warning in [False, True]: options.warn_on_unsupported = request_warning metadata = deepcopy(self.metadata) section = {'NV': 0, 'typeOfFirstFixedSurface': 0, 'scaledValueOfFirstFixedSurface': value} # The call being tested. vertical_coords(section, metadata) self.assertEqual(metadata, self.metadata) if request_warning: self.assertEqual(len(warn.mock_calls), 1) args, _ = warn.call_args self.assertIn(msg, args[0]) else: self.assertEqual(len(warn.mock_calls), 0)
def _check(self, value, msg): this = 'iris_grib._load_convert.options' with mock.patch('warnings.warn') as warn: with mock.patch(this) as options: for request_warning in [False, True]: options.warn_on_unsupported = request_warning metadata = deepcopy(self.metadata) section = { 'NV': 0, 'typeOfFirstFixedSurface': 0, 'scaledValueOfFirstFixedSurface': value } # The call being tested. vertical_coords(section, metadata) self.assertEqual(metadata, self.metadata) if request_warning: self.assertEqual(len(warn.mock_calls), 1) args, _ = warn.call_args self.assertIn(msg, args[0]) else: self.assertEqual(len(warn.mock_calls), 0)