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