Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions tests/integration/cmor/_fixes/cmip5/test_access1_0.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from esmvalcore.iris_helpers import date2num


class TestAllVars(unittest.TestCase):
class TestAllVars:
"""Test all vars fixes."""

def setUp(self):
Expand All @@ -33,20 +33,19 @@ def setUp(self):

def test_get(self):
"""Test getting of fix."""
self.assertListEqual(
Fix.get_fixes('CMIP5', 'ACCESS1-0', 'Amon', 'tas'),
[AllVars(None)])
assert (Fix.get_fixes('CMIP5', 'ACCESS1-0', 'Amon', 'tas')
== [AllVars(None)])

def test_fix_metadata(self):
"""Test fix for bad calendar."""
cube = self.fix.fix_metadata([self.cube])[0]
time = cube.coord('time')
dates = num2date(time.points, time.units.name, time.units.calendar)
self.assertEqual(time.units.calendar, 'gregorian')
u = Unit('days since 300-01-01 12:00:00', calendar='gregorian')
self.assertEqual(dates[0], u.num2date(15))
u = Unit('days since 1850-01-01 12:00:00', calendar='gregorian')
self.assertEqual(dates[1], u.num2date(15))
assert time.units.calendar in ('standard', 'gregorian')
u = Unit('days since 300-01-01 12:00:00', calendar='standard')
assert dates[0] == u.num2date(15)
u = Unit('days since 1850-01-01 12:00:00', calendar='standard')
assert dates[1] == u.num2date(15)

def test_fix_metadata_if_not_time(self):
"""Test calendar fix do not fail if no time coord present."""
Expand Down
18 changes: 8 additions & 10 deletions tests/integration/cmor/_fixes/cmip5/test_access1_3.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
"""Test fixes for ACCESS1-3."""
import unittest
from datetime import datetime

from cf_units import Unit, num2date
Expand All @@ -12,7 +11,7 @@
from esmvalcore.iris_helpers import date2num


class TestAllVars(unittest.TestCase):
class TestAllVars:
"""Test fixes for all vars."""

def setUp(self):
Expand All @@ -32,20 +31,19 @@ def setUp(self):

def test_get(self):
"""Test getting of fix."""
self.assertListEqual(
Fix.get_fixes('CMIP5', 'ACCESS1-3', 'Amon', 'tas'),
[AllVars(None)])
assert (Fix.get_fixes('CMIP5', 'ACCESS1-3', 'Amon', 'tas')
== [AllVars(None)])

def test_fix_metadata(self):
"""Test fix for bad calendar."""
cube = self.fix.fix_metadata([self.cube])[0]
time = cube.coord('time')
dates = num2date(time.points, time.units.name, time.units.calendar)
self.assertEqual(time.units.calendar, 'gregorian')
u = Unit('days since 300-01-01 12:00:00', calendar='gregorian')
self.assertEqual(dates[0], u.num2date(15))
u = Unit('days since 1850-01-01 12:00:00', calendar='gregorian')
self.assertEqual(dates[1], u.num2date(15))
assert time.units.calendar in ('standard', 'gregorian')
u = Unit('days since 300-01-01 12:00:00', calendar='standard')
assert dates[0] == u.num2date(15)
u = Unit('days since 1850-01-01 12:00:00', calendar='standard')
assert dates[1] == u.num2date(15)

def test_fix_metadata_if_not_time(self):
"""Test calendar fix do not fail if no time coord present."""
Expand Down
14 changes: 5 additions & 9 deletions tests/integration/cmor/_fixes/cmip5/test_fgoals_g2.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
"""Test FGOALS-g2 fixes."""
import unittest

from cf_units import Unit
from iris.coords import DimCoord
from iris.cube import Cube
Expand All @@ -9,7 +7,7 @@
from esmvalcore.cmor.fix import Fix


class TestAll(unittest.TestCase):
class TestAll:
"""Test fixes for all vars."""

def setUp(self):
Expand All @@ -31,18 +29,16 @@ def setUp(self):

def test_get(self):
"""Test fix get."""
self.assertListEqual(
Fix.get_fixes('CMIP5', 'FGOALS-G2', 'Amon', 'tas'),
[AllVars(None)])
assert (Fix.get_fixes('CMIP5', 'FGOALS-G2', 'Amon', 'tas')
== [AllVars(None)])

def test_fix_metadata(self):
"""Test calendar fix."""
cube = self.fix.fix_metadata([self.cube])[0]

time = cube.coord('time')
self.assertEqual(time.units.origin,
'day since 1-01-01 00:00:00.000000')
self.assertEqual(time.units.calendar, 'gregorian')
assert time.units.origin == 'day since 1-01-01 00:00:00.000000'
assert time.units.calendar in ('standard', 'gregorian')

def test_fix_metadata_dont_fail_if_not_longitude(self):
"""Test calendar fix."""
Expand Down
2 changes: 1 addition & 1 deletion tests/sample_data/multimodel_statistics/test_multimodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
marks=pytest.mark.skip(
reason='Cannot calculate statistics with single cube in list')),
'365_day',
'gregorian',
'standard',
pytest.param(
'proleptic_gregorian',
marks=pytest.mark.xfail(
Expand Down
38 changes: 19 additions & 19 deletions tests/unit/preprocessor/_multimodel/test_multimodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

FREQUENCY_OPTIONS = ('daily', 'monthly', 'yearly') # hourly

CALENDAR_OPTIONS = ('360_day', '365_day', 'gregorian', 'proleptic_gregorian',
CALENDAR_OPTIONS = ('360_day', '365_day', 'standard', 'proleptic_gregorian',
'julian')


Expand All @@ -35,7 +35,7 @@ def assert_array_allclose(this, other):


def timecoord(frequency,
calendar='gregorian',
calendar='standard',
offset='days since 1850-01-01',
num=3):
"""Return a time coordinate with the given time points and calendar."""
Expand All @@ -58,7 +58,7 @@ def timecoord(frequency,

def generate_cube_from_dates(
dates,
calendar='gregorian',
calendar='standard',
offset='days since 1850-01-01',
fill_val=1,
len_data=3,
Expand Down Expand Up @@ -350,27 +350,27 @@ def test_unsupported_statistics_fail(statistic, error):


@pytest.mark.parametrize('calendar1, calendar2, expected', (
('360_day', '360_day', '360_day'),
('365_day', '365_day', '365_day'),
('365_day', '360_day', 'gregorian'),
('360_day', '365_day', 'gregorian'),
('gregorian', '365_day', 'gregorian'),
('proleptic_gregorian', 'julian', 'gregorian'),
('julian', '365_day', 'gregorian'),
('360_day', '360_day', ('360_day',)),
('365_day', '365_day', ('365_day',)),
('365_day', '360_day', ('standard', 'gregorian')),
('360_day', '365_day', ('standard', 'gregorian')),
('standard', '365_day', ('standard', 'gregorian')),
('proleptic_gregorian', 'julian', ('standard', 'gregorian')),
('julian', '365_day', ('standard', 'gregorian')),
))
def test_get_consistent_time_unit(calendar1, calendar2, expected):
"""Test same calendar returned or default if calendars differ.

Expected behaviour: If the calendars are the same, return that one.
If the calendars are not the same, return 'gregorian'.
If the calendars are not the same, return 'standard'.
"""
cubes = (
generate_cube_from_dates('monthly', calendar=calendar1),
generate_cube_from_dates('monthly', calendar=calendar2),
)

result = mm._get_consistent_time_unit(cubes)
assert result.calendar == expected
assert result.calendar in expected


@pytest.mark.parametrize('span', SPAN_OPTIONS)
Expand All @@ -395,7 +395,7 @@ def test_align(span):
calendars = set(cube.coord('time').units.calendar for cube in result_cubes)

assert len(calendars) == 1
assert list(calendars)[0] == 'gregorian'
assert list(calendars)[0] in ('standard', 'gregorian')

shapes = set(cube.shape for cube in result_cubes)

Expand Down Expand Up @@ -528,7 +528,7 @@ def test_edge_case_different_time_offsets(span):

time_coord = result_cube.coord('time')

assert time_coord.units.calendar == 'gregorian'
assert time_coord.units.calendar in ('standard', 'gregorian')
assert time_coord.units.origin == 'days since 1850-01-01'

desired = np.array((14., 45., 73.))
Expand Down Expand Up @@ -640,7 +640,7 @@ def test_unify_time_coordinates():
calendar='360_day',
offset='days since 1850-01-01')
cube2 = generate_cube_from_dates('monthly',
calendar='gregorian',
calendar='standard',
offset='days since 1943-05-16')

mm._unify_time_coordinates([cube1, cube2])
Expand Down Expand Up @@ -787,7 +787,7 @@ def test_ignore_tas_scalar_height_coord():
def test_daily_inconsistent_calendars():
"""Determine behaviour for inconsistent calendars.

Deviating calendars should be converted to gregorian. Missing data
Deviating calendars should be converted to standard. Missing data
inside original bounds is filled with nearest neighbour Missing data
outside original bounds is masked.
"""
Expand All @@ -804,7 +804,7 @@ def test_daily_inconsistent_calendars():

leapcube = generate_cube_from_dates(
leapdates,
calendar='gregorian',
calendar='standard',
offset='days since 1850-01-01',
fill_val=1,
)
Expand All @@ -821,7 +821,7 @@ def test_daily_inconsistent_calendars():
# span=full
aligned_cubes = mm._align(cubes, span='full')
for cube in aligned_cubes:
assert cube.coord('time').units.calendar == "gregorian"
assert cube.coord('time').units.calendar in ("standard", "gregorian")
assert cube.shape == (367, )
assert cube[59].coord('time').points == 789 # 29 Feb 1852
np.ma.is_masked(aligned_cubes[1][366].data) # outside original range
Expand All @@ -834,7 +834,7 @@ def test_daily_inconsistent_calendars():
# span=overlap
aligned_cubes = mm._align(cubes, span='overlap')
for cube in aligned_cubes:
assert cube.coord('time').units.calendar == "gregorian"
assert cube.coord('time').units.calendar in ("standard", "gregorian")
assert cube.shape == (365, )
assert cube[59].coord('time').points == 790 # 1 March 1852

Expand Down