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
# coding=utf-8
from unittest import TestCase
from earthdiagnostics.diagnostic import DiagnosticVariableOption, DiagnosticOptionError
from earthdiagnostics.box import Box
from earthdiagnostics.general.verticalmeanmetersiris import VerticalMeanMetersIris
from earthdiagnostics.frequency import Frequencies
from mock import Mock, patch
from earthdiagnostics.modelingrealm import ModelingRealms
class TestVerticalMeanMetersIris(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))
self.diags.config.experiment.startdates = ['20010101', ]
self.diags.config.frequency = Frequencies.monthly
self.box = Box()
self.box.min_depth = 0
self.box.max_depth = 100
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(True)
jobs = VerticalMeanMetersIris.generate_jobs(self.diags, ['diagnostic', 'var'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], VerticalMeanMetersIris(self.data_manager, '20010101', 0, 0,
ModelingRealms.ocean, 'var', box))
self.assertEqual(jobs[1], VerticalMeanMetersIris(self.data_manager, '20010101', 0, 1,
ModelingRealms.ocean, 'var', box))
box = Box(True)
box.min_depth = 0
box.max_depth = 100
jobs = VerticalMeanMetersIris.generate_jobs(self.diags, ['diagnostic', 'var', '0', '100'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], VerticalMeanMetersIris(self.data_manager, '20010101', 0, 0,
ModelingRealms.ocean, 'var', box))
self.assertEqual(jobs[1], VerticalMeanMetersIris(self.data_manager, '20010101', 0, 1,
ModelingRealms.ocean, 'var', box))
jobs = VerticalMeanMetersIris.generate_jobs(self.diags, ['diagnostic', 'var', '0', '100', 'seaIce'])
self.assertEqual(len(jobs), 2)
self.assertEqual(jobs[0], VerticalMeanMetersIris(self.data_manager, '20010101', 0, 0,
ModelingRealms.seaIce, 'var', box))
self.assertEqual(jobs[1], VerticalMeanMetersIris(self.data_manager, '20010101', 0, 1,
ModelingRealms.seaIce, 'var', box))
with self.assertRaises(DiagnosticOptionError):
VerticalMeanMetersIris.generate_jobs(self.diags, ['diagnostic'])
with self.assertRaises(DiagnosticOptionError):
VerticalMeanMetersIris.generate_jobs(self.diags, ['diagnostic', 'var', '0', '100', 'seaIce', 'extra'])
def test_str(self):
box = Box(True)
box.min_depth = 0
box.max_depth = 100
mixed = VerticalMeanMetersIris(self.data_manager, '20010101', 0, 0, ModelingRealms.atmos, 'var', box)
self.assertEquals(str(mixed), 'Vertical mean meters Startdate: 20010101 Member: 0 Chunk: 0 Variable: atmos:var '
'Box: 0-100m')