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.failUnlessIsCFType(CFFileDescriptorRef)
12
13    def testTypeID(self):
14        self.failUnless(isinstance(CFFileDescriptorGetTypeID(), (int, long)))
15
16    def testConstants(self):
17        self.failUnless(kCFFileDescriptorReadCallBack == 1 << 0)
18        self.failUnless(kCFFileDescriptorWriteCallBack == 1 << 1)
19
20
21    def testInspection(self):
22        def callout(fd, types, context):
23            pass
24        class Context:
25            pass
26        context = Context()
27        fd = CFFileDescriptorCreate(None, 0, False, callout, context)
28        self.failUnless(isinstance(fd, CFFileDescriptorRef))
29
30        self.failUnless(CFFileDescriptorGetNativeDescriptor(fd) == 0)
31
32        ctx = CFFileDescriptorGetContext(fd)
33        self.failUnless(ctx is context)
34
35        CFFileDescriptorEnableCallBacks(fd, kCFFileDescriptorReadCallBack)
36        CFFileDescriptorDisableCallBacks(fd, kCFFileDescriptorReadCallBack|kCFFileDescriptorWriteCallBack)
37
38        rls = CFFileDescriptorCreateRunLoopSource(None, fd, 0)
39        self.failUnless(isinstance(rls, CFRunLoopSourceRef))
40
41        self.failUnless(CFFileDescriptorIsValid(fd))
42        CFFileDescriptorInvalidate(fd)
43        self.failIf(CFFileDescriptorIsValid(fd))
44
45        self.failUnlessResultIsBOOL(CFFileDescriptorIsValid)
46
47
48if __name__ == "__main__":
49    main()
50