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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
from unittest import TestCase
from ..core import Calendar
from ..exceptions import ISORegistryError
from ..registry import IsoRegistry
class RegionCalendar(Calendar):
'Region'
class SubRegionCalendar(Calendar):
'Sub Region'
class NotACalendarClass:
"Not a Calendar"
class NonStandardRegistryTest(TestCase):
def setUp(self):
self.region = RegionCalendar
self.subregion = SubRegionCalendar
def test_region_registry(self):
registry = IsoRegistry(load_standard_modules=False)
self.assertEqual(0, len(registry.region_registry))
registry.register('RE', self.region)
self.assertEqual(1, len(registry.region_registry))
self.assertEqual(RegionCalendar, registry.region_registry['RE'])
def test_register_non_calendar(self):
registry = IsoRegistry(load_standard_modules=False)
with self.assertRaises(ISORegistryError):
registry.register("NAC", NotACalendarClass)
def test_get(self):
registry = IsoRegistry(load_standard_modules=False)
registry.register('RE', self.region)
registry.register('RE-SR', self.subregion)
calendar_class = registry.get('RE')
self.assertEqual(calendar_class, RegionCalendar)
# Subregion
calendar_class = registry.get('RE-SR')
self.assertEqual(calendar_class, SubRegionCalendar)
# Unknown code/region
self.assertIsNone(registry.get('XX'))
def test_get_subregions(self):
registry = IsoRegistry(load_standard_modules=False)
registry.register('RE', self.region)
registry.register('RE-SR', self.subregion)
registry.register('OR-SR', self.subregion)
subregions = registry.get_subregions('RE')
# Only one sub-region here
self.assertEqual(1, len(subregions))
self.assertIn('RE-SR', subregions)
def test_get_calendars(self):
registry = IsoRegistry(load_standard_modules=False)
registry.register('RE', self.region)
registry.register('RE-SR', self.subregion)
registry.register('OR-SR', self.subregion)
calendars = registry.get_calendars(['RE'], include_subregions=True)
self.assertEqual(2, len(calendars))
self.assertIn('RE', calendars)
self.assertIn('RE-SR', calendars)
calendars = registry.get_calendars(['RE'], include_subregions=False)
self.assertEqual(1, len(calendars))
self.assertIn('RE', calendars)
def test_get_calendars_unknown(self):
registry = IsoRegistry(load_standard_modules=False)
registry.register('RE', self.region)
calendars = registry.get_calendars(['XX'])
self.assertEqual(calendars, {})
def test_get_calendars_with_subregions(self):
registry = IsoRegistry(load_standard_modules=False)
registry.register('RE', self.region)
registry.register('RE2', self.region)
registry.register('RE-SR', self.subregion)
calendars = registry.get_calendars(
['RE2', "RE-SR"], include_subregions=True)
self.assertEqual(2, len(calendars))
self.assertIn('RE2', calendars)
self.assertIn('RE-SR', calendars)
calendars = registry.get_calendars(
['RE2', "RE-SR"], include_subregions=False)
self.assertEqual(2, len(calendars))
self.assertIn('RE2', calendars)
self.assertIn('RE-SR', calendars)
# Only a subregion
calendars = registry.get_calendars(["RE-SR"], include_subregions=True)
self.assertEqual(1, len(calendars))
self.assertIn('RE-SR', calendars)
def test_get_calendars_empty_arg(self):
registry = IsoRegistry(load_standard_modules=False)
# 3 regions, one sub-region
registry.register('RE', self.region)
registry.register('RE2', self.region)
registry.register('RE3', self.region)
registry.register('RE-SR', self.subregion)
# Empty arg, no subregions
calendars = registry.get_calendars([], include_subregions=False)
self.assertEqual(len(calendars), 3)
self.assertEqual({"RE", "RE2", "RE3"}, set(calendars))
# Empty arg, with subregions
calendars = registry.get_calendars([], include_subregions=True)
self.assertEqual(len(calendars), 4)
self.assertEqual({"RE", "RE2", "RE3", "RE-SR"}, set(calendars))
def test_get_calendars_no_arg(self):
registry = IsoRegistry(load_standard_modules=False)
# 3 regions, one sub-region
registry.register('RE', self.region)
registry.register('RE2', self.region)
registry.register('RE3', self.region)
registry.register('RE-SR', self.subregion)
# Should be equivalent to [] + no subregions
calendars = registry.get_calendars()
self.assertEqual(len(calendars), 3)
self.assertEqual({"RE", "RE2", "RE3"}, set(calendars))
# Should be equivalent to [] + include subregions
calendars = registry.get_calendars(include_subregions=True)
self.assertEqual(len(calendars), 4)
self.assertEqual({"RE", "RE2", "RE3", "RE-SR"}, set(calendars))
|