Newer
Older
# coding=utf-8
from unittest import TestCase
from earthdiagnostics.box import Box
from earthdiagnostics.constants import Basins
from earthdiagnostics.diagnostic import DiagnosticOptionError, DiagnosticVariableOption
from earthdiagnostics.modelingrealm import ModelingRealms
from earthdiagnostics.ocean.regionmean import RegionMean
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class TestRegionMean(TestCase):
def setUp(self):
self.data_manager = Mock()
self.diags = Mock()
self.diags.config.experiment.get_chunk_list.return_value = (('20010101', 0, 0), ('20010101', 0, 1))
def fake_parse(self, value):
if not value:
raise DiagnosticOptionError
return value
@patch.object(DiagnosticVariableOption, 'parse', fake_parse)
def test_generate_jobs(self):
box = Box()
box.min_depth = 0
box.max_depth = 0
jobs = RegionMean.generate_jobs(self.diags, ['diagnostic', 'ocean', 'var'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], RegionMean(self.data_manager, '20010101', 0, 0, ModelingRealms.ocean, 'var', 'T',
box, True, Basins().Global, False, ''))
self.assertEqual(jobs[1], RegionMean(self.data_manager, '20010101', 0, 1, ModelingRealms.ocean, 'var', 'T',
box, True, Basins().Global, False, ''))
jobs = RegionMean.generate_jobs(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', 'U',
box, True, Basins().Global, False, ''))
self.assertEqual(jobs[1], RegionMean(self.data_manager, '20010101', 0, 1, ModelingRealms.ocean, 'var', 'U',
box, True, Basins().Global, False, ''))
jobs = RegionMean.generate_jobs(self.diags, ['diagnostic', 'ocean', 'var', 'U', 'global'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], RegionMean(self.data_manager, '20010101', 0, 0, ModelingRealms.ocean, 'var', 'U',
box, True, Basins().Global, False, ''))
self.assertEqual(jobs[1], RegionMean(self.data_manager, '20010101', 0, 1, ModelingRealms.ocean, 'var', 'U',
box, True, Basins().Global, False, ''))
box = Box()
box.min_depth = 1.0
box.max_depth = 10.0
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
jobs = RegionMean.generate_jobs(self.diags, ['diagnostic', 'ocean', 'var', 'U', 'global', '1', '10'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], RegionMean(self.data_manager, '20010101', 0, 0, ModelingRealms.ocean, 'var', 'U',
box, True, Basins().Global, False, ''))
self.assertEqual(jobs[1], RegionMean(self.data_manager, '20010101', 0, 1, ModelingRealms.ocean, 'var', 'U',
box, True, Basins().Global, False, ''))
jobs = RegionMean.generate_jobs(self.diags, ['diagnostic', 'ocean', 'var', 'U', 'global', '1', '10', 'false'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], RegionMean(self.data_manager, '20010101', 0, 0, ModelingRealms.ocean, 'var', 'U',
box, False, Basins().Global, False, ''))
self.assertEqual(jobs[1], RegionMean(self.data_manager, '20010101', 0, 1, ModelingRealms.ocean, 'var', 'U',
box, False, Basins().Global, False, ''))
jobs = RegionMean.generate_jobs(self.diags, ['diagnostic', 'ocean', 'var', 'U', 'global', '1', '10', 'false',
'True'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], RegionMean(self.data_manager, '20010101', 0, 0, ModelingRealms.ocean, 'var', 'U',
box, False, Basins().Global, True, ''))
self.assertEqual(jobs[1], RegionMean(self.data_manager, '20010101', 0, 1, ModelingRealms.ocean, 'var', 'U',
box, False, Basins().Global, True, ''))
jobs = RegionMean.generate_jobs(self.diags, ['diagnostic', 'ocean', 'var', 'U', 'global', '1', '10', 'false',
'True', 'grid'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], RegionMean(self.data_manager, '20010101', 0, 0, ModelingRealms.ocean, 'var', 'U',
box, False, Basins().Global, True, 'grid'))
self.assertEqual(jobs[1], RegionMean(self.data_manager, '20010101', 0, 1, ModelingRealms.ocean, 'var', 'U',
box, False, Basins().Global, True, 'grid'))
with self.assertRaises(DiagnosticOptionError):
RegionMean.generate_jobs(self.diags, ['diagnostic'])
with self.assertRaises(DiagnosticOptionError):
RegionMean.generate_jobs(self.diags, ['diagnostic', 'ocean', 'var', 'U', 'global', '1', '10', 'false',
'True', 'grid', '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', 'U', box, False,
Basins().Global, True, 'grid')
self.assertEqual(str(diag), 'Region mean Startdate: 20010101 Member: 0 Chunk: 0 Variable: var Grid point: U '
'Box: 1-10 Save 3D: False Save variance: True Original grid: grid Basin: Global')