Newer
Older
# coding=utf-8
from unittest import TestCase
from earthdiagnostics.datamanager import DataManager, Variable, UnitConversion
from experimentmanager import ExperimentManager
from datetime import date
class TestDataManager(TestCase):
def setUp(self):
self.data_manager = DataManager(ExperimentManager(['20000101'], [0], 5, 3, 3), 'institution', 'model', 'expid',
'datafolder', 'mon', 'experiment', 'scratch', 6)
def test_domain_abbreviation(self):
self.assertEquals('Omon', DataManager.domain_abbreviation('Ocean', 'mon'))
self.assertEquals('OImon', DataManager.domain_abbreviation('seaIce', 'mon'))
self.assertEquals('LImon', DataManager.domain_abbreviation('landIce', 'mon'))
self.assertEquals('Amon', DataManager.domain_abbreviation('atmos', 'mon'))
self.assertEquals('day', DataManager.domain_abbreviation('atmos', 'day'))
self.assertEquals('6hrPlev', DataManager.domain_abbreviation('atmos', '6hr'))
def test_get_grib_filename(self):
self.assertEqual(self.data_manager._get_grib_filename('SH', date(2000, 1, 1)), 'ICMSHexpid+200001.grb')
def test_get_startdate_path(self):
self.assertEqual(self.data_manager.get_startdate_path('20000101'),
'datafolder/expid/cmorfiles/institution/model/experiment/S20000101')
class TestVariable(TestCase):
def test__init__(self):
variable = Variable('alias:alias2,name,standard_name,long_name,domain,basin,units,'
'valid_min,valid_max'.split(','))
self.assertEqual(variable.short_name, 'name')
self.assertEqual(variable.standard_name, 'standard_name')
self.assertEqual(variable.long_name, 'long_name')
self.assertEqual(variable.domain, 'domain')
self.assertEqual(variable.basin, None)
self.assertEqual(variable.units, 'units')
self.assertEqual(variable.valid_min, 'valid_min')
self.assertEqual(variable.valid_max, 'valid_max')
def test_get_variable(self):
Variable._dict_variables = dict()
variable = Variable('alias:alias2,name,standard_name,long_name,domain,basin,units,valid_min,'
'valid_max'.split(','))
Variable._dict_variables['var'] = variable
self.assertIs(Variable.get_variable('var'), variable)
self.assertIsNone(Variable.get_variable('novar'))
class TestConversion(TestCase):
def test__init(self):
conversion = UnitConversion('km', 'm', 1000, 0)
self.assertEqual(conversion.source, 'km')
self.assertEqual(conversion.destiny, 'm')
self.assertEqual(conversion.factor, 1000)
self.assertEqual(conversion.offset, 0)
def test_add_conversion(self):
UnitConversion._dict_conversions = dict()
conversion = UnitConversion('km', 'm', 1000, 0)
UnitConversion.add_conversion(conversion)
self.assertIs(UnitConversion._dict_conversions[('km', 'm')], conversion)
UnitConversion._dict_conversions = dict()
def test_get_factor_offset(self):
UnitConversion._dict_conversions = dict()
conversion = UnitConversion('km', 'm', 1000, 0)
UnitConversion.add_conversion(conversion)
self.assertEqual(UnitConversion.get_conversion_factor_offset('km', 'm'), (1000, 0))
self.assertEqual(UnitConversion.get_conversion_factor_offset('m', 'km'), (1 / 1000.0, 0))
self.assertEqual(UnitConversion.get_conversion_factor_offset('1e3 m', 'km'), (1, 0))
self.assertEqual(UnitConversion.get_conversion_factor_offset('10^3 m', 'km'), (1, 0))
self.assertEqual(UnitConversion.get_conversion_factor_offset('km', '1e3 m'), (1, 0))
self.assertEqual(UnitConversion.get_conversion_factor_offset('km', '10^3 m'), (1, 0))
self.assertEqual(UnitConversion.get_conversion_factor_offset('m', 'm'), (1, 0))
self.assertEqual(UnitConversion.get_conversion_factor_offset('m²', 'km'), (None, None))
UnitConversion._dict_conversions = dict()