1import objc 2import PyObjCTest.fnd as Foundation 3from PyObjCTools.TestSupport import * 4import os 5 6NSObject = objc.lookUpClass('NSObject') 7 8def S(*args): 9 return ''.join(args) 10 11FUNCTIONS=[ 12 ( u'NSHomeDirectory', S(objc._C_ID)), 13 ( u'NSIsFreedObject', S(objc._C_NSBOOL, objc._C_ID) ), 14 ( u'NSCountFrames', S(objc._C_UINT) ), 15 ( u'NSClassFromString', S(objc._C_CLASS, objc._C_ID) ), 16] 17 18class TestBundleFunctions (TestCase): 19 def setUp(self): 20 self.bundle = Foundation.NSBundle.bundleForClass_(Foundation.NSBundle) 21 22 def testSimple(self): 23 d = {} 24 objc.loadBundleFunctions(self.bundle, d, FUNCTIONS) 25 26 self.assert_('NSIsFreedObject' in d) 27 self.assert_('NSCountFrames' in d) 28 self.assert_('NSHomeDirectory' in d) 29 30 # Don't use this API, it is unsupported and causes warnings. 31 #fn = d[u'NSIsFreedObject'] 32 #obj = NSObject.alloc().init() 33 #value = fn(obj) 34 #self.assert_(not value) 35 36 fn = d[u'NSHomeDirectory'] 37 value = fn() 38 self.assertEquals(value, os.path.expanduser('~')) 39 40 fn = d[u'NSClassFromString'] 41 value = fn(u'NSObject') 42 self.assert_(value is NSObject) 43 44 # Need to look for a different example, NSCountFrames crashes 45 # (that is the actual function, not the dynamic wrapper) 46 #fn = d[u'NSCountFrames'] 47 #import Foundation 48 #fn = Foundation.NSCountFrames 49 #value = fn() 50 #self.assert_(isistance(value, int)) 51 52 53if __name__ == "__main__": 54 main() 55 56 57