def test__same(self): kwargs = dict( standard_name=1, long_name=2, var_name=3, units=4, attributes=5 ) metadata = metadata_manager_factory(BaseMetadata, **kwargs) other = metadata_manager_factory(BaseMetadata, **kwargs) self.assertEqual(metadata.values._asdict(), kwargs) self.assertEqual(metadata, other)
def test(self): for base in self.bases: fields = base._fields metadata = metadata_manager_factory(base) self.assertEqual(metadata.fields, fields) for field in fields: hasattr(metadata, field)
def test__subclass_invalid(self): class Other: pass emsg = "Require a subclass of 'BaseMetadata'" with self.assertRaisesRegex(TypeError, emsg): _ = metadata_manager_factory(Other)
def test__not_values(self): standard_name = mock.sentinel.standard_name other = metadata_manager_factory(BaseMetadata, standard_name=standard_name) self.assertEqual(other.standard_name, standard_name) self.assertIsNone(other.long_name) self.assertIsNone(other.var_name) self.assertIsNone(other.units) self.assertIsNone(other.attributes) self.assertNotEqual(self.metadata, other)
def setUp(self): self.standard_name = "standard_name" self.long_name = "long_name" self.var_name = "var_name" self.units = Unit("1") self.attributes = dict(hello="world") values = ( self.standard_name, self.long_name, self.var_name, self.units, self.attributes, ) kwargs = dict(zip(BaseMetadata._fields, values)) self.metadata = metadata_manager_factory(BaseMetadata, **kwargs)
def test__namespace(self): namespace = [ "DEFAULT_NAME", "__init__", "__eq__", "__getstate__", "__ne__", "__reduce__", "__repr__", "__setstate__", "fields", "name", "token", "values", ] for base in self.bases: metadata = metadata_manager_factory(base) for name in namespace: self.assertTrue(hasattr(metadata, name)) if base is CubeMetadata: self.assertTrue(hasattr(metadata, "_names")) self.assertIs(metadata.cls, base)
def test__not_is_cls(self): base = BaseMetadata other = metadata_manager_factory(base) self.assertIs(other.cls, base) other.cls = CoordMetadata self.assertNotEqual(self.metadata, other)
def setUp(self): self.metadata = metadata_manager_factory(BaseMetadata)
def test__kwargs(self): for base in self.bases: kwargs = dict(zip(base._fields, range(len(base._fields)))) metadata = metadata_manager_factory(base, **kwargs) self.assertEqual(metadata.values._asdict(), kwargs)
def test__kwargs_default(self): for base in self.bases: kwargs = dict(zip(base._fields, [None] * len(base._fields))) metadata = metadata_manager_factory(base) self.assertEqual(metadata.values._asdict(), kwargs)
def test__kwargs_invalid(self): emsg = "Invalid 'BaseMetadata' field parameters, got 'wibble'." with self.assertRaisesRegex(ValueError, emsg): metadata_manager_factory(BaseMetadata, wibble="nope")
def test(self): for base in self.bases: metadata = metadata_manager_factory(base) result = metadata.values self.assertIsInstance(result, base) self.assertEqual(result._fields, base._fields)
def test__same_default(self): other = metadata_manager_factory(BaseMetadata) self.assertEqual(self.metadata, other)