예제 #1
0
    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)
예제 #2
0
 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('*'))
예제 #3
0
 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('*'))
예제 #4
0
 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('*'))
예제 #5
0
 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)
예제 #6
0
 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('*'))
예제 #7
0
 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)
예제 #8
0
 def test_string(self):
     type_specifier = TypeSpecifier(name='dataset',
                                    flags={'cube', 'multilevel'})
     self.assertEqual(str(type_specifier), 'dataset[cube,multilevel]')
예제 #9
0
 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)
예제 #10
0
 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}')
예제 #11
0
 def test_any(self):
     type_specifier = TypeSpecifier(name='*')
     self.assertEqual('*', type_specifier.name)
예제 #12
0
 def test_name(self):
     type_specifier = TypeSpecifier(name='dataset')
     self.assertEqual('dataset', type_specifier.name)
     self.assertEqual(set(), type_specifier.flags)
예제 #13
0
 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]'))