# -*- coding: utf-8 -*-"""Test CLR class constructor support."""import pytestimport sysimport Systemdef test_enum_constructor():"""Test enum constructor args"""from System import TypeCodefrom Python.Test import EnumConstructorTestob = EnumConstructorTest(TypeCode.Int32)assert ob.value == TypeCode.Int32def test_flags_constructor():"""Test flags constructor args"""from Python.Test import FlagsConstructorTestfrom System.IO import FileAccessflags = FileAccess.Read | FileAccess.Writeob = FlagsConstructorTest(flags)assert ob.value == flagsdef test_struct_constructor():"""Test struct constructor args"""from System import Guidfrom Python.Test import StructConstructorTestguid = Guid.NewGuid()ob = StructConstructorTest(guid)assert ob.value == guiddef test_datetime():inst = System.DateTime(2021, 12, 29)assert inst.Year == 2021def test_subclass_constructor():"""Test subclass constructor args"""from Python.Test import SubclassConstructorTestclass Sub(System.Exception):passinstance = Sub()ob = SubclassConstructorTest(instance)assert isinstance(ob.value, System.Exception)def test_multiple_constructor():from Python.Test import MultipleConstructorsTest# Test parameterlessob = MultipleConstructorsTest()assert ob.value == ""def test_default_constructor_fallback():from Python.Test import DefaultConstructorMatchingob = DefaultConstructorMatching(2)assert ob.a == 2with pytest.raises(TypeError):ob = DefaultConstructorMatching("2")def test_constructor_leak():from System import Urifrom Python.Runtime import Runtimeuri = Uri("http://www.python.org")Runtime.TryCollectingGarbage(20)ref_count = sys.getrefcount(uri)# check disabled due to GC uncertainty# assert ref_count == 1def test_string_constructor():from System import String, Char, Arrayob = String('A', 10)assert ob == 'A' * 10arr = Array[Char](10)for i in range(10):arr[i] = Char(str(i))ob = String(arr)assert ob == "0123456789"ob = String(arr, 5, 4)assert ob == "5678"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。