You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/comtypes/test/test_BSTR.py

52 lines
1.5 KiB

import unittest, os
from ctypes import *
from comtypes import BSTR
from comtypes.test import requires
##requires("memleaks")
from comtypes.test.find_memleak import find_memleak
class Test(unittest.TestCase):
def check_leaks(self, func, limit=0):
bytes = find_memleak(func)
self.assertFalse(bytes > limit, "Leaks %d bytes" % bytes)
def test_creation(self):
def doit():
BSTR("abcdef" * 100)
# It seems this test is unreliable. Sometimes it leaks 4096
# bytes, sometimes not. Try to workaround that...
self.check_leaks(doit, limit=4096)
def test_from_param(self):
def doit():
BSTR.from_param("abcdef")
self.check_leaks(doit)
def test_paramflags(self):
prototype = WINFUNCTYPE(c_void_p, BSTR)
func = prototype(("SysStringLen", oledll.oleaut32))
func.restype = c_void_p
func.argtypes = (BSTR, )
def doit():
func("abcdef")
func("abc xyz")
func(BSTR("abc def"))
self.check_leaks(doit)
def test_inargs(self):
SysStringLen = windll.oleaut32.SysStringLen
SysStringLen.argtypes = BSTR,
SysStringLen.restype = c_uint
self.assertEqual(SysStringLen("abc xyz"), 7)
def doit():
SysStringLen("abc xyz")
SysStringLen("abc xyz")
SysStringLen(BSTR("abc def"))
self.check_leaks(doit)
if __name__ == "__main__":
unittest.main()