test_daysoverpercentile.py 1.57 KB
Newer Older
# coding=utf-8
from unittest import TestCase

from mock import Mock

from earthdiagnostics.modelingrealm import ModelingRealms
from earthdiagnostics.statistics.daysoverpercentile import DaysOverPercentile


class TestDaysOverPercentile(TestCase):

    def setUp(self):
        self.data_manager = Mock()
        self.diags = Mock()
        self.diags.config.experiment.get_chunk_list.return_value = (('20011101', 0, 0), ('20011101', 0, 1))

    def test_generate_jobs(self):
        jobs = DaysOverPercentile.generate_jobs(self.diags, ['monpercent', 'ocean', 'var', '2000', '2001', '11'])
        self.assertEqual(len(jobs), 2)
        self.assertEqual(jobs[0], DaysOverPercentile(self.data_manager, ModelingRealms.ocean, 'var', 2000, 2001,
                                                     2000, 11))
        self.assertEqual(jobs[1], DaysOverPercentile(self.data_manager, ModelingRealms.ocean, 'var', 2000, 2001,
                                                     2001, 11))

        with self.assertRaises(Exception):
            DaysOverPercentile.generate_jobs(self.diags, ['monpercent', 'ocean', 'var', '2000', '2001'])
        with self.assertRaises(Exception):
            DaysOverPercentile.generate_jobs(self.diags, ['monpercent', 'ocean', 'var', '2000', '2001', '11', 'extra'])

    def test_str(self):
        diagnostic = DaysOverPercentile(self.data_manager, ModelingRealms.ocean, 'var', 2000, 2001, '20001101', 11)
        self.assertEquals(str(diagnostic), 'Days over percentile Startdate: 20001101 Variable: ocean:var '
                                           'Climatology: 2000-2001')