Newer
Older
# coding=utf-8
from unittest import TestCase
from earthdiagnostics.box import Box
from earthdiagnostics.frequency import Frequencies
from earthdiagnostics.constants import Basins
from earthdiagnostics.diagnostic import (
DiagnosticOptionError,
DiagnosticVariableListOption,
)
from earthdiagnostics.modelingrealm import ModelingRealms
from earthdiagnostics.ocean.regionmean import RegionMean
from earthdiagnostics.utils import TempFile
class TestRegionMean(TestCase):
def setUp(self):
self.data_manager = Mock()
self.diags = Mock()
self.diags.config.experiment.get_chunk_list.return_value = (
self.diags.config.frequency = Frequencies.monthly
def fake_parse(self, value):
if not value:
raise DiagnosticOptionError
return value
@patch.object(DiagnosticVariableListOption, "parse", fake_parse)
@patch.object(TempFile, "get", fake_get)
def test_generate_jobs(self):
box = Box()
self.assertEqual(len(jobs), 2)
self.assertEqual(
jobs[0],
RegionMean(
self.data_manager,
"20010101",
0,
0,
ModelingRealms.ocean,
"var",
box,
True,
[Basins().Global],
"t",
Frequencies.monthly,
),
)
self.assertEqual(
jobs[1],
RegionMean(
self.data_manager,
"20010101",
0,
1,
ModelingRealms.ocean,
"var",
box,
True,
[Basins().Global],
self.diags, ["diagnostic", "ocean", ["var"], "", "U"]
)
self.assertEqual(len(jobs), 2)
self.assertEqual(
jobs[0],
RegionMean(
self.data_manager,
"20010101",
0,
0,
ModelingRealms.ocean,
"var",
box,
True,
[Basins().Global],
"u",
Frequencies.monthly,
),
)
self.assertEqual(
jobs[1],
RegionMean(
self.data_manager,
"20010101",
0,
1,
ModelingRealms.ocean,
"var",
box,
True,
[Basins().Global],
self.diags, ["diagnostic", "ocean", ["var"], "global", "U"]
)
self.assertEqual(len(jobs), 2)
self.assertEqual(
jobs[0],
RegionMean(
self.data_manager,
"20010101",
0,
0,
ModelingRealms.ocean,
"var",
box,
True,
[Basins().Global],
"u",
Frequencies.monthly,
),
)
self.assertEqual(
jobs[1],
RegionMean(
self.data_manager,
"20010101",
0,
1,
ModelingRealms.ocean,
"var",
box,
True,
[Basins().Global],
box = Box()
box.min_depth = 1.0
box.max_depth = 10.0
self.diags,
["diagnostic", "ocean", ["var"], "global", "U", "1", "10"],
)
self.assertEqual(len(jobs), 2)
self.assertEqual(
jobs[0],
RegionMean(
self.data_manager,
"20010101",
0,
0,
ModelingRealms.ocean,
"var",
box,
True,
[Basins().Global],
"u",
Frequencies.monthly,
),
)
self.assertEqual(
jobs[1],
RegionMean(
self.data_manager,
"20010101",
0,
1,
ModelingRealms.ocean,
"var",
box,
True,
[Basins().Global],
jobs = RegionMean.generate_jobs(
self.diags,
[
"diagnostic",
"ocean",
["var"],
"global",
"U",
"1",
"10",
"false",
],
self.assertEqual(len(jobs), 2)
self.assertEqual(
jobs[0],
RegionMean(
self.data_manager,
"20010101",
0,
0,
ModelingRealms.ocean,
"var",
box,
False,
[Basins().Global],
"u",
Frequencies.monthly,
),
)
self.assertEqual(
jobs[1],
RegionMean(
self.data_manager,
"20010101",
0,
1,
ModelingRealms.ocean,
"var",
box,
False,
[Basins().Global],
jobs = RegionMean.generate_jobs(
self.diags,
[
"diagnostic",
"ocean",
["var"],
"global",
"U",
"1",
"10",
"false",
"grid",
],
self.assertEqual(len(jobs), 2)
self.assertEqual(
jobs[0],
RegionMean(
self.data_manager,
"20010101",
0,
0,
ModelingRealms.ocean,
"var",
box,
False,
[Basins().Global],
"grid",
Frequencies.monthly,
),
)
self.assertEqual(
jobs[1],
RegionMean(
self.data_manager,
"20010101",
0,
1,
ModelingRealms.ocean,
"var",
box,
False,
[Basins().Global],
jobs = RegionMean.generate_jobs(
self.diags,
[
"diagnostic",
"ocean",
["var"],
"global",
"U",
"1",
"10",
"false",
"grid",
"day",
],
)
self.assertEqual(len(jobs), 2)
self.assertEqual(
jobs[0],
RegionMean(
self.data_manager,
"20010101",
0,
0,
ModelingRealms.ocean,
"var",
box,
False,
[Basins().Global],
"grid",
Frequencies.daily,
),
)
self.assertEqual(
jobs[1],
RegionMean(
self.data_manager,
"20010101",
0,
1,
ModelingRealms.ocean,
"var",
box,
False,
[Basins().Global],
with self.assertRaises(DiagnosticOptionError):
RegionMean.generate_jobs(self.diags, ["diagnostic"])
with self.assertRaises(DiagnosticOptionError):
RegionMean.generate_jobs(
self.diags,
[
"diagnostic",
"ocean",
["var"],
"global",
"U",
"1",
"10",
"false",
"grid",
"day",
"extra",
],
def test_str(self):
box = Box()
box.min_depth = 1
box.max_depth = 10
diag = RegionMean(
self.data_manager,
"20010101",
0,
0,
ModelingRealms.ocean,
"var",
box,
False,
"T",
Frequencies.monthly,
)
self.assertEqual(
str(diag),
"Region mean Startdate: 20010101 Member: 0 Chunk: 0 Variable: var "