1from CoreFoundation import * 2from PyObjCTools.TestSupport import * 3 4 5class TestCFBundle (TestCase): 6 7 def testTypes(self): 8 self.failUnlessIsCFType(CFBundleRef) 9 10 def testMainBundle(self): 11 bundle = CFBundleGetMainBundle() 12 self.failUnless( isinstance(bundle, CFBundleRef) ) 13 14 def testBundleLoader(self): 15 bundle = CFBundleGetBundleWithIdentifier(u"com.apple.CoreFoundation") 16 self.failUnless( isinstance(bundle, CFBundleRef) ) 17 18 array = list(CFBundleGetAllBundles()) 19 self.failUnless(len(array) != 0) 20 for b in array: 21 self.failUnless( isinstance(b, CFBundleRef) ) 22 23 24 url = CFURLCreateWithFileSystemPath(None, u"/System/Library/Frameworks/Foundation.framework", kCFURLPOSIXPathStyle, True) 25 bundle = CFBundleCreate(None, url) 26 self.failUnless( isinstance(bundle, CFBundleRef) ) 27 28 url = CFURLCreateWithFileSystemPath(None, u"/System/Library/Frameworks", kCFURLPOSIXPathStyle, True) 29 array = CFBundleCreateBundlesFromDirectory(None, url, u"frameworkX") 30 self.assertEquals(len(array), 0) 31 32 array = CFBundleCreateBundlesFromDirectory(None, url, u"framework") 33 self.assertNotEquals(len(array), 0) 34 35 array = CFBundleCreateBundlesFromDirectory(None, url, None) 36 self.assertNotEquals(len(array), 0) 37 38 39 40 def testTypeID(self): 41 v = CFBundleGetTypeID() 42 self.failUnless( isinstance(v, (int, long)) ) 43 44 45 def testInspection(self): 46 bundle = CFBundleGetBundleWithIdentifier(u"com.apple.CoreFoundation") 47 self.failUnless( isinstance(bundle, CFBundleRef) ) 48 49 url = CFBundleCopyBundleURL(bundle) 50 self.failUnless( isinstance(url, CFURLRef) ) 51 52 v = CFBundleGetValueForInfoDictionaryKey(bundle, u"CFBundleIdentifier") 53 self.failUnless(v == u"com.apple.CoreFoundation") 54 55 v = CFBundleGetInfoDictionary(bundle) 56 self.failUnless( isinstance(v, CFDictionaryRef) ) 57 self.failUnless( v['CFBundleIdentifier'], 'com.apple.CoreFoundation') 58 59 v = CFBundleGetLocalInfoDictionary(bundle) 60 self.failUnless( v is None or isinstance(v, CFDictionaryRef) ) 61 62 type, creator = CFBundleGetPackageInfo(bundle, None, None) 63 self.failUnless(isinstance(type, (int, long))) 64 self.failUnless(isinstance(creator, (int, long))) 65 66 identifier = CFBundleGetIdentifier(bundle) 67 self.failUnless( identifier == u'com.apple.CoreFoundation') 68 69 v = CFBundleGetVersionNumber(bundle) 70 self.failUnless( isinstance(v, (int, long))) 71 72 v = CFBundleGetDevelopmentRegion(bundle) 73 self.failUnless( isinstance(v, unicode)) 74 75 v = CFBundleCopySupportFilesDirectoryURL(bundle) 76 self.failUnless( v is None or isinstance(v, CFURLRef) ) 77 78 v = CFBundleCopyResourcesDirectoryURL(bundle) 79 self.failUnless( v is None or isinstance(v, CFURLRef) ) 80 81 v = CFBundleCopyPrivateFrameworksURL(bundle) 82 self.failUnless( v is None or isinstance(v, CFURLRef) ) 83 84 v = CFBundleCopySharedFrameworksURL(bundle) 85 self.failUnless( v is None or isinstance(v, CFURLRef) ) 86 87 v = CFBundleCopySharedSupportURL(bundle) 88 self.failUnless( v is None or isinstance(v, CFURLRef) ) 89 90 v = CFBundleCopyBuiltInPlugInsURL(bundle) 91 self.failUnless( v is None or isinstance(v, CFURLRef) ) 92 93 def testDirectAccess(self): 94 url = CFURLCreateWithFileSystemPath(None, u"/System/Library/Frameworks/Foundation.framework", kCFURLPOSIXPathStyle, True) 95 96 v = CFBundleCopyInfoDictionaryInDirectory(url) 97 self.failUnless( isinstance(v, CFDictionaryRef) ) 98 self.failUnless( v[u"CFBundleIdentifier"] == u"com.apple.Foundation") 99 100 ok, type, creator = CFBundleGetPackageInfoInDirectory(url, None, None) 101 self.failUnless(ok is True) 102 self.failUnless(isinstance(type, (int, long))) 103 self.failUnless(isinstance(creator, (int, long))) 104 105 def testResources(self): 106 url = CFURLCreateWithFileSystemPath(None, u"/System/Library/Frameworks/Foundation.framework", kCFURLPOSIXPathStyle, True) 107 bundle = CFBundleCreate(None, url) 108 self.failUnless( isinstance(bundle, CFBundleRef) ) 109 110 url = CFURLCreateWithFileSystemPath(None, u"/System/Library/Frameworks/Tcl.framework", kCFURLPOSIXPathStyle, True) 111 bundle2 = CFBundleCreate(None, url) 112 self.failUnless( isinstance(bundle2, CFBundleRef) ) 113 114 115 url = CFBundleCopyResourceURL(bundle, "Formatter", "strings", None) 116 self.failUnless( isinstance(url, CFURLRef) ) 117 118 url = CFBundleCopyResourceURL(bundle, "Formatter", "strings", "dummy") 119 self.failUnless(url is None) 120 121 array = CFBundleCopyResourceURLsOfType(bundle, "strings", None) 122 self.failIf(array is None) 123 self.failUnless(isinstance(array, CFArrayRef)) 124 125 val = CFBundleCopyLocalizedString(bundle, "Err640.f", "value", "FoundationErrors") 126 self.failUnless(isinstance(val, unicode)) 127 self.failIf(val == "value") 128 129 CFCopyLocalizedString("python", "error") 130 CFCopyLocalizedStringFromTable("pyobjc", "python", "error") 131 CFCopyLocalizedStringFromTableInBundle("pyobjc", "python", bundle, "comment") 132 CFCopyLocalizedStringWithDefaultValue("pyobjc", "python", bundle, "default", "comment") 133 134 array = CFBundleCopyBundleLocalizations(bundle) 135 self.failIf(array is None) 136 self.failUnless(isinstance(array, CFArrayRef)) 137 138 arr2 = CFBundleCopyPreferredLocalizationsFromArray(array) 139 self.failIf(arr2 is None) 140 self.failUnless(isinstance(arr2, CFArrayRef)) 141 142 arr2 = CFBundleCopyLocalizationsForPreferences(array, None) 143 self.failIf(arr2 is None) 144 self.failUnless(isinstance(arr2, CFArrayRef)) 145 146 url = CFBundleCopyResourceURLForLocalization(bundle, "Formatter", "strings", None, "Dutch"); 147 self.failUnless( isinstance(url, CFURLRef) ) 148 149 array = CFBundleCopyResourceURLsOfTypeForLocalization(bundle, "strings", None, "Dutch") 150 self.failIf(array is None) 151 self.failUnless(isinstance(array, CFArrayRef)) 152 153 url = CFBundleCopyExecutableURL(bundle) 154 self.failUnless( isinstance(url, CFURLRef) ) 155 156 array = CFBundleCopyExecutableArchitectures(bundle) 157 self.failIf(array is None) 158 self.failUnless(isinstance(array, CFArrayRef)) 159 160 self.failUnlessArgIsOut(CFBundlePreflightExecutable, 1) 161 ok, error = CFBundlePreflightExecutable(bundle, None) 162 self.failUnless((ok is True) or (ok is False)) 163 if ok: 164 self.failUnless(error is None) 165 else: 166 self.failUnless(isinstance(error, CFErrorRef)) 167 168 self.failUnlessArgIsOut(CFBundleLoadExecutableAndReturnError, 1) 169 ok, error = CFBundleLoadExecutableAndReturnError(bundle2, None) 170 self.failUnless((ok is True) or (ok is False)) 171 if ok: 172 self.failUnless(error is None) 173 else: 174 self.failUnless(isinstance(error, CFErrorRef)) 175 176 ok = CFBundleLoadExecutable(bundle2) 177 self.failUnless(ok) 178 179 ok = CFBundleIsExecutableLoaded(bundle2) 180 self.failUnless(ok) 181 182 CFBundleUnloadExecutable(bundle2) 183 ok = CFBundleIsExecutableLoaded(bundle2) 184 #self.failIf(ok) 185 ok = CFBundleLoadExecutable(bundle2) 186 self.failUnless(ok) 187 188 try: 189 CFBundleGetFunctionPointerForName 190 except NameError: 191 pass 192 else: 193 self.fail("CFBundleGetFunctionPointerForName") 194 195 try: 196 CFBundleGetFunctionPointersForNames 197 except NameError: 198 pass 199 else: 200 self.fail("CFBundleGetFunctionPointersForNames") 201 202 try: 203 CFBundleGetDataPointerForName 204 except NameError: 205 pass 206 else: 207 self.fail("CFBundleGetDataPointerForName") 208 209 try: 210 CFBundleGetDataPointersForNames 211 except NameError: 212 pass 213 else: 214 self.fail("CFBundleGetDataPointersForNames") 215 216 url = CFBundleCopyAuxiliaryExecutableURL(bundle, "Foundation") 217 self.failUnless( isinstance(url, CFURLRef) ) 218 219 id = CFBundleOpenBundleResourceMap(bundle) 220 self.failUnless(isinstance(id, (int, long))) 221 222 CFBundleCloseBundleResourceMap(bundle, id) 223 224 err, id1, id2 = CFBundleOpenBundleResourceFiles(bundle, None, None) 225 self.failUnless(isinstance(err, (int, long))) 226 self.failUnless(isinstance(id1, (int, long))) 227 self.failUnless(isinstance(id2, (int, long))) 228 if id1 != -1: 229 CFBundleCloseBundleResourceMap(bundle, id1) 230 if id2 != -1: 231 CFBundleCloseBundleResourceMap(bundle, id2) 232 233 def testResourcesDirect(self): 234 bundle = CFURLCreateWithFileSystemPath(None, u"/System/Library/Frameworks/Foundation.framework", kCFURLPOSIXPathStyle, True) 235 url = CFBundleCopyResourceURLInDirectory(bundle, "Formatter", "strings", None) 236 self.failUnless( isinstance(url, CFURLRef) ) 237 238 array = CFBundleCopyResourceURLsOfTypeInDirectory(bundle, "strings", None) 239 self.failIf(array is None) 240 self.failUnless(isinstance(array, CFArrayRef)) 241 242 infoDict = CFBundleCopyInfoDictionaryForURL(bundle) 243 self.failUnless(isinstance(infoDict, CFDictionaryRef)) 244 245 array = CFBundleCopyLocalizationsForURL(bundle) 246 self.failUnless(isinstance(array, CFArrayRef)) 247 248 array = CFBundleCopyExecutableArchitecturesForURL(bundle) 249 self.failUnless(isinstance(array, CFArrayRef)) 250 for a in array: 251 self.failUnless(isinstance(a, (int, long))) 252 253 def testPlugin(self): 254 url = CFURLCreateWithFileSystemPath(None, u"/System/Library/Components/AppleScript.component", kCFURLPOSIXPathStyle, True) 255 bundle = CFBundleCreate(None, url) 256 self.failUnless( isinstance(bundle, CFBundleRef) ) 257 258 ref = CFBundleGetPlugIn(bundle) 259 self.failUnless(ref is None) 260 261 262 263 def testConstants(self): 264 self.failUnless( isinstance(kCFBundleInfoDictionaryVersionKey, unicode)) 265 self.failUnless( isinstance(kCFBundleExecutableKey, unicode)) 266 self.failUnless( isinstance(kCFBundleIdentifierKey, unicode)) 267 self.failUnless( isinstance(kCFBundleVersionKey, unicode)) 268 self.failUnless( isinstance(kCFBundleDevelopmentRegionKey, unicode)) 269 self.failUnless( isinstance(kCFBundleNameKey, unicode)) 270 self.failUnless( isinstance(kCFBundleLocalizationsKey, unicode)) 271 272 self.failUnless( kCFBundleExecutableArchitectureI386 == 0x00000007) 273 self.failUnless( kCFBundleExecutableArchitecturePPC == 0x00000012) 274 self.failUnless( kCFBundleExecutableArchitectureX86_64 == 0x01000007) 275 self.failUnless( kCFBundleExecutableArchitecturePPC64 == 0x01000012) 276 277 278 279if __name__ == "__main__": 280 main() 281