# -*- coding: utf-8 -*-"""Test CLR field support."""import Systemimport pytestfrom Python.Test import FieldTestdef test_public_instance_field():"""Test public instance fields."""ob = FieldTest()assert ob.PublicField == 0ob.PublicField = 1assert ob.PublicField == 1with pytest.raises(TypeError):del FieldTest().PublicFielddef test_public_static_field():"""Test public static fields."""ob = FieldTest()assert FieldTest.PublicStaticField == 0FieldTest.PublicStaticField = 1assert FieldTest.PublicStaticField == 1assert ob.PublicStaticField == 1ob.PublicStaticField = 0assert ob.PublicStaticField == 0with pytest.raises(TypeError):del FieldTest.PublicStaticFieldwith pytest.raises(TypeError):del FieldTest().PublicStaticFielddef test_protected_instance_field():"""Test protected instance fields."""ob = FieldTest()assert ob.ProtectedField == 0ob.ProtectedField = 1assert ob.ProtectedField == 1with pytest.raises(TypeError):del FieldTest().ProtectedFielddef test_protected_static_field():"""Test protected static fields."""ob = FieldTest()assert FieldTest.ProtectedStaticField == 0FieldTest.ProtectedStaticField = 1assert FieldTest.ProtectedStaticField == 1assert ob.ProtectedStaticField == 1ob.ProtectedStaticField = 0assert ob.ProtectedStaticField == 0with pytest.raises(TypeError):del FieldTest.ProtectedStaticFieldwith pytest.raises(TypeError):del FieldTest().ProtectedStaticFielddef test_read_only_instance_field():"""Test readonly instance fields."""assert FieldTest().ReadOnlyField == 0with pytest.raises(TypeError):FieldTest().ReadOnlyField = 1with pytest.raises(TypeError):del FieldTest().ReadOnlyFielddef test_read_only_static_field():"""Test readonly static fields."""ob = FieldTest()assert FieldTest.ReadOnlyStaticField == 0assert ob.ReadOnlyStaticField == 0with pytest.raises(TypeError):FieldTest.ReadOnlyStaticField = 1with pytest.raises(TypeError):FieldTest().ReadOnlyStaticField = 1with pytest.raises(TypeError):del FieldTest.ReadOnlyStaticFieldwith pytest.raises(TypeError):del FieldTest().ReadOnlyStaticFielddef test_constant_field():"""Test const fields."""ob = FieldTest()assert FieldTest.ConstField == 0assert ob.ConstField == 0with pytest.raises(TypeError):FieldTest().ConstField = 1with pytest.raises(TypeError):FieldTest.ConstField = 1with pytest.raises(TypeError):del FieldTest().ConstFieldwith pytest.raises(TypeError):del FieldTest.ConstFielddef test_internal_field():"""Test internal fields."""with pytest.raises(AttributeError):_ = FieldTest().InternalFieldwith pytest.raises(AttributeError):_ = FieldTest().InternalStaticFieldwith pytest.raises(AttributeError):_ = FieldTest.InternalStaticFielddef test_private_field():"""Test private fields."""with pytest.raises(AttributeError):_ = FieldTest().PrivateFieldwith pytest.raises(AttributeError):_ = FieldTest().PrivateStaticFieldwith pytest.raises(AttributeError):_ = FieldTest.PrivateStaticFielddef test_field_descriptor_get_set():"""Test field 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 = FieldTest()assert FieldTest.PublicStaticField == 0assert ob.PublicStaticField == 0descriptor = FieldTest.__dict__['PublicStaticField']assert type(descriptor) != intob.PublicStaticField = 0descriptor = FieldTest.__dict__['PublicStaticField']assert type(descriptor) != intFieldTest.PublicStaticField = 0descriptor = FieldTest.__dict__['PublicStaticField']assert type(descriptor) != intdef test_field_descriptor_wrong_type():"""Test setting a field using a value of the wrong type."""with pytest.raises(TypeError):FieldTest().PublicField = "spam"def test_field_descriptor_abuse():"""Test field descriptor abuse."""desc = FieldTest.__dict__['PublicField']with pytest.raises(TypeError):desc.__get__(0, 0)with pytest.raises(TypeError):desc.__set__(0, 0)def test_boolean_field():"""Test boolean fields."""# change this to true / false later for Python 2.3?ob = FieldTest()assert ob.BooleanField is Falseob.BooleanField = Trueassert ob.BooleanField is Trueob.BooleanField = Falseassert ob.BooleanField is Falsewith pytest.raises(TypeError):ob.BooleanField = 1with pytest.raises(TypeError):ob.BooleanField = 0def test_sbyte_field():"""Test sbyte fields."""ob = FieldTest()assert ob.SByteField == 0ob.SByteField = 1assert ob.SByteField == 1def test_byte_field():"""Test byte fields."""ob = FieldTest()assert ob.ByteField == 0ob.ByteField = 1assert ob.ByteField == 1def test_char_field():"""Test char fields."""ob = FieldTest()assert ob.CharField == u'A'assert ob.CharField == 'A'ob.CharField = 'B'assert ob.CharField == u'B'assert ob.CharField == 'B'ob.CharField = u'C'assert ob.CharField == u'C'assert ob.CharField == 'C'def test_int16_field():"""Test int16 fields."""ob = FieldTest()assert ob.Int16Field == 0ob.Int16Field = 1assert ob.Int16Field == 1def test_int32_field():"""Test int32 fields."""ob = FieldTest()assert ob.Int32Field == 0ob.Int32Field = 1assert ob.Int32Field == 1def test_int64_field():"""Test int64 fields."""ob = FieldTest()assert ob.Int64Field == 0ob.Int64Field = 1assert ob.Int64Field == 1def test_uint16_field():"""Test uint16 fields."""ob = FieldTest()assert ob.UInt16Field == 0ob.UInt16Field = 1assert ob.UInt16Field == 1def test_uint32_field():"""Test uint32 fields."""ob = FieldTest()assert ob.UInt32Field == 0ob.UInt32Field = 1assert ob.UInt32Field == 1def test_uint64_field():"""Test uint64 fields."""ob = FieldTest()assert ob.UInt64Field == 0ob.UInt64Field = 1assert ob.UInt64Field == 1def test_single_field():"""Test single fields."""ob = FieldTest()assert ob.SingleField == 0.0ob.SingleField = 1.1assert ob.SingleField == System.Single(1.1)def test_double_field():"""Test double fields."""ob = FieldTest()assert ob.DoubleField == 0.0ob.DoubleField = 1.1assert ob.DoubleField == 1.1def test_decimal_field():"""Test decimal fields."""ob = FieldTest()assert ob.DecimalField == System.Decimal(0)ob.DecimalField = System.Decimal(1)assert ob.DecimalField == System.Decimal(1)def test_string_field():"""Test string fields."""ob = FieldTest()assert ob.StringField == "spam"ob.StringField = "eggs"assert ob.StringField == "eggs"def test_interface_field():"""Test interface fields."""from Python.Test import Spam, ISpamob = FieldTest()assert ISpam(ob.SpamField).GetValue() == "spam"assert ob.SpamField.GetValue() == "spam"ob.SpamField = Spam("eggs")assert ISpam(ob.SpamField).GetValue() == "eggs"assert ob.SpamField.GetValue() == "eggs"def test_object_field():"""Test ob fields."""ob = FieldTest()assert ob.ObjectField is Noneob.ObjectField = System.String("spam")assert ob.ObjectField == "spam"ob.ObjectField = System.Int32(1)assert ob.ObjectField == 1ob.ObjectField = Noneassert ob.ObjectField is Nonedef test_enum_field():"""Test enum fields."""from Python.Test import ShortEnumob = FieldTest()assert ob.EnumField == ShortEnum.Zeroob.EnumField = ShortEnum.Oneassert ob.EnumField == ShortEnum.Onedef test_nullable_field():"""Test nullable fields."""ob = FieldTest()ob.StringField = Noneassert ob.StringField is Noneob.ObjectField = Noneassert ob.ObjectField is Noneob.SpamField = Noneassert ob.SpamField is None# Primitive types and enums should not be set to null.with pytest.raises(TypeError):FieldTest().Int32Field = Nonewith pytest.raises(TypeError):FieldTest().EnumField = None
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。