1"""
2FIXME: None of these tests actually use the filedescriptor
3"""
4
5from PyObjCTools.TestSupport import *
6from CoreFoundation import *
7
8
9class TestFileDescriptor (TestCase):
10    def testTypes(self):
11        self.assertIsCFType(CFFileDescriptorRef)
12
13    def testTypeID(self):
14        self.assertIsInstance(CFFileDescriptorGetTypeID(), (int, long))
15    def testConstants(self):
16        self.assertEqual(kCFFileDescriptorReadCallBack , 1 << 0)
17        self.assertEqual(kCFFileDescriptorWriteCallBack , 1 << 1)
18    def testInspection(self):
19        def callout(fd, types, context):
20            pass
21        class Context:
22            pass
23        context = Context()
24        fd = CFFileDescriptorCreate(None, 0, False, callout, context)
25        self.assertIsInstance(fd, CFFileDescriptorRef)
26        self.assertEqual(CFFileDescriptorGetNativeDescriptor(fd) , 0)
27        ctx = CFFileDescriptorGetContext(fd, None)
28        self.assertIs(ctx, context)
29        CFFileDescriptorEnableCallBacks(fd, kCFFileDescriptorReadCallBack)
30        CFFileDescriptorDisableCallBacks(fd, kCFFileDescriptorReadCallBack|kCFFileDescriptorWriteCallBack)
31
32        rls = CFFileDescriptorCreateRunLoopSource(None, fd, 0)
33        self.assertIsInstance(rls, CFRunLoopSourceRef)
34        self.assertTrue(CFFileDescriptorIsValid(fd))
35        CFFileDescriptorInvalidate(fd)
36        self.assertFalse(CFFileDescriptorIsValid(fd))
37
38        self.assertResultIsBOOL(CFFileDescriptorIsValid)
39
40
41if __name__ == "__main__":
42    main()
43