| 141 | |
| 142 | |
| 143 | def test_static_properties(): |
| 144 | assert m.TestProperties.def_readonly_static == 1 |
| 145 | with pytest.raises(AttributeError) as excinfo: |
| 146 | m.TestProperties.def_readonly_static = 2 |
| 147 | assert NO_SETTER_MSG in str(excinfo.value) |
| 148 | |
| 149 | m.TestProperties.def_readwrite_static = 2 |
| 150 | assert m.TestProperties.def_readwrite_static == 2 |
| 151 | |
| 152 | with pytest.raises(AttributeError) as excinfo: |
| 153 | dummy = m.TestProperties.def_writeonly_static # unused var |
| 154 | assert NO_GETTER_MSG in str(excinfo.value) |
| 155 | |
| 156 | m.TestProperties.def_writeonly_static = 3 |
| 157 | assert m.TestProperties.def_readonly_static == 3 |
| 158 | |
| 159 | assert m.TestProperties.def_property_readonly_static == 3 |
| 160 | with pytest.raises(AttributeError) as excinfo: |
| 161 | m.TestProperties.def_property_readonly_static = 99 |
| 162 | assert NO_SETTER_MSG in str(excinfo.value) |
| 163 | |
| 164 | m.TestProperties.def_property_static = 4 |
| 165 | assert m.TestProperties.def_property_static == 4 |
| 166 | |
| 167 | with pytest.raises(AttributeError) as excinfo: |
| 168 | dummy = m.TestProperties.def_property_writeonly_static |
| 169 | assert NO_GETTER_MSG in str(excinfo.value) |
| 170 | |
| 171 | m.TestProperties.def_property_writeonly_static = 5 |
| 172 | assert m.TestProperties.def_property_static == 5 |
| 173 | |
| 174 | # Static property read and write via instance |
| 175 | instance = m.TestProperties() |
| 176 | |
| 177 | m.TestProperties.def_readwrite_static = 0 |
| 178 | assert m.TestProperties.def_readwrite_static == 0 |
| 179 | assert instance.def_readwrite_static == 0 |
| 180 | |
| 181 | instance.def_readwrite_static = 2 |
| 182 | assert m.TestProperties.def_readwrite_static == 2 |
| 183 | assert instance.def_readwrite_static == 2 |
| 184 | |
| 185 | with pytest.raises(AttributeError) as excinfo: |
| 186 | dummy = instance.def_property_writeonly_static # noqa: F841 unused var |
| 187 | assert NO_GETTER_MSG in str(excinfo.value) |
| 188 | |
| 189 | instance.def_property_writeonly_static = 4 |
| 190 | assert instance.def_property_static == 4 |
| 191 | |
| 192 | # It should be possible to override properties in derived classes |
| 193 | assert m.TestPropertiesOverride().def_readonly == 99 |
| 194 | assert m.TestPropertiesOverride.def_readonly_static == 99 |
| 195 | |
| 196 | # Only static attributes can be deleted |
| 197 | del m.TestPropertiesOverride.def_readonly_static |
| 198 | assert hasattr(m.TestPropertiesOverride, "def_readonly_static") |
| 199 | assert ( |
| 200 | m.TestPropertiesOverride.def_readonly_static |