Newer
Older
1
2
3
4
5
6
7
8
9
10
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
54
55
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
# coding=utf-8
from unittest import TestCase
from earthdiagnostics.ocean.regionmean import RegionMean
from earthdiagnostics.modelingrealm import ModelingRealms
from earthdiagnostics.constants import Basins
from earthdiagnostics.box import Box
from earthdiagnostics.diagnostic import DiagnosticOptionError, DiagnosticVariableOption
from mock import Mock, patch
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
box.max_depth = 10
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.assertEquals(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')