1from PyObjCTools.TestSupport import *
2import objc
3
4from PyObjCTest.fsref import *
5
6"""
7@interface OC_TestFSRefHelper : NSObject
8{
9        }
10
11-(FSRef)fsrefForPath:(NSString*)path;
12-(NSString*)pathForFSRef:(in FSRef *)fsref;
13-(void)getFSRef:(out FSRef*)fsref forPath:(NSString*)path;
14-(NSString*)stringForFSRef:(FSRef)fsref;
15
16
17
18@end
19"""
20
21
22
23class TestFSRef (TestCase):
24    def testBasicInterface(self):
25        self.failUnlessArgIsIn(OC_TestFSRefHelper.pathForFSRef_, 0)
26        self.failUnlessArgIsOut(OC_TestFSRefHelper.getFSRef_forPath_, 0)
27
28    def testResult(self):
29        o = OC_TestFSRefHelper.alloc().init()
30        ref = o.fsrefForPath_(u"/Library")
31        self.failUnlessIsInstance(ref, objc.FSRef)
32
33        self.failUnlessIsInstance(ref.data, str)
34        self.failUnlessIsInstance(ref.as_pathname(), unicode)
35
36        try:
37            from Carbon.File import FSRef
38
39        except ImportError:
40            pass
41
42        else:
43            self.failUnlessIsInstance(ref.as_carbon(), FSRef)
44
45    def testArg(self):
46        o = OC_TestFSRefHelper.alloc().init()
47        ref = o.fsrefForPath_(u"/Library")
48        self.failUnlessIsInstance(ref, objc.FSRef)
49
50        p = o.stringForFSRef_(ref)
51        self.failUnlessIsInstance(p, unicode)
52        self.failUnlessEqual(p, u"/Library")
53
54    def testInput(self):
55        o = OC_TestFSRefHelper.alloc().init()
56        ref = o.fsrefForPath_(u"/Library")
57        self.failUnlessIsInstance(ref, objc.FSRef)
58
59        p = o.pathForFSRef_(ref)
60        self.failUnlessIsInstance(p, unicode)
61        self.failUnlessEqual(p, u"/Library")
62
63    def testOutput(self):
64        o = OC_TestFSRefHelper.alloc().init()
65        ref = o.getFSRef_forPath_(None, u"/Library")
66        self.failUnlessIsInstance(ref, objc.FSRef)
67
68        # Verify the fsref contents:
69        p = o.stringForFSRef_(ref)
70        self.failUnlessIsInstance(p, unicode)
71        self.failUnlessEqual(p, u"/Library")
72
73
74if __name__ == "__main__":
75    main()
76