def test_hours(self, mock_set): lower = 10 upper = 20 self.coord.bounds = [lower, upper] set_time_range(self.coord, mock.sentinel.grib) mock_set.assert_any_call(mock.sentinel.grib, 'indicatorOfUnitForTimeRange', 1) mock_set.assert_any_call(mock.sentinel.grib, 'lengthOfTimeRange', upper - lower)
def test_non_scalar(self): coord = DimCoord([0, 1], 'time', bounds=[[0, 1], [1, 2]], units=Unit('hours since epoch', calendar='standard')) with self.assertRaisesRegexp( ValueError, 'Expected length one time ' 'coordinate, got 2 points'): set_time_range(coord, mock.sentinel.grib)
def test_days(self, mock_set): lower = 4 upper = 6 self.coord.bounds = [lower, upper] self.coord.units = Unit('days since epoch', calendar='standard') set_time_range(self.coord, mock.sentinel.grib) mock_set.assert_any_call(mock.sentinel.grib, 'indicatorOfUnitForTimeRange', 1) mock_set.assert_any_call(mock.sentinel.grib, 'lengthOfTimeRange', (upper - lower) * 24)
def test_fractional_hours(self, mock_set_long): lower = 10.0 upper = 20.9 self.coord.bounds = [lower, upper] with mock.patch('warnings.warn') as warn: set_time_range(self.coord, mock.sentinel.grib) msg = 'Truncating floating point lengthOfTimeRange 10.9 ' \ 'to integer value 10' warn.assert_called_once_with(msg) mock_set_long.assert_any_call(mock.sentinel.grib, 'indicatorOfUnitForTimeRange', 1) mock_set_long.assert_any_call(mock.sentinel.grib, 'lengthOfTimeRange', int(upper - lower))
def test_fractional_hours(self, mock_set_long): lower = 10.0 upper = 20.9 self.coord.bounds = [lower, upper] with warnings.catch_warnings(record=True) as warn: warnings.simplefilter("always") set_time_range(self.coord, mock.sentinel.grib) self.assertEqual(len(warn), 1) msg = 'Truncating floating point lengthOfTimeRange 10\.8?9+ ' \ 'to integer value 10' six.assertRegex(self, str(warn[0].message), msg) mock_set_long.assert_any_call(mock.sentinel.grib, 'indicatorOfUnitForTimeRange', 1) mock_set_long.assert_any_call(mock.sentinel.grib, 'lengthOfTimeRange', int(upper - lower))
def test_three_bounds(self): self.coord.bounds = [0, 1, 2] with self.assertRaisesRegexp( ValueError, 'Expected time coordinate ' 'with two bounds, got 3 bounds'): set_time_range(self.coord, mock.sentinel.grib)
def test_non_scalar(self): coord = DimCoord([0, 1], 'time', bounds=[[0, 1], [1, 2]], units=Unit('hours since epoch', calendar='standard')) with self.assertRaisesRegexp(ValueError, 'Expected length one time ' 'coordinate, got 2 points'): set_time_range(coord, mock.sentinel.grib)
def test_three_bounds(self): self.coord.bounds = [0, 1, 2] with self.assertRaisesRegexp(ValueError, 'Expected time coordinate ' 'with two bounds, got 3 bounds'): set_time_range(self.coord, mock.sentinel.grib)