def test_normalize(self): dataset_flagged_specifier = TypeSpecifier(name='dataset', flags={'cube'}) self.assertEqual(TypeSpecifier.normalize(dataset_flagged_specifier), dataset_flagged_specifier) self.assertEqual(TypeSpecifier.normalize('dataset[cube]'), dataset_flagged_specifier) dataset_specifier = TypeSpecifier(name='dataset') self.assertEqual(TypeSpecifier.normalize(dataset_specifier), dataset_specifier) self.assertEqual(TypeSpecifier.normalize('dataset'), dataset_specifier)
def test_equality_any(self): type_specifier = TypeSpecifier(name='*') self.assertFalse(type_specifier == TypeSpecifier('geodataframe')) self.assertFalse( type_specifier == TypeSpecifier('geodataframe', flags={'cube'})) self.assertFalse(type_specifier == TypeSpecifier('dataset')) self.assertFalse( type_specifier == TypeSpecifier('dataset', flags={'multilevel'})) self.assertFalse(type_specifier == TypeSpecifier( 'dataset', flags={'multilevel', 'cube'})) self.assertFalse( type_specifier == TypeSpecifier('dataset', flags={'cube'})) self.assertTrue(type_specifier == TypeSpecifier('*'))
def test_it_satisfies_with_flags(self): type_specifier = TypeSpecifier(name='dataset', flags={'cube'}) self._assert_it_not_satisfies(type_specifier, TypeSpecifier('geodataframe')) self._assert_it_not_satisfies( type_specifier, TypeSpecifier('geodataframe', flags={'cube'})) self._assert_it_not_satisfies( type_specifier, TypeSpecifier('dataset', flags={'multilevel'})) self._assert_it_not_satisfies( type_specifier, TypeSpecifier('dataset', flags={'multilevel', 'cube'})) self._assert_it_satisfies(type_specifier, TypeSpecifier('dataset')) self._assert_it_satisfies(type_specifier, TypeSpecifier('dataset', flags={'cube'})) self._assert_it_satisfies(type_specifier, TypeSpecifier('*'))
def test_it_satisfies_as_any(self): type_specifier = TypeSpecifier(name='*') self._assert_it_satisfies(type_specifier, TypeSpecifier('geodataframe')) self._assert_it_satisfies( type_specifier, TypeSpecifier('geodataframe', flags={'cube'})) self._assert_it_satisfies(type_specifier, TypeSpecifier('dataset')) self._assert_it_satisfies(type_specifier, TypeSpecifier('dataset', flags={'cube'})) self._assert_it_satisfies(type_specifier, TypeSpecifier('*'))
def test_to_dict(self): var_descriptors = [ VariableDescriptor(name='xf', dtype='rj', dims=('dfjhrt', 'sg'), attrs=dict(ssd=4, zjgrhgu='dgfrf')) ] descriptor = DatasetDescriptor(data_id='xyz', type_specifier=TypeSpecifier( 'dataset', flags={'cube'}), crs='EPSG:9346', bbox=(10., 20., 30., 40.), spatial_res=20., time_range=('2017-06-05', '2017-06-27'), time_period='daily', dims=dict(x=1, y=2, z=3), data_vars=var_descriptors, attrs=dict(dzus=236, tgr7h='rt5', df='s8fd4w5')) descriptor_dict = descriptor.to_dict() self.assertEqual( dict(data_id='xyz', type_specifier='dataset[cube]', crs='EPSG:9346', bbox=(10., 20., 30., 40.), spatial_res=20., time_range=('2017-06-05', '2017-06-27'), time_period='daily', dims=dict(x=1, y=2, z=3), data_vars=[ dict(name='xf', dtype='rj', dims=('dfjhrt', 'sg'), ndim=2, attrs=dict(ssd=4, zjgrhgu='dgfrf')) ], attrs=dict(dzus=236, tgr7h='rt5', df='s8fd4w5')), descriptor_dict)
def test_it_satisfies_without_flags(self): type_specifier = TypeSpecifier(name='dataset') self._assert_it_not_satisfies(type_specifier, TypeSpecifier('dataset', flags={'cube'})) self._assert_it_satisfies(type_specifier, TypeSpecifier('dataset')) self._assert_it_satisfies(type_specifier, TypeSpecifier('*'))
def test_equality_flag_order_is_irrelevant(self): type_specifier_1 = TypeSpecifier(name='dataset', flags={'cube', 'multilevel'}) type_specifier_2 = TypeSpecifier(name='dataset', flags={'multilevel', 'cube'}) self.assertTrue(type_specifier_1 == type_specifier_2)
def test_string(self): type_specifier = TypeSpecifier(name='dataset', flags={'cube', 'multilevel'}) self.assertEqual(str(type_specifier), 'dataset[cube,multilevel]')
def test_name_and_flags(self): type_specifier = TypeSpecifier(name='dataset', flags={'cube', 'multilevel'}) self.assertEqual('dataset', type_specifier.name) self.assertEqual({'cube', 'multilevel'}, type_specifier.flags)
def test_any_and_flags(self): with self.assertRaises(ValueError) as cm: TypeSpecifier(name='*', flags={'cube'}) self.assertEqual('flags are not allowed if name is "*" (any)', f'{cm.exception}')
def test_any(self): type_specifier = TypeSpecifier(name='*') self.assertEqual('*', type_specifier.name)
def test_name(self): type_specifier = TypeSpecifier(name='dataset') self.assertEqual('dataset', type_specifier.name) self.assertEqual(set(), type_specifier.flags)
def test_parse(self): self.assertEqual(TypeSpecifier('*'), TypeSpecifier.parse('*')) self.assertEqual(TypeSpecifier('dataset'), TypeSpecifier.parse('dataset')) self.assertEqual(TypeSpecifier('dataset', {'cube', 'multilevel'}), TypeSpecifier.parse('dataset[cube,multilevel]'))