X Tutup
# -*- coding: utf-8 -*- """Test CLR property support.""" import pytest from Python.Test import PropertyTest def test_public_instance_property(): """Test public instance properties.""" ob = PropertyTest() assert ob.PublicProperty == 0 ob.PublicProperty = 1 assert ob.PublicProperty == 1 with pytest.raises(TypeError): del PropertyTest().PublicProperty def test_public_static_property(): """Test public static properties.""" ob = PropertyTest() assert PropertyTest.PublicStaticProperty == 0 PropertyTest.PublicStaticProperty = 1 assert PropertyTest.PublicStaticProperty == 1 assert ob.PublicStaticProperty == 1 ob.PublicStaticProperty = 0 assert ob.PublicStaticProperty == 0 with pytest.raises(TypeError): del PropertyTest.PublicStaticProperty with pytest.raises(TypeError): del PropertyTest().PublicStaticProperty def test_protected_instance_property(): """Test protected instance properties.""" ob = PropertyTest() assert ob.ProtectedProperty == 0 ob.ProtectedProperty = 1 assert ob.ProtectedProperty == 1 with pytest.raises(TypeError): del PropertyTest().ProtectedProperty def test_protected_static_property(): """Test protected static properties.""" ob = PropertyTest() assert PropertyTest.ProtectedStaticProperty == 0 PropertyTest.ProtectedStaticProperty = 1 assert PropertyTest.ProtectedStaticProperty == 1 assert ob.ProtectedStaticProperty == 1 ob.ProtectedStaticProperty = 0 assert ob.ProtectedStaticProperty == 0 with pytest.raises(TypeError): del PropertyTest.ProtectedStaticProperty with pytest.raises(TypeError): del PropertyTest().ProtectedStaticProperty def test_internal_property(): """Test internal properties.""" with pytest.raises(AttributeError): _ = PropertyTest().InternalProperty with pytest.raises(AttributeError): _ = PropertyTest().InternalStaticProperty with pytest.raises(AttributeError): _ = PropertyTest.InternalStaticProperty def test_private_property(): """Test private properties.""" with pytest.raises(AttributeError): _ = PropertyTest().PrivateProperty with pytest.raises(AttributeError): _ = PropertyTest().PrivateStaticProperty with pytest.raises(AttributeError): _ = PropertyTest.PrivateStaticProperty def test_property_descriptor_get_set(): """Test property descriptor get / set.""" # This test ensures that setting an attribute implemented with # a descriptor actually goes through the descriptor (rather than # silently replacing the descriptor in the instance or type dict. ob = PropertyTest() assert PropertyTest.PublicStaticProperty == 0 assert ob.PublicStaticProperty == 0 descriptor = PropertyTest.__dict__['PublicStaticProperty'] assert type(descriptor) != int ob.PublicStaticProperty = 0 descriptor = PropertyTest.__dict__['PublicStaticProperty'] assert type(descriptor) != int PropertyTest.PublicStaticProperty = 0 descriptor = PropertyTest.__dict__['PublicStaticProperty'] assert type(descriptor) != int def test_property_descriptor_wrong_type(): """Test setting a property using a value of the wrong type.""" with pytest.raises(TypeError): ob = PropertyTest() ob.PublicProperty = "spam" def test_property_descriptor_abuse(): """Test property descriptor abuse.""" desc = PropertyTest.__dict__['PublicProperty'] with pytest.raises(TypeError): desc.__get__(0, 0) with pytest.raises(TypeError): desc.__set__(0, 0) def test_interface_property(): """Test properties of interfaces. Added after a bug report that an IsAbstract check was inappropriate and prevented use of properties when only the interface is known.""" from System.Collections import Hashtable, ICollection mapping = Hashtable() coll = ICollection(mapping) assert coll.Count == 0
X Tutup