def test_properties(): instance = m.TestProperties() assert instance.def_readonly == 1 with pytest.raises(AttributeError): instance.def_readonly = 2 instance.def_readwrite = 2 assert instance.def_readwrite == 2 assert instance.def_property_readonly == 2 with pytest.raises(AttributeError): instance.def_property_readonly = 3 instance.def_property = 3 assert instance.def_property == 3 with pytest.raises(AttributeError) as excinfo: dummy = instance.def_property_writeonly # noqa: F841 unused var assert "unreadable attribute" in str(excinfo.value) instance.def_property_writeonly = 4 assert instance.def_property_readonly == 4 with pytest.raises(AttributeError) as excinfo: dummy = instance.def_property_impossible # noqa: F841 unused var assert "unreadable attribute" in str(excinfo.value) with pytest.raises(AttributeError) as excinfo: instance.def_property_impossible = 5 assert "can't set attribute" in str(excinfo.value)
def test_static_properties(): assert m.TestProperties.def_readonly_static == 1 with pytest.raises(AttributeError) as excinfo: m.TestProperties.def_readonly_static = 2 assert "can't set attribute" in str(excinfo) m.TestProperties.def_readwrite_static = 2 assert m.TestProperties.def_readwrite_static == 2 assert m.TestProperties.def_property_readonly_static == 2 with pytest.raises(AttributeError) as excinfo: m.TestProperties.def_property_readonly_static = 3 assert "can't set attribute" in str(excinfo) m.TestProperties.def_property_static = 3 assert m.TestProperties.def_property_static == 3 # Static property read and write via instance instance = m.TestProperties() m.TestProperties.def_readwrite_static = 0 assert m.TestProperties.def_readwrite_static == 0 assert instance.def_readwrite_static == 0 instance.def_readwrite_static = 2 assert m.TestProperties.def_readwrite_static == 2 assert instance.def_readwrite_static == 2 # It should be possible to override properties in derived classes assert m.TestPropertiesOverride().def_readonly == 99 assert m.TestPropertiesOverride.def_readonly_static == 99
def test_static_cls(): """Static property getter and setters expect the type object as the their only argument""" instance = m.TestProperties() assert m.TestProperties.static_cls is m.TestProperties assert instance.static_cls is m.TestProperties def check_self(self): assert self is m.TestProperties m.TestProperties.static_cls = check_self instance.static_cls = check_self
def test_static_properties(): assert m.TestProperties.def_readonly_static == 1 with pytest.raises(AttributeError) as excinfo: m.TestProperties.def_readonly_static = 2 assert "can't set attribute" in str(excinfo.value) m.TestProperties.def_readwrite_static = 2 assert m.TestProperties.def_readwrite_static == 2 with pytest.raises(AttributeError) as excinfo: dummy = m.TestProperties.def_writeonly_static # noqa: F841 unused var assert "unreadable attribute" in str(excinfo.value) m.TestProperties.def_writeonly_static = 3 assert m.TestProperties.def_readonly_static == 3 assert m.TestProperties.def_property_readonly_static == 3 with pytest.raises(AttributeError) as excinfo: m.TestProperties.def_property_readonly_static = 99 assert "can't set attribute" in str(excinfo.value) m.TestProperties.def_property_static = 4 assert m.TestProperties.def_property_static == 4 with pytest.raises(AttributeError) as excinfo: dummy = m.TestProperties.def_property_writeonly_static assert "unreadable attribute" in str(excinfo.value) m.TestProperties.def_property_writeonly_static = 5 assert m.TestProperties.def_property_static == 5 # Static property read and write via instance instance = m.TestProperties() m.TestProperties.def_readwrite_static = 0 assert m.TestProperties.def_readwrite_static == 0 assert instance.def_readwrite_static == 0 instance.def_readwrite_static = 2 assert m.TestProperties.def_readwrite_static == 2 assert instance.def_readwrite_static == 2 with pytest.raises(AttributeError) as excinfo: dummy = instance.def_property_writeonly_static # noqa: F841 unused var assert "unreadable attribute" in str(excinfo.value) instance.def_property_writeonly_static = 4 assert instance.def_property_static == 4 # It should be possible to override properties in derived classes assert m.TestPropertiesOverride().def_readonly == 99 assert m.TestPropertiesOverride.def_readonly_static == 99
def test_properties(): instance = m.TestProperties() assert instance.def_readonly == 1 with pytest.raises(AttributeError): instance.def_readonly = 2 instance.def_readwrite = 2 assert instance.def_readwrite == 2 assert instance.def_property_readonly == 2 with pytest.raises(AttributeError): instance.def_property_readonly = 3 instance.def_property = 3 assert instance.def_property == 3
def test_static_properties(): assert m.TestProperties.def_readonly_static == 1 with pytest.raises(AttributeError) as excinfo: m.TestProperties.def_readonly_static = 2 assert NO_SETTER_MSG in str(excinfo.value) m.TestProperties.def_readwrite_static = 2 assert m.TestProperties.def_readwrite_static == 2 with pytest.raises(AttributeError) as excinfo: dummy = m.TestProperties.def_writeonly_static # unused var assert NO_GETTER_MSG in str(excinfo.value) m.TestProperties.def_writeonly_static = 3 assert m.TestProperties.def_readonly_static == 3 assert m.TestProperties.def_property_readonly_static == 3 with pytest.raises(AttributeError) as excinfo: m.TestProperties.def_property_readonly_static = 99 assert NO_SETTER_MSG in str(excinfo.value) m.TestProperties.def_property_static = 4 assert m.TestProperties.def_property_static == 4 with pytest.raises(AttributeError) as excinfo: dummy = m.TestProperties.def_property_writeonly_static assert NO_GETTER_MSG in str(excinfo.value) m.TestProperties.def_property_writeonly_static = 5 assert m.TestProperties.def_property_static == 5 # Static property read and write via instance instance = m.TestProperties() m.TestProperties.def_readwrite_static = 0 assert m.TestProperties.def_readwrite_static == 0 assert instance.def_readwrite_static == 0 instance.def_readwrite_static = 2 assert m.TestProperties.def_readwrite_static == 2 assert instance.def_readwrite_static == 2 with pytest.raises(AttributeError) as excinfo: dummy = instance.def_property_writeonly_static # noqa: F841 unused var assert NO_GETTER_MSG in str(excinfo.value) instance.def_property_writeonly_static = 4 assert instance.def_property_static == 4 # It should be possible to override properties in derived classes assert m.TestPropertiesOverride().def_readonly == 99 assert m.TestPropertiesOverride.def_readonly_static == 99 # Only static attributes can be deleted del m.TestPropertiesOverride.def_readonly_static assert (hasattr(m.TestPropertiesOverride, "def_readonly_static") and m.TestPropertiesOverride.def_readonly_static is m.TestProperties.def_readonly_static) assert "def_readonly_static" not in m.TestPropertiesOverride.__dict__ properties_override = m.TestPropertiesOverride() with pytest.raises(AttributeError) as excinfo: del properties_override.def_readonly assert NO_DELETER_MSG in str(excinfo.value)