test_climatologicalpercentile.py 1.84 KB
Newer Older
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
# coding=utf-8
from unittest import TestCase

from earthdiagnostics.statistics.climatologicalpercentile import ClimatologicalPercentile
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
from earthdiagnostics.diagnostic import DiagnosticVariableOption
from mock import Mock, patch
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed

from earthdiagnostics.modelingrealm import ModelingRealms


class TestClimatologicalPercentile(TestCase):

    def setUp(self):
        self.data_manager = Mock()
        self.data_manager.variable_list.get_variable.return_value = None

        self.diags = Mock()
        self.diags.data_manager = self.data_manager

Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
    def fake_parse(self, value):
        return value
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed

Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
    @patch.object(DiagnosticVariableOption, 'parse', fake_parse)
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
    def test_generate_jobs(self):
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        jobs = ClimatologicalPercentile.generate_jobs(self.diags, ['climpercent', 'ocean', 'var', '2000', '2001', '11'])
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        self.assertEqual(len(jobs), 1)
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        self.assertEqual(jobs[0], ClimatologicalPercentile(self.data_manager, ModelingRealms.ocean, 'var',
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
                                                           2000, 2001, 11,
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
                                                           self.diags.config.experiment))
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed

        with self.assertRaises(Exception):
            ClimatologicalPercentile.generate_jobs(self.diags, ['climpercent'])
        with self.assertRaises(Exception):
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
            ClimatologicalPercentile.generate_jobs(self.diags, ['climpercent', 'ocean', 'var', '2000', '2001', '11',
                                                                'extra'])
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed

    def test_str(self):
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        diagnostic = ClimatologicalPercentile(self.data_manager, ModelingRealms.ocean, 'var',
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
                                                   2000, 2001, 11, self.diags.config.experiment)
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed

        self.assertEquals(str(diagnostic), 'Climatological percentile Variable: ocean:var Period: 2000-2001 '
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
                                           'Forecast month: 11')