"""
FIXME: None of these tests actually use the MachPort
"""
from PyObjCTools.TestSupport import *
from CoreFoundation import *
class TestMachPort (TestCase):
def testTypes(self):
self.assertIsCFType(CFMachPortRef)
def testTypeID(self):
self.assertIsInstance(CFMachPortGetTypeID(), (int, long))
def testCreate(self):
class Context: pass
context = Context()
def callout(port, msg, size, info):
pass
# This one cannot be tested without bindings to the low-level mach_port API's
#port, shouldFree = CFMachPortCreateWithPort(None, 1, callout, context, None)
#self.assertIsInstance(port, CFMachPortRef)
#self.assertIsObject(shouldFree is True or shouldFree, False)
port, shouldFree = CFMachPortCreate(None, callout, context, None)
self.assertIsInstance(port, CFMachPortRef)
self.assertIsObject(shouldFree is True or shouldFree, False)
idx = CFMachPortGetPort(port)
self.assertIsInstance(idx, (int, long))
ctx = CFMachPortGetContext(port, None)
self.assertIsObject(ctx, context)
cb = CFMachPortGetInvalidationCallBack(port)
self.assertIsObject(cb, None)
global didInvalidate
didInvalidate=False
def invalidate(port, info):
global didInvalidate
didInvalidate = True
CFMachPortSetInvalidationCallBack(port, invalidate)
cb = CFMachPortGetInvalidationCallBack(port)
self.assertIsObject(invalidate, cb)
rls = CFMachPortCreateRunLoopSource(None, port, 0)
self.assertIsInstance(rls, CFRunLoopSourceRef)
self.assertTrue(CFMachPortIsValid(port))
CFMachPortInvalidate(port)
self.assertFalse(CFMachPortIsValid(port))
self.assertTrue(didInvalidate)
if __name__ == "__main__":
main()
|