class TestGKError(TestCase): @min_os_level("10.8") def testConstants10_8(self): self.assertEqual(GameCenter.GKMatchSendDataReliable, 0) self.assertEqual(GameCenter.GKMatchSendDataUnreliable, 1) self.assertEqual(GameCenter.GKPlayerStateUnknown, 0) self.assertEqual(GameCenter.GKPlayerStateConnected, 1) self.assertEqual(GameCenter.GKPlayerStateDisconnected, 2) @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.9") @min_os_level("10.8") def testMethods10_8(self): self.assertResultIsBOOL( GameCenter.GKMatch.sendData_toPlayers_dataMode_error_) self.assertArgIsOut( GameCenter.GKMatch.sendData_toPlayers_dataMode_error_, 3) self.assertResultIsBOOL( GameCenter.GKMatch.sendDataToAllPlayers_withDataMode_error_) self.assertArgIsOut( GameCenter.GKMatch.sendDataToAllPlayers_withDataMode_error_, 2) self.assertArgIsBlock( GameCenter.GKMatch.chooseBestHostingPlayerWithCompletionHandler_, 0, b"v@") self.assertArgIsBlock(GameCenter.GKMatch.rematchWithCompletionHandler_, 0, b"v@@") @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.9") @min_os_level("10.9") def testMethods10_9(self): self.assertArgIsBlock( GameCenter.GKMatch.chooseBestHostPlayerWithCompletionHandler_, 0, b"v@") self.assertResultIsBOOL( GameCenter.GKMatch.sendData_toPlayers_withDataMode_error_) self.assertArgIsOut( GameCenter.GKMatch.sendData_toPlayers_withDataMode_error_, 3) @min_os_level("10.10") def testProtocols(self): objc.protocolNamed("GKMatchDelegate") self.assertArgHasType( GKMatchDelegateHelper.match_player_didChangeConnectionState_, 2, objc._C_NSUInteger, ) self.assertArgHasType( GKMatchDelegateHelper.match_player_didChangeState_, 2, objc._C_NSUInteger) self.assertResultIsBOOL( GKMatchDelegateHelper.match_shouldReinviteDisconnectedPlayer_) self.assertResultIsBOOL( GKMatchDelegateHelper.match_shouldReinvitePlayer_)
def testPickling(self): v = { "long": NSNumber.numberWithUnsignedLongLong_(2**63 + 5000), "int": NSNumber.numberWithInt_(42), "float": NSNumber.numberWithDouble_(2.0), } import pickle data = pickle.dumps(v) w = pickle.loads(data) if os_level_key(os_release()) < os_level_key("10.5"): self.assertEqual(w, { "long": -(2**63) + 5000, "int": 42, "float": 2.0 }) else: self.assertEqual(w, { "long": 2**63 + 5000, "int": 42, "float": 2.0 }) for o in v.values(): self.assertTrue(hasattr(o, "__pyobjc_object__")) for o in w.values(): self.assertFalse(hasattr(o, "__pyobjc_object__"))
class TestGCAchievement(TestCase): @min_os_level("10.8") def testClasses10_8(self): self.assertIsInstance(GameCenter.GKAchievement, objc.objc_class) self.assertArgIsBlock( GameCenter.GKAchievement.loadAchievementsWithCompletionHandler_, 0, b"v@@") self.assertArgIsBlock( GameCenter.GKAchievement.resetAchievementsWithCompletionHandler_, 0, b"v@") self.assertArgIsBlock( GameCenter.GKAchievement.reportAchievements_withCompletionHandler_, 1, b"v@") self.assertResultIsBOOL(GameCenter.GKAchievement.isCompleted) self.assertArgIsBlock( GameCenter.GKAchievement.reportAchievementWithCompletionHandler_, 0, b"v@") @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.9") @min_os_level("10.8") def testClasses10_8_missing_10_9(self): self.assertResultIsBOOL(GameCenter.GKAchievement.showsCompletionBanner) self.assertArgIsBOOL( GameCenter.GKAchievement.setShowsCompletionBanner_, 0) self.assertResultIsBOOL( GameCenter.GKAchievement.alloc().init().isHidden)
def testResourcesDirect(self): bundle = CoreFoundation.CFURLCreateWithFileSystemPath( None, "/System/Library/Frameworks/Foundation.framework", CoreFoundation.kCFURLPOSIXPathStyle, True, ) url = CoreFoundation.CFBundleCopyResourceURLInDirectory( bundle, "Formatter", "strings", None ) self.assertIsInstance(url, CoreFoundation.CFURLRef) array = CoreFoundation.CFBundleCopyResourceURLsOfTypeInDirectory( bundle, "strings", None ) self.assertIsNot(array, None) self.assertIsInstance(array, CoreFoundation.CFArrayRef) infoDict = CoreFoundation.CFBundleCopyInfoDictionaryForURL(bundle) self.assertIsInstance(infoDict, CoreFoundation.CFDictionaryRef) array = CoreFoundation.CFBundleCopyLocalizationsForURL(bundle) self.assertIsInstance(array, CoreFoundation.CFArrayRef) array = CoreFoundation.CFBundleCopyExecutableArchitecturesForURL(bundle) if os_level_key(os_release()) >= os_level_key("10.16"): self.assertIs(array, None) else: self.assertIsInstance(array, CoreFoundation.CFArrayRef) for a in array: self.assertIsInstance(a, int)
class TestGCController(TestCase): @min_os_level("10.9") def testClasses(self): self.assertIsInstance(GameController.GCController, objc.objc_class) @min_os_level("10.9") def testMethods(self): self.assertResultIsBlock( GameController.GCController.controllerPausedHandler, b"v@") self.assertArgIsBlock( GameController.GCController.setControllerPausedHandler_, 0, b"v@") self.assertResultIsBOOL(GameController.GCController.isAttachedToDevice) # self.assertArgIsBOOL(GameController.GCController.setAttachedToDevice_, 0) self.assertArgIsBlock( GameController.GCController. startWirelessControllerDiscoveryWithCompletionHandler_, 0, b"v", ) @expectedFailureIf(os_release() == "10.11") @min_os_level("10.11") def testMethods10_11(self): self.assertResultIsBOOL(GameController.GCEventViewController. controllerUserInteractionEnabled) self.assertArgIsBOOL( GameController.GCEventViewController. setControllerUserInteractionEnabled_, 0) @min_os_level("10.15") def testMethods10_15(self): self.assertResultIsBOOL(GameController.GCController.isSnapshot) @min_os_level("10.16") def testMethods10_16(self): self.assertResultIsBOOL(GameController.GCController.supportsHIDDevice_) @min_os_level("11.3") def testMethods11_3(self): self.assertResultIsBOOL( GameController.GCController.shouldMonitorBackgroundEvents) self.assertArgIsBOOL( GameController.GCController.setShouldMonitorBackgroundEvents_, 0) @min_os_level("10.9") def test_constants(self): self.assertIsInstance( GameController.GCControllerDidConnectNotification, str) self.assertIsInstance( GameController.GCControllerDidDisconnectNotification, str) self.assertEqual(GameController.GCControllerPlayerIndexUnset, -1) @min_os_level("10.16") def test_constants10_16(self): self.assertIsInstance( GameController.GCControllerDidBecomeCurrentNotification, str) self.assertIsInstance( GameController.GCControllerDidStopBeingCurrentNotification, str)
def test_version_current(self): self.assertIsInstance(objc.MAC_OS_X_VERSION_CURRENT, int) v = os_release().split(".")[:2] v = "MAC_OS_X_VERSION_%s_%s" % tuple(v) self.assertGreaterEqual(objc.MAC_OS_X_VERSION_CURRENT, getattr(objc, v))
def test_functions10_15(self): if os_level_key(os_release()) < os_level_key("10.15"): # The latest Xcode that supports macOS 10.14 supports # the 10.15 SDK, but not this API if not hasattr(Metal, "MTLCoordinate2DMake"): return v = Metal.MTLCoordinate2DMake(0.5, 1.5) self.assertIsInstance(v, Metal.MTLCoordinate2D) self.assertEqual(v, (0.5, 1.5))
def testMethods32(self): self.assertResultIsBOOL(AppKit.NSFont.isBaseFont) self.assertResultIsBOOL(AppKit.NSFont.glyphIsEncoded_) self.assertArgHasType(AppKit.NSFont.glyphIsEncoded_, 0, b"I") self.assertArgHasType( AppKit.NSFont.positionOfGlyph_precededByGlyph_isNominal_, 0, b"I") self.assertArgHasType( AppKit.NSFont.positionOfGlyph_precededByGlyph_isNominal_, 1, b"I") self.assertArgHasType( AppKit.NSFont.positionOfGlyph_precededByGlyph_isNominal_, 2, b"o^" + objc._C_NSBOOL, ) self.assertArgHasType( AppKit.NSFont. positionsForCompositeSequence_numberOfGlyphs_pointArray_, 0, b"n^I", ) self.assertArgSizeInArg( AppKit.NSFont. positionsForCompositeSequence_numberOfGlyphs_pointArray_, 0, 1) self.assertArgHasType( AppKit.NSFont. positionsForCompositeSequence_numberOfGlyphs_pointArray_, 2, b"o^" + AppKit.NSPoint.__typestr__, ) self.assertArgSizeInArg( AppKit.NSFont. positionsForCompositeSequence_numberOfGlyphs_pointArray_, 2, 1) self.assertArgHasType( AppKit.NSFont.positionOfGlyph_struckOverGlyph_metricsExist_, 2, b"o^" + objc._C_NSBOOL, ) self.assertArgHasType( AppKit.NSFont.positionOfGlyph_struckOverRect_metricsExist_, 2, b"o^" + objc._C_NSBOOL, ) if os_level_key(os_release()) < os_level_key("10.10"): self.assertArgHasType( AppKit.NSFont. positionOfGlyph_withRelation_toBaseGlyph_totalAdvancement_metricsExist_, # noqa: B950 3, b"o^" + AppKit.NSSize.__typestr__, ) self.assertArgHasType( AppKit.NSFont. positionOfGlyph_withRelation_toBaseGlyph_totalAdvancement_metricsExist_, # noqa: B950 4, b"o^" + objc._C_NSBOOL, )
class TestMPNowPlayingInfoCenter(TestCase): @min_os_level("10.12") def testConstants(self): self.assertEqual(MediaPlayer.MPNowPlayingInfoMediaTypeNone, 0) self.assertEqual(MediaPlayer.MPNowPlayingInfoMediaTypeAudio, 1) self.assertEqual(MediaPlayer.MPNowPlayingInfoMediaTypeVideo, 2) self.assertEqual(MediaPlayer.MPNowPlayingPlaybackStateUnknown, 0) self.assertEqual(MediaPlayer.MPNowPlayingPlaybackStatePlaying, 1) self.assertEqual(MediaPlayer.MPNowPlayingPlaybackStatePaused, 2) self.assertEqual(MediaPlayer.MPNowPlayingPlaybackStateStopped, 3) self.assertEqual(MediaPlayer.MPNowPlayingPlaybackStateInterrupted, 4) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyElapsedPlaybackTime, str) self.assertIsInstance(MediaPlayer.MPNowPlayingInfoPropertyPlaybackRate, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyDefaultPlaybackRate, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyPlaybackQueueIndex, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyPlaybackQueueCount, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyChapterNumber, str) self.assertIsInstance(MediaPlayer.MPNowPlayingInfoPropertyChapterCount, str) self.assertIsInstance(MediaPlayer.MPNowPlayingInfoPropertyIsLiveStream, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyAvailableLanguageOptions, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyCurrentLanguageOptions, str) self.assertIsInstance(MediaPlayer.MPNowPlayingInfoCollectionIdentifier, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyExternalContentIdentifier, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyExternalUserProfileIdentifier, str) self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyPlaybackProgress, str) self.assertIsInstance(MediaPlayer.MPNowPlayingInfoPropertyMediaType, str) self.assertIsInstance(MediaPlayer.MPNowPlayingInfoPropertyAssetURL, str) @min_os_level("10.13") @expectedFailureIf(os_level_key(os_release()) < os_level_key("10.14") ) # Documented for 10.13, but doesn't work there def testConstants10_13(self): self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyServiceIdentifier, str) @min_os_level("10.13.1") def testConstants10_13_1(self): self.assertIsInstance( MediaPlayer.MPNowPlayingInfoPropertyCurrentPlaybackDate, str)
def testLongValue(self): v = NSNumber.numberWithUnsignedLongLong_(2**63 + 5000) self.assertIsInstance(v, int) if os_level_key(os_release()) < os_level_key("10.5"): self.assertEqual(v.description(), str(-(2**63) + 5000)) else: self.assertEqual(v.description(), str(2**63 + 5000)) self.assertIsNot(type(v), int) self.assertRaises(AttributeError, setattr, v, "x", 42)
class TestINIntentIdentifiers(TestCase): @min_os_level("10.12") @expectedFailureIf( os_level_key(os_release()) < os_level_key("10.14") ) # Documented to be available for 10.12, but not available def testConstants(self): self.assertIsInstance(Intents.INStartAudioCallIntentIdentifier, str) self.assertIsInstance(Intents.INStartVideoCallIntentIdentifier, str) self.assertIsInstance(Intents.INSearchCallHistoryIntentIdentifier, str) self.assertIsInstance(Intents.INSendMessageIntentIdentifier, str) self.assertIsInstance(Intents.INSearchForMessagesIntentIdentifier, str) self.assertIsInstance(Intents.INSetMessageAttributeIntentIdentifier, str)
def testFunctions(self): url = CFNetwork.CFURLCreateWithString(None, "http://www.python.org/", None) self.assertIsInstance(url, CFNetwork.CFURLRef) req = CFNetwork.CFHTTPMessageCreateRequest(None, "GET", url, CFNetwork.kCFHTTPVersion1_1) self.assertIsInstance(req, CFNetwork.CFHTTPMessageRef) self.assertResultIsCFRetained( CFNetwork.CFReadStreamCreateForHTTPRequest) v = CFNetwork.CFReadStreamCreateForHTTPRequest(None, req) self.assertIsInstance(v, CFNetwork.CFReadStreamRef) with open("/dev/null", "w") as fp: fd_2 = os.dup(2) os.dup2(fp.fileno(), 2) try: # Avoid deprecation messages from CFNetwork self.assertResultIsCFRetained( CFNetwork.CFReadStreamCreateForStreamedHTTPRequest) v = CFNetwork.CFReadStreamCreateForStreamedHTTPRequest( None, req, v) self.assertIsInstance(v, CFNetwork.CFReadStreamRef) if os_level_key(os_release()) < os_level_key("10.15"): self.assertArgIsBOOL( CFNetwork.CFHTTPReadStreamSetRedirectsAutomatically, 1) CFNetwork.CFHTTPReadStreamSetRedirectsAutomatically(v, True) if os_level_key(os_release()) < os_level_key("10.9"): CFNetwork.CFHTTPReadStreamSetProxy(v, "localhost", 8080) finally: os.dup2(fd_2, 2)
class TestDictionaryServices(TestCase): def testClasses(self): self.assertIsCFType(DictionaryServices.DCSDictionaryRef) @onlyIf(os_release().rsplit(".", 1)[0] not in ("10.12", "10.13")) def testFunctions(self): txt = "the hello world program" r = DictionaryServices.DCSGetTermRangeInString(None, txt, 5) self.assertIsInstance(r, DictionaryServices.CFRange) self.assertEqual(r, (4, 5)) r = DictionaryServices.DCSCopyTextDefinition(None, txt, r) self.assertIsInstance(r, (str, type(None))) v = DictionaryServices.DCSDictionaryGetTypeID() self.assertIsInstance(v, int)
def testFunctions(self): err = CFNetwork.CFStreamError() err.error = (1 << 16) + 2 v = CFNetwork.CFSocketStreamSOCKSGetErrorSubdomain(err) self.assertEqual(v, 1) v = CFNetwork.CFSocketStreamSOCKSGetError(err) self.assertEqual(v, 2) self.assertArgIsCFRetained(CFNetwork.CFStreamCreatePairWithSocketToCFHost, 3) self.assertArgIsCFRetained(CFNetwork.CFStreamCreatePairWithSocketToCFHost, 4) self.assertArgIsOut(CFNetwork.CFStreamCreatePairWithSocketToCFHost, 3) self.assertArgIsOut(CFNetwork.CFStreamCreatePairWithSocketToCFHost, 4) host = CFNetwork.CFHostCreateWithName(None, "connect.apple.com") rd, wr = CFNetwork.CFStreamCreatePairWithSocketToCFHost( None, host, 443, None, None ) self.assertIsInstance(rd, CFNetwork.CFReadStreamRef) self.assertIsInstance(wr, CFNetwork.CFWriteStreamRef) if os_level_key(os_release()) < os_level_key("10.10"): self.assertResultIsBOOL(CFNetwork.CFSocketStreamPairSetSecurityProtocol) v = CFNetwork.CFSocketStreamPairSetSecurityProtocol( rd, wr, CFNetwork.kCFStreamSocketSecuritySSLv23 ) self.assertIsInstance(v, bool) self.assertArgIsCFRetained( CFNetwork.CFStreamCreatePairWithSocketToNetService, 2 ) self.assertArgIsCFRetained( CFNetwork.CFStreamCreatePairWithSocketToNetService, 3 ) self.assertArgIsOut(CFNetwork.CFStreamCreatePairWithSocketToNetService, 2) self.assertArgIsOut(CFNetwork.CFStreamCreatePairWithSocketToNetService, 3) service = CFNetwork.CFNetServiceCreate( None, "pyobjc.local", "ssh", "pyobjc.test.local", 9999 ) rd, wr = CFNetwork.CFStreamCreatePairWithSocketToNetService( None, service, None, None ) self.assertIsInstance(rd, CFNetwork.CFReadStreamRef) self.assertIsInstance(wr, CFNetwork.CFWriteStreamRef)
class TestCGPDFScanner(TestCase): def testTypes(self): self.assertIsOpaquePointer(Quartz.CGPDFScannerRef) @expectedFailureIf(os_release().startswith("10.5.")) def testFunctionMissingOn10_5(self): Quartz.CGPDFScannerRetain def testFunctions(self): self.assertResultIsNotCFRetained(Quartz.CGPDFScannerCreate) Quartz.CGPDFScannerRelease self.assertResultHasType(Quartz.CGPDFScannerScan, objc._C_BOOL) Quartz.CGPDFScannerGetContentStream self.assertResultHasType(Quartz.CGPDFScannerPopObject, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopObject, 1) self.assertResultHasType(Quartz.CGPDFScannerPopBoolean, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopBoolean, 1) self.assertResultHasType(Quartz.CGPDFScannerPopInteger, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopInteger, 1) self.assertResultHasType(Quartz.CGPDFScannerPopNumber, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopNumber, 1) self.assertResultHasType(Quartz.CGPDFScannerPopName, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopName, 1) self.assertResultHasType(Quartz.CGPDFScannerPopString, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopString, 1) self.assertResultHasType(Quartz.CGPDFScannerPopArray, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopArray, 1) self.assertResultHasType(Quartz.CGPDFScannerPopDictionary, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopDictionary, 1) self.assertResultHasType(Quartz.CGPDFScannerPopStream, objc._C_BOOL) self.assertArgIsOut(Quartz.CGPDFScannerPopStream, 1)
def test_unknown_type(self): try: orig = pycoder.decode_dispatch[pycoder.kOP_GLOBAL] del pycoder.decode_dispatch[pycoder.kOP_GLOBAL] o = TestKeyedArchiveSimple buf = self.archiverClass.archivedDataWithRootObject_(o) if os_level_key(os_release()) >= os_level_key("10.11"): # On OSX 10.11 (un)archivers modify exceptions, which looses # enough information that PyObjC can no longer reconstruct # the correct Python exception exception = (objc.error, pickle.UnpicklingError) else: exception = pickle.UnpicklingError self.assertRaises( exception, self.unarchiverClass.unarchiveObjectWithData_, buf ) finally: pycoder.decode_dispatch[pycoder.kOP_GLOBAL] = orig
class TestCLError(TestCase): @min_os_level("10.6") def testConstants(self): self.assertIsInstance(CoreLocation.kCLErrorDomain, str) self.assertEqual(CoreLocation.kCLErrorLocationUnknown, 0) self.assertEqual(CoreLocation.kCLErrorDenied, 1) self.assertEqual(CoreLocation.kCLErrorNetwork, 2) self.assertEqual(CoreLocation.kCLErrorHeadingFailure, 3) self.assertEqual(CoreLocation.kCLErrorRegionMonitoringDenied, 4) self.assertEqual(CoreLocation.kCLErrorRegionMonitoringFailure, 5) self.assertEqual(CoreLocation.kCLErrorRegionMonitoringSetupDelayed, 6) self.assertEqual(CoreLocation.kCLErrorRegionMonitoringResponseDelayed, 7) self.assertEqual(CoreLocation.kCLErrorGeocodeFoundPartialResult, 9) self.assertEqual(CoreLocation.kCLErrorDeferredFailed, 11) self.assertEqual(CoreLocation.kCLErrorDeferredNotUpdatingLocation, 12) self.assertEqual(CoreLocation.kCLErrorDeferredAccuracyTooLow, 13) self.assertEqual(CoreLocation.kCLErrorDeferredDistanceFiltered, 14) self.assertEqual(CoreLocation.kCLErrorDeferredCanceled, 15) self.assertEqual(CoreLocation.kCLErrorRangingUnavailable, 16) self.assertEqual(CoreLocation.kCLErrorRangingFailure, 17) self.assertEqual(CoreLocation.kCLErrorPromptDeclined, 18) if int(os.uname()[2].split(".")[0]) < 12: self.assertEqual(CoreLocation.kCLErrorGeocodeFoundNoResult, 7) self.assertEqual(CoreLocation.kCLErrorGeocodeCanceled, 8) else: self.assertEqual(CoreLocation.kCLErrorGeocodeFoundNoResult, 8) self.assertEqual(CoreLocation.kCLErrorGeocodeCanceled, 10) @min_os_level("10.7") @expectedFailureIf(os_level_key(os_release()) < os_level_key("10.13")) def testConstants10_7(self): self.assertIsInstance(CoreLocation.kCLErrorUserInfoAlternateRegionKey, str)
class TestDASession(TestCase): @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.10") @min_os_level("10.10") def test_types(self): self.assertIsCFType(DiskArbitration.DASessionRef) self.assertIsCFType(DiskArbitration.DAApprovalSessionRef) @min_os_level("10.10") def test_functions10_10(self): self.assertIsInstance(DiskArbitration.DASessionGetTypeID(), int) self.assertResultIsCFRetained(DiskArbitration.DASessionCreate) obj = DiskArbitration.DASessionCreate(None) self.assertIsInstance(obj, DiskArbitration.DASessionRef) rl = DiskArbitration.CFRunLoopGetCurrent() DiskArbitration.DASessionScheduleWithRunLoop( obj, rl, DiskArbitration.kCFRunLoopCommonModes) DiskArbitration.DASessionUnscheduleFromRunLoop( obj, rl, DiskArbitration.kCFRunLoopCommonModes) self.assertIsInstance(DiskArbitration.DAApprovalSessionGetTypeID(), int) self.assertResultIsCFRetained(DiskArbitration.DAApprovalSessionCreate) ses = DiskArbitration.DAApprovalSessionCreate(None) self.assertIsInstance(ses, DiskArbitration.DAApprovalSessionRef) DiskArbitration.DAApprovalSessionScheduleWithRunLoop( ses, rl, DiskArbitration.kCFRunLoopCommonModes) DiskArbitration.DAApprovalSessionUnscheduleFromRunLoop( ses, rl, DiskArbitration.kCFRunLoopCommonModes) DiskArbitration.DASessionSetDispatchQueue
class TestGKVoiceChat(TestCase): @min_os_level("10.8") def testConstants10_8(self): self.assertEqual(GameCenter.GKVoiceChatPlayerConnected, 0) self.assertEqual(GameCenter.GKVoiceChatPlayerDisconnected, 1) self.assertEqual(GameCenter.GKVoiceChatPlayerSpeaking, 2) self.assertEqual(GameCenter.GKVoiceChatPlayerSilent, 3) self.assertEqual(GameCenter.GKVoiceChatPlayerConnecting, 4) @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.9") @min_os_level("10.8") def testMethods10_8(self): self.assertArgIsBOOL(GameCenter.GKVoiceChat.setPlayer_muted_, 1) self.assertResultIsBlock( GameCenter.GKVoiceChat.playerVoiceChatStateDidChangeHandler, b"v@@") self.assertArgIsBlock( GameCenter.GKVoiceChat.setPlayerVoiceChatStateDidChangeHandler_, 0, b"v@@") self.assertResultIsBOOL(GameCenter.GKVoiceChat.isActive) self.assertArgIsBOOL(GameCenter.GKVoiceChat.setActive_, 0) self.assertResultIsBOOL(GameCenter.GKVoiceChat.isVoIPAllowed) self.assertResultIsBlock( GameCenter.GKVoiceChat.playerStateUpdateHandler, b"v@" + objc._C_NSUInteger) self.assertArgIsBlock( GameCenter.GKVoiceChat.setPlayerStateUpdateHandler_, 0, b"v@" + objc._C_NSUInteger, ) self.assertArgIsBOOL(GameCenter.GKVoiceChat.setMute_forPlayer_, 0)
class TestGKLeaderboard(TestCase): @min_os_level("10.8") def testConstants10_8(self): self.assertEqual(GameCenter.GKLeaderboardTimeScopeToday, 0) self.assertEqual(GameCenter.GKLeaderboardTimeScopeWeek, 1) self.assertEqual(GameCenter.GKLeaderboardTimeScopeAllTime, 2) self.assertEqual(GameCenter.GKLeaderboardPlayerScopeGlobal, 0) self.assertEqual(GameCenter.GKLeaderboardPlayerScopeFriendsOnly, 1) @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.9") @min_os_level("10.8") def testMethods10_8(self): self.assertResultIsBOOL(GameCenter.GKLeaderboard.isLoading) self.assertArgIsBlock( GameCenter.GKLeaderboard.loadScoresWithCompletionHandler_, 0, b"v@@") self.assertArgIsBlock( GameCenter.GKLeaderboard.loadLeaderboardsWithCompletionHandler_, 0, b"v@@") self.assertArgIsBlock( GameCenter.GKLeaderboard.loadCategoriesWithCompletionHandler_, 0, b"v@@@") self.assertArgIsBlock( GameCenter.GKLeaderboard. setDefaultLeaderboard_withCompletionHandler_, 1, b"v@", ) @expectedFailure @min_os_level("10.8") def testMethods10_8_fail(self): self.assertArgIsBlock( GameCenter.GKLeaderboard.loadImageWithCompletionHandler_, 1, b"v@@")
class TestNSLayoutManager(TestCase): def testConstants(self): self.assertEqual(AppKit.NSGlyphAttributeSoft, 0) self.assertEqual(AppKit.NSGlyphAttributeElastic, 1) self.assertEqual(AppKit.NSGlyphAttributeBidiLevel, 2) self.assertEqual(AppKit.NSGlyphAttributeInscribe, 5) self.assertEqual(AppKit.NSGlyphInscribeBase, 0) self.assertEqual(AppKit.NSGlyphInscribeBelow, 1) self.assertEqual(AppKit.NSGlyphInscribeAbove, 2) self.assertEqual(AppKit.NSGlyphInscribeOverstrike, 3) self.assertEqual(AppKit.NSGlyphInscribeOverBelow, 4) self.assertEqual(AppKit.NSTypesetterLatestBehavior, -1) self.assertEqual(AppKit.NSTypesetterOriginalBehavior, 0) self.assertEqual(AppKit.NSTypesetterBehavior_10_2_WithCompatibility, 1) self.assertEqual(AppKit.NSTypesetterBehavior_10_2, 2) self.assertEqual(AppKit.NSTypesetterBehavior_10_3, 3) self.assertEqual(AppKit.NSTypesetterBehavior_10_4, 4) self.assertEqual(AppKit.NSTextLayoutOrientationHorizontal, 0) self.assertEqual(AppKit.NSTextLayoutOrientationVertical, 1) # OSX 10.11: self.assertEqual(AppKit.NSGlyphPropertyNull, 1 << 0) self.assertEqual(AppKit.NSGlyphPropertyControlCharacter, 1 << 1) self.assertEqual(AppKit.NSGlyphPropertyElastic, 1 << 2) self.assertEqual(AppKit.NSGlyphPropertyNonBaseCharacter, 1 << 3) self.assertEqual(AppKit.NSControlCharacterActionZeroAdvancement, 1 << 0) self.assertEqual(AppKit.NSControlCharacterActionWhitespace, 1 << 1) self.assertEqual(AppKit.NSControlCharacterActionHorizontalTab, 1 << 2) self.assertEqual(AppKit.NSControlCharacterActionLineBreak, 1 << 3) self.assertEqual(AppKit.NSControlCharacterActionParagraphBreak, 1 << 4) self.assertEqual(AppKit.NSControlCharacterActionContainerBreak, 1 << 5) @min_sdk_level("10.7") def testProtocolObjects(self): objc.protocolNamed("NSTextLayoutOrientationProvider") objc.protocolNamed("NSLayoutManagerDelegate") def testProtocols(self): self.assertResultHasType( TestNSLayoutManagerHelper.layoutOrientation, objc._C_NSInteger ) # XXX: check interface! self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldGenerateGlyphs_properties_characterIndexes_forGlyphRange_, # noqa: B950 1, b"n^" + objc._C_USHT, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldGenerateGlyphs_properties_characterIndexes_forGlyphRange_, # noqa: B950 2, b"n^" + objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldGenerateGlyphs_properties_characterIndexes_forGlyphRange_, # noqa: B950 3, b"n^" + objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldGenerateGlyphs_properties_characterIndexes_forGlyphRange_, # noqa: B950 4, AppKit.NSRange.__typestr__, ) self.assertArgSizeInArg( TestNSLayoutManagerHelper.layoutManager_shouldGenerateGlyphs_properties_characterIndexes_forGlyphRange_, # noqa: B950 1, 4, ) self.assertArgSizeInArg( TestNSLayoutManagerHelper.layoutManager_shouldGenerateGlyphs_properties_characterIndexes_forGlyphRange_, # noqa: B950 2, 4, ) self.assertArgSizeInArg( TestNSLayoutManagerHelper.layoutManager_shouldGenerateGlyphs_properties_characterIndexes_forGlyphRange_, # noqa: B950 3, 4, ) self.assertResultHasType( TestNSLayoutManagerHelper.layoutManager_lineSpacingAfterGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 objc._C_CGFloat, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_lineSpacingAfterGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 1, objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_lineSpacingAfterGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 2, AppKit.NSRect.__typestr__, ) self.assertResultHasType( TestNSLayoutManagerHelper.layoutManager_paragraphSpacingBeforeGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 objc._C_CGFloat, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_paragraphSpacingBeforeGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 1, objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_paragraphSpacingBeforeGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 2, AppKit.NSRect.__typestr__, ) self.assertResultHasType( TestNSLayoutManagerHelper.layoutManager_paragraphSpacingAfterGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 objc._C_CGFloat, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_paragraphSpacingAfterGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 1, objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_paragraphSpacingAfterGlyphAtIndex_withProposedLineFragmentRect_, # noqa: B950 2, AppKit.NSRect.__typestr__, ) self.assertResultHasType( TestNSLayoutManagerHelper.layoutManager_shouldUseAction_forControlCharacterAtIndex_, objc._C_NSInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldUseAction_forControlCharacterAtIndex_, 1, objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldUseAction_forControlCharacterAtIndex_, 2, objc._C_NSInteger, ) self.assertResultHasType( TestNSLayoutManagerHelper.layoutManager_shouldBreakLineByWordBeforeCharacterAtIndex_, # noqa: B950 objc._C_NSBOOL, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldBreakLineByWordBeforeCharacterAtIndex_, # noqa: B950 1, objc._C_NSUInteger, ) self.assertResultHasType( TestNSLayoutManagerHelper.layoutManager_shouldBreakLineByHyphenatingBeforeCharacterAtIndex_, # noqa: B950 objc._C_NSBOOL, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldBreakLineByWordBeforeCharacterAtIndex_, # noqa: B950 1, objc._C_NSUInteger, ) self.assertResultHasType( TestNSLayoutManagerHelper.layoutManager_boundingBoxForControlGlyphAtIndex_forTextContainer_proposedLineFragment_glyphPosition_characterIndex_, # noqa: B950 AppKit.NSRect.__typestr__, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_boundingBoxForControlGlyphAtIndex_forTextContainer_proposedLineFragment_glyphPosition_characterIndex_, # noqa: B950 1, objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_boundingBoxForControlGlyphAtIndex_forTextContainer_proposedLineFragment_glyphPosition_characterIndex_, # noqa: B950 3, AppKit.NSRect.__typestr__, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_boundingBoxForControlGlyphAtIndex_forTextContainer_proposedLineFragment_glyphPosition_characterIndex_, # noqa: B950 4, AppKit.NSPoint.__typestr__, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_boundingBoxForControlGlyphAtIndex_forTextContainer_proposedLineFragment_glyphPosition_characterIndex_, # noqa: B950 5, objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_textContainer_didChangeGeometryFromSize_, 2, AppKit.NSSize.__typestr__, ) self.assertResultIsBOOL( TestNSLayoutManagerHelper.layoutManager_shouldSetLineFragmentRect_lineFragmentUsedRect_baselineOffset_inTextContainer_forGlyphRange_ # noqa: B950 ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldSetLineFragmentRect_lineFragmentUsedRect_baselineOffset_inTextContainer_forGlyphRange_, # noqa: B950 1, b"N^" + AppKit.NSRect.__typestr__, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldSetLineFragmentRect_lineFragmentUsedRect_baselineOffset_inTextContainer_forGlyphRange_, # noqa: B950 2, b"N^" + AppKit.NSRect.__typestr__, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldSetLineFragmentRect_lineFragmentUsedRect_baselineOffset_inTextContainer_forGlyphRange_, # noqa: B950 3, b"N^" + objc._C_CGFloat, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldSetLineFragmentRect_lineFragmentUsedRect_baselineOffset_inTextContainer_forGlyphRange_, # noqa: B950 5, AppKit.NSRange.__typestr__, ) def testMethods(self): self.assertResultIsBOOL(AppKit.NSLayoutManager.usesScreenFonts) self.assertArgIsBOOL(AppKit.NSLayoutManager.setUsesScreenFonts_, 0) self.assertArgSizeInArg( AppKit.NSLayoutManager.insertGlyphs_length_forStartingGlyphAtIndex_characterIndex_, 0, 1, ) self.assertArgIsIn( AppKit.NSLayoutManager.insertGlyphs_length_forStartingGlyphAtIndex_characterIndex_, # noqa: B950 0, ) self.assertArgIsOut( AppKit.NSLayoutManager.invalidateGlyphsForCharacterRange_changeInLength_actualCharacterRange_, # noqa: B950 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.invalidateLayoutForCharacterRange_isSoft_actualCharacterRange_, # noqa: B950 2, ) self.assertArgIsOut(AppKit.NSLayoutManager.getGlyphs_range_, 0) self.assertArgSizeInArg(AppKit.NSLayoutManager.getGlyphs_range_, 0, 1) self.assertResultIsBOOL(AppKit.NSLayoutManager.showsInvisibleCharacters) self.assertArgIsBOOL(AppKit.NSLayoutManager.setShowsInvisibleCharacters_, 0) self.assertResultIsBOOL(AppKit.NSLayoutManager.showsControlCharacters) self.assertArgIsBOOL(AppKit.NSLayoutManager.setShowsControlCharacters_, 0) self.assertResultIsBOOL(AppKit.NSLayoutManager.usesFontLeading) self.assertArgIsBOOL(AppKit.NSLayoutManager.setUsesFontLeading_, 0) self.assertResultIsBOOL(AppKit.NSLayoutManager.backgroundLayoutEnabled) self.assertArgIsBOOL(AppKit.NSLayoutManager.setBackgroundLayoutEnabled_, 0) self.assertArgIsOut( AppKit.NSLayoutManager.textContainerForGlyphAtIndex_effectiveRange_, 1 ) self.assertArgIsOut( AppKit.NSLayoutManager.lineFragmentRectForGlyphAtIndex_effectiveRange_, 1 ) self.assertArgIsOut( AppKit.NSLayoutManager.lineFragmentUsedRectForGlyphAtIndex_effectiveRange_, 1, ) self.assertArgIsOut( AppKit.NSLayoutManager.layoutRectForTextBlock_atIndex_effectiveRange_, 2 ) self.assertArgIsOut( AppKit.NSLayoutManager.boundsRectForTextBlock_atIndex_effectiveRange_, 2 ) self.assertArgIsOut( AppKit.NSLayoutManager.glyphRangeForCharacterRange_actualCharacterRange_, 1 ) self.assertArgIsOut( AppKit.NSLayoutManager.characterRangeForGlyphRange_actualGlyphRange_, 1 ) self.assertArgIsOut( AppKit.NSLayoutManager.temporaryAttributesAtCharacterIndex_effectiveRange_, 1, ) self.assertArgIsOut( AppKit.NSLayoutManager.lineFragmentRectForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, # noqa: B950 1, ) self.assertArgIsBOOL( AppKit.NSLayoutManager.lineFragmentRectForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, # noqa: B950 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.lineFragmentUsedRectForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, # noqa: B950 1, ) self.assertArgIsBOOL( AppKit.NSLayoutManager.lineFragmentUsedRectForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, # noqa: B950 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.textContainerForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, # noqa: B950 1, ) self.assertArgIsBOOL( AppKit.NSLayoutManager.textContainerForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, # noqa: B950 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.getFirstUnlaidCharacterIndex_glyphIndex_, 0 ) self.assertArgIsOut( AppKit.NSLayoutManager.getFirstUnlaidCharacterIndex_glyphIndex_, 1 ) self.assertArgIsOut( AppKit.NSLayoutManager.glyphIndexForPoint_inTextContainer_fractionOfDistanceThroughGlyph_, # noqa: B950 2, ) self.assertResultSizeInArg( AppKit.NSLayoutManager.rectArrayForCharacterRange_withinSelectedCharacterRange_inTextContainer_rectCount_, # noqa: B950 3, ) self.assertArgIsOut( AppKit.NSLayoutManager.rectArrayForCharacterRange_withinSelectedCharacterRange_inTextContainer_rectCount_, # noqa: B950 3, ) self.assertResultSizeInArg( AppKit.NSLayoutManager.rectArrayForGlyphRange_withinSelectedGlyphRange_inTextContainer_rectCount_, # noqa: B950 3, ) self.assertArgIsOut( AppKit.NSLayoutManager.rectArrayForGlyphRange_withinSelectedGlyphRange_inTextContainer_rectCount_, # noqa: B950 3, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, # noqa: B950 1, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, # noqa: B950 1, 0, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, # noqa: B950 2, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, # noqa: B950 2, 0, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, # noqa: B950 3, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, # noqa: B950 3, 0, ) self.assertArgHasType( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, # noqa: B950 4, b"o^" + objc._C_NSBOOL, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, # noqa: B950 4, 0, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 1, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 1, 0, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 2, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 2, 0, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 3, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 3, 0, ) self.assertArgHasType( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 4, b"o^" + objc._C_NSBOOL, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 4, 0, ) self.assertArgHasType( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 5, b"o^" + objc._C_UCHR, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, # noqa: B950 5, 0, ) self.assertArgHasType( AppKit.NSLayoutManager.showPackedGlyphs_length_glyphRange_atPoint_font_color_printingAdjustment_, # noqa: B950 0, b"n^v", ) self.assertArgSizeInArg( AppKit.NSLayoutManager.showPackedGlyphs_length_glyphRange_atPoint_font_color_printingAdjustment_, # noqa: B950 0, 1, ) self.assertResultIsBOOL(AppKit.NSLayoutManager.isValidGlyphIndex_) self.assertArgIsBOOL( AppKit.NSLayoutManager.setNotShownAttribute_forGlyphAtIndex_, 0 ) self.assertArgIsBOOL( AppKit.NSLayoutManager.setDrawsOutsideLineFragment_forGlyphAtIndex_, 0 ) self.assertResultIsBOOL( AppKit.NSLayoutManager.notShownAttributeForGlyphAtIndex_ ) self.assertResultIsBOOL( AppKit.NSLayoutManager.drawsOutsideLineFragmentForGlyphAtIndex_ ) @min_os_level("10.11") def testMethods_missing_10_10(self): # Document, but not present on 10.10?? self.assertArgHasType( AppKit.NSLayoutManager.CGGlyphAtIndex_isValidIndex_, 1, b"o^Z" ) @min_os_level("10.5") def testMethods10_5(self): self.assertResultIsBOOL(AppKit.NSLayoutManager.allowsNonContiguousLayout) self.assertArgIsBOOL(AppKit.NSLayoutManager.setAllowsNonContiguousLayout_, 0) self.assertResultIsBOOL(AppKit.NSLayoutManager.hasNonContiguousLayout) self.assertArgIsOut( AppKit.NSLayoutManager.invalidateGlyphsForCharacterRange_changeInLength_actualCharacterRange_, # noqa: B950 2, ) self.assertArgHasType( AppKit.NSLayoutManager.glyphAtIndex_isValidIndex_, 1, b"o^" + objc._C_NSBOOL ) self.assertArgIsIn( AppKit.NSLayoutManager.setLocations_startingGlyphIndexes_count_forGlyphRange_, 0, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.setLocations_startingGlyphIndexes_count_forGlyphRange_, 0, 2, ) self.assertArgIsIn( AppKit.NSLayoutManager.setLocations_startingGlyphIndexes_count_forGlyphRange_, 1, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.setLocations_startingGlyphIndexes_count_forGlyphRange_, 1, 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.temporaryAttribute_atCharacterIndex_effectiveRange_, 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.temporaryAttribute_atCharacterIndex_longestEffectiveRange_inRange_, # noqa: B950 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.temporaryAttributesAtCharacterIndex_longestEffectiveRange_inRange_, # noqa: B950 1, ) self.assertArgIsBOOL( TestNSLayoutManagerHelper.layoutManager_shouldUseTemporaryAttributes_forDrawingToScreen_atCharacterIndex_effectiveRange_, # noqa: B950 2, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldUseTemporaryAttributes_forDrawingToScreen_atCharacterIndex_effectiveRange_, # noqa: B950 3, objc._C_NSUInteger, ) self.assertArgHasType( TestNSLayoutManagerHelper.layoutManager_shouldUseTemporaryAttributes_forDrawingToScreen_atCharacterIndex_effectiveRange_, # noqa: B950 4, b"o^" + AppKit.NSRange.__typestr__, ) self.assertArgIsBOOL( TestNSLayoutManagerHelper.layoutManager_didCompleteLayoutForTextContainer_atEnd_, # noqa: B950 2, ) self.assertArgIsBOOL( AppKit.NSLayoutManager.getLineFragmentInsertionPointsForCharacterAtIndex_alternatePositions_inDisplayOrder_positions_characterIndexes_, # noqa: B950 1, ) self.assertArgIsBOOL( AppKit.NSLayoutManager.getLineFragmentInsertionPointsForCharacterAtIndex_alternatePositions_inDisplayOrder_positions_characterIndexes_, # noqa: B950 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.getLineFragmentInsertionPointsForCharacterAtIndex_alternatePositions_inDisplayOrder_positions_characterIndexes_, # noqa: B950 3, ) self.assertArgIsOut( AppKit.NSLayoutManager.getLineFragmentInsertionPointsForCharacterAtIndex_alternatePositions_inDisplayOrder_positions_characterIndexes_, # noqa: B950 4, ) self.assertResultIsBOOL( AppKit.NSLayoutManager.layoutManagerOwnsFirstResponderInWindow_ ) @expectedFailure def testMethods10_5_failon11beta(self): self.assertArgIsBOOL( AppKit.NSLayoutManager.rulerAccessoryViewForTextView_paragraphStyle_ruler_enabled_, 3, ) @expectedFailureIf( os_release().rsplit(".", 1)[0] in ("10.5", "10.6", "10.7", "10.8", "10.9") ) @min_os_level("10.5") def testMethods10_5_not_available(self): self.assertHasAttr( AppKit.NSLayoutManager, "getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_", ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_, # noqa: B950 1, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_, # noqa: B950 2, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_, # noqa: B950 3, ) self.assertArgIsOut( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_, # noqa: B950 4, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_, # noqa: B950 1, 0, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_, # noqa: B950 2, 0, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_, # noqa: B950 3, 0, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_, # noqa: B950 4, 0, ) @min_os_level("10.5") @expectedFailure def testMethods10_5_fail(self): self.fail( "Buffer size is non-trivial: - (AppKit.NSUInteger)getLineFragmentInsertionPointsForCharacterAtIndex:(AppKit.NSUInteger)charIndex alternatePositions:(BOOL)aFlag inDisplayOrder:(BOOL)dFlag positions:(CGFloat *)positions characterIndexes:(AppKit.NSUInteger *)charIndexes;" # noqa: B950 ) @min_os_level("10.6") def testMethods10_6(self): self.assertArgHasType( AppKit.NSLayoutManager.characterIndexForPoint_inTextContainer_fractionOfDistanceBetweenInsertionPoints_, # noqa: B950 0, AppKit.NSPoint.__typestr__, ) self.assertArgIsOut( AppKit.NSLayoutManager.characterIndexForPoint_inTextContainer_fractionOfDistanceBetweenInsertionPoints_, # noqa: B950 2, ) self.assertArgHasType( AppKit.NSLayoutManager.fillBackgroundRectArray_count_forCharacterRange_color_, 0, b"N^" + AppKit.NSRect.__typestr__, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.fillBackgroundRectArray_count_forCharacterRange_color_, 0, 1, ) self.assertArgHasType( AppKit.NSLayoutManager.fillBackgroundRectArray_count_forCharacterRange_color_, 2, AppKit.NSRange.__typestr__, ) @min_os_level("10.7") def testMethods10_7(self): self.assertArgIsIn( AppKit.NSLayoutManager.showCGGlyphs_positions_count_font_matrix_attributes_inContext_, # noqa: B950 0, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.showCGGlyphs_positions_count_font_matrix_attributes_inContext_, # noqa: B950 0, 2, ) self.assertArgIsIn( AppKit.NSLayoutManager.showCGGlyphs_positions_count_font_matrix_attributes_inContext_, # noqa: B950 1, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.showCGGlyphs_positions_count_font_matrix_attributes_inContext_, # noqa: B950 1, 2, ) @min_os_level("10.11") def testMethods10_11(self): self.assertArgSizeInArg( AppKit.NSLayoutManager.setGlyphs_properties_characterIndexes_font_forGlyphRange_, 0, 4, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.setGlyphs_properties_characterIndexes_font_forGlyphRange_, 1, 4, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.setGlyphs_properties_characterIndexes_font_forGlyphRange_, 2, 4, ) self.assertArgIsBlock( AppKit.NSLayoutManager.enumerateLineFragmentsForGlyphRange_usingBlock_, 1, b"v" + AppKit.NSRect.__typestr__ + AppKit.NSRect.__typestr__ + b"@" + AppKit.NSRange.__typestr__ + b"o^Z", ) self.assertArgIsBlock( AppKit.NSLayoutManager.enumerateEnclosingRectsForGlyphRange_withinSelectedGlyphRange_inTextContainer_usingBlock_, # noqa: B950 3, b"v" + AppKit.NSRect.__typestr__ + b"o^Z", ) @min_os_level("10.15") def testMethods10_15(self): self.assertResultIsBOOL(AppKit.NSLayoutManager.usesDefaultHyphenation) self.assertArgIsBOOL(AppKit.NSLayoutManager.setUsesDefaultHyphenation_, 0) self.assertArgIsIn( AppKit.NSLayoutManager.showCGGlyphs_positions_count_font_textMatrix_attributes_inContext_, # noqa: B950 0, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.showCGGlyphs_positions_count_font_textMatrix_attributes_inContext_, # noqa: B950 0, 2, ) self.assertArgIsIn( AppKit.NSLayoutManager.showCGGlyphs_positions_count_font_textMatrix_attributes_inContext_, # noqa: B950 1, ) self.assertArgSizeInArg( AppKit.NSLayoutManager.showCGGlyphs_positions_count_font_textMatrix_attributes_inContext_, # noqa: B950 1, 2, )
class TestABGlobals(TestCase): @min_os_level("10.12") def testConstants10_12(self): self.assertIsInstance(AddressBook.kABOrganizationPhoneticProperty, str) @min_os_level("10.9") def testConstants10_9(self): self.assertIsInstance(AddressBook.kABSocialProfileServiceTencentWeibo, str) @min_os_level("10.10") def testConstants10_10(self): self.assertIsInstance(AddressBook.kABSocialProfileServiceYelp, str) self.assertIsInstance(AddressBook.kABAlternateBirthdayComponentsProperty, str) @min_os_level("10.8") def testConstants10_8(self): self.assertIsInstance(AddressBook.kABSocialProfileServiceSinaWeibo, str) @min_os_level("10.7") def testConstants10_7(self): self.assertIsInstance(AddressBook.kABMobileMeLabel, str) self.assertIsInstance(AddressBook.kABBirthdayComponentsProperty, str) self.assertIsInstance(AddressBook.kABOtherDateComponentsProperty, str) self.assertIsInstance(AddressBook.kABInstantMessageProperty, str) self.assertIsInstance(AddressBook.kABInstantMessageUsernameKey, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceKey, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceAIM, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceFacebook, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceGaduGadu, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceGoogleTalk, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceICQ, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceJabber, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceMSN, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceQQ, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceSkype, str) self.assertIsInstance(AddressBook.kABInstantMessageServiceYahoo, str) self.assertIsInstance(AddressBook.kABSocialProfileProperty, str) self.assertIsInstance(AddressBook.kABSocialProfileURLKey, str) self.assertIsInstance(AddressBook.kABSocialProfileUsernameKey, str) self.assertIsInstance(AddressBook.kABSocialProfileUserIdentifierKey, str) self.assertIsInstance(AddressBook.kABSocialProfileServiceKey, str) self.assertIsInstance(AddressBook.kABSocialProfileServiceTwitter, str) self.assertIsInstance(AddressBook.kABSocialProfileServiceFacebook, str) self.assertIsInstance(AddressBook.kABSocialProfileServiceLinkedIn, str) self.assertIsInstance(AddressBook.kABSocialProfileServiceFlickr, str) self.assertIsInstance(AddressBook.kABSocialProfileServiceMySpace, str) @min_os_level("10.6") def testConstants10_6(self): self.assertIsInstance(AddressBook.kABPhoneiPhoneLabel, str) self.assertEqual(AddressBook.kABShowAsResource, 2) self.assertEqual(AddressBook.kABShowAsRoom, 3) @min_os_level("10.5") def testConstants10_5(self): self.assertIsInstance(AddressBook.kABCalendarURIsProperty, str) @expectedFailureIf(os_level_key(os_release()) < os_level_key("10.14")) def testConstants_10_7_broken(self): self.assertIsInstance(AddressBook.kABEmailMobileMeLabel, str) self.assertIsInstance(AddressBook.kABAIMMobileMeLabel, str) def testConstants(self): self.assertEqual(AddressBook.kABShowAsMask, 0o7) self.assertEqual(AddressBook.kABShowAsPerson, 0o0) self.assertEqual(AddressBook.kABShowAsCompany, 0o1) self.assertEqual(AddressBook.kABNameOrderingMask, 0o70) self.assertEqual(AddressBook.kABDefaultNameOrdering, 0o0) self.assertEqual(AddressBook.kABFirstNameFirst, 0o40) self.assertEqual(AddressBook.kABLastNameFirst, 0o20) self.assertIsInstance(AddressBook.kABUIDProperty, str) self.assertIsInstance(AddressBook.kABCreationDateProperty, str) self.assertIsInstance(AddressBook.kABModificationDateProperty, str) self.assertIsInstance(AddressBook.kABFirstNameProperty, str) self.assertIsInstance(AddressBook.kABLastNameProperty, str) self.assertIsInstance(AddressBook.kABFirstNamePhoneticProperty, str) self.assertIsInstance(AddressBook.kABLastNamePhoneticProperty, str) self.assertIsInstance(AddressBook.kABNicknameProperty, str) self.assertIsInstance(AddressBook.kABMaidenNameProperty, str) self.assertIsInstance(AddressBook.kABBirthdayProperty, str) self.assertIsInstance(AddressBook.kABOrganizationProperty, str) self.assertIsInstance(AddressBook.kABJobTitleProperty, str) self.assertIsInstance(AddressBook.kABHomePageProperty, str) self.assertIsInstance(AddressBook.kABURLsProperty, str) self.assertIsInstance(AddressBook.kABHomePageLabel, str) self.assertIsInstance(AddressBook.kABEmailProperty, str) self.assertIsInstance(AddressBook.kABEmailWorkLabel, str) self.assertIsInstance(AddressBook.kABEmailHomeLabel, str) self.assertIsInstance(AddressBook.kABAddressProperty, str) self.assertIsInstance(AddressBook.kABAddressStreetKey, str) self.assertIsInstance(AddressBook.kABAddressCityKey, str) self.assertIsInstance(AddressBook.kABAddressStateKey, str) self.assertIsInstance(AddressBook.kABAddressZIPKey, str) self.assertIsInstance(AddressBook.kABAddressCountryKey, str) self.assertIsInstance(AddressBook.kABAddressCountryCodeKey, str) self.assertIsInstance(AddressBook.kABAddressHomeLabel, str) self.assertIsInstance(AddressBook.kABAddressWorkLabel, str) self.assertIsInstance(AddressBook.kABOtherDatesProperty, str) self.assertIsInstance(AddressBook.kABAnniversaryLabel, str) self.assertIsInstance(AddressBook.kABRelatedNamesProperty, str) self.assertIsInstance(AddressBook.kABFatherLabel, str) self.assertIsInstance(AddressBook.kABMotherLabel, str) self.assertIsInstance(AddressBook.kABParentLabel, str) self.assertIsInstance(AddressBook.kABBrotherLabel, str) self.assertIsInstance(AddressBook.kABSisterLabel, str) self.assertIsInstance(AddressBook.kABChildLabel, str) self.assertIsInstance(AddressBook.kABFriendLabel, str) self.assertIsInstance(AddressBook.kABSpouseLabel, str) self.assertIsInstance(AddressBook.kABPartnerLabel, str) self.assertIsInstance(AddressBook.kABAssistantLabel, str) self.assertIsInstance(AddressBook.kABManagerLabel, str) self.assertIsInstance(AddressBook.kABDepartmentProperty, str) self.assertIsInstance(AddressBook.kABPersonFlags, str) self.assertIsInstance(AddressBook.kABPhoneProperty, str) self.assertIsInstance(AddressBook.kABPhoneWorkLabel, str) self.assertIsInstance(AddressBook.kABPhoneHomeLabel, str) self.assertIsInstance(AddressBook.kABPhoneMobileLabel, str) self.assertIsInstance(AddressBook.kABPhoneMainLabel, str) self.assertIsInstance(AddressBook.kABPhoneHomeFAXLabel, str) self.assertIsInstance(AddressBook.kABPhoneWorkFAXLabel, str) self.assertIsInstance(AddressBook.kABPhonePagerLabel, str) self.assertIsInstance(AddressBook.kABAIMInstantProperty, str) self.assertIsInstance(AddressBook.kABAIMWorkLabel, str) self.assertIsInstance(AddressBook.kABAIMHomeLabel, str) self.assertIsInstance(AddressBook.kABJabberInstantProperty, str) self.assertIsInstance(AddressBook.kABJabberWorkLabel, str) self.assertIsInstance(AddressBook.kABJabberHomeLabel, str) self.assertIsInstance(AddressBook.kABMSNInstantProperty, str) self.assertIsInstance(AddressBook.kABMSNWorkLabel, str) self.assertIsInstance(AddressBook.kABMSNHomeLabel, str) self.assertIsInstance(AddressBook.kABYahooInstantProperty, str) self.assertIsInstance(AddressBook.kABYahooWorkLabel, str) self.assertIsInstance(AddressBook.kABYahooHomeLabel, str) self.assertIsInstance(AddressBook.kABICQInstantProperty, str) self.assertIsInstance(AddressBook.kABICQWorkLabel, str) self.assertIsInstance(AddressBook.kABICQHomeLabel, str) self.assertIsInstance(AddressBook.kABNoteProperty, str) self.assertIsInstance(AddressBook.kABMiddleNameProperty, str) self.assertIsInstance(AddressBook.kABMiddleNamePhoneticProperty, str) self.assertIsInstance(AddressBook.kABTitleProperty, str) self.assertIsInstance(AddressBook.kABSuffixProperty, str) self.assertIsInstance(AddressBook.kABGroupNameProperty, str) self.assertIsInstance(AddressBook.kABWorkLabel, str) self.assertIsInstance(AddressBook.kABHomeLabel, str) self.assertIsInstance(AddressBook.kABOtherLabel, str) self.assertIsInstance(AddressBook.kABDatabaseChangedNotification, str) self.assertIsInstance(AddressBook.kABDatabaseChangedExternallyNotification, str) self.assertIsInstance(AddressBook.kABInsertedRecords, str) self.assertIsInstance(AddressBook.kABUpdatedRecords, str) self.assertIsInstance(AddressBook.kABDeletedRecords, str) def testFunctions(self): v = AddressBook.ABLocalizedPropertyOrLabel(AddressBook.kABAssistantLabel) self.assertIsInstance(v, str)
def test_dyld_library(self): for k in ( "DYLD_LIBRARY_PATH", "DYLD_FALLBACK_LIBRARY_PATH", "DYLD_IMAGE_SUFFIX", ): if k in os.environ: del os.environ[k] orig = os.path.exists try: os.path.exists = lambda fn: lst.append(fn) lst = [] self.assertRaises( ValueError, dyld.dyld_library, "/usr/lib/libSystem.dylib", "libXSystem.dylib", ) self.assertEqual( lst, [ "/usr/lib/libSystem.dylib", os.path.expanduser("~/lib/libXSystem.dylib"), "/usr/local/lib/libXSystem.dylib", "/lib/libXSystem.dylib", "/usr/lib/libXSystem.dylib", ], ) os.environ["DYLD_IMAGE_SUFFIX"] = "_debug" lst = [] self.assertRaises( ValueError, dyld.dyld_library, "/usr/lib/libSystem.dylib", "libXSystem.dylib", ) self.assertEqual( lst, [ "/usr/lib/libSystem_debug.dylib", "/usr/lib/libSystem.dylib", os.path.expanduser("~/lib/libXSystem_debug.dylib"), os.path.expanduser("~/lib/libXSystem.dylib"), "/usr/local/lib/libXSystem_debug.dylib", "/usr/local/lib/libXSystem.dylib", "/lib/libXSystem_debug.dylib", "/lib/libXSystem.dylib", "/usr/lib/libXSystem_debug.dylib", "/usr/lib/libXSystem.dylib", ], ) del os.environ["DYLD_IMAGE_SUFFIX"] os.environ["DYLD_LIBRARY_PATH"] = "/slib:/usr/slib" lst = [] self.assertRaises( ValueError, dyld.dyld_library, "/usr/lib/libSystem.dylib", "libXSystem.dylib", ) self.assertEqual( lst, [ "/slib/libXSystem.dylib", "/usr/slib/libXSystem.dylib", "/usr/lib/libSystem.dylib", os.path.expanduser("~/lib/libXSystem.dylib"), "/usr/local/lib/libXSystem.dylib", "/lib/libXSystem.dylib", "/usr/lib/libXSystem.dylib", ], ) del os.environ["DYLD_LIBRARY_PATH"] os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = "/slib:/usr/slib" lst = [] self.assertRaises( ValueError, dyld.dyld_library, "/usr/lib/libSystem.dylib", "libXSystem.dylib", ) self.assertEqual( lst, [ "/usr/lib/libSystem.dylib", "/slib/libXSystem.dylib", "/usr/slib/libXSystem.dylib", ], ) del os.environ["DYLD_FALLBACK_LIBRARY_PATH"] os.environ["DYLD_LIBRARY_PATH"] = "/lib2:/lib3" os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = "/lib4:/lib5" os.environ["DYLD_IMAGE_SUFFIX"] = "_profile" lst = [] self.assertRaises( ValueError, dyld.dyld_library, "/usr/lib/libSystem.dylib", "libXSystem.dylib", ) self.assertEqual( lst, [ "/lib2/libXSystem_profile.dylib", "/lib2/libXSystem.dylib", "/lib3/libXSystem_profile.dylib", "/lib3/libXSystem.dylib", "/usr/lib/libSystem_profile.dylib", "/usr/lib/libSystem.dylib", "/lib4/libXSystem_profile.dylib", "/lib4/libXSystem.dylib", "/lib5/libXSystem_profile.dylib", "/lib5/libXSystem.dylib", ], ) del os.environ["DYLD_LIBRARY_PATH"] del os.environ["DYLD_FALLBACK_LIBRARY_PATH"] del os.environ["DYLD_IMAGE_SUFFIX"] finally: os.path.exists = orig self.assertEqual( dyld.dyld_library("/usr/lib/libSystem.dylib", "libXSystem.dylib"), "/usr/lib/libSystem.dylib", ) # When the 'command line tools for xcode' are not installed # there is no debug version of libsystem in the system wide # library directory. In that case we look in the SDK instead. if os.path.exists("/usr/lib/libSystem_debug.dylib"): os.environ["DYLD_IMAGE_SUFFIX"] = "_debug" self.assertEqual( dyld.dyld_library("/usr/lib/libSystem.dylib", "libSystem.dylib"), "/usr/lib/libSystem_debug.dylib", ) else: p = subprocess.check_output(["xcrun", "--show-sdk-path"]).strip() os.environ["DYLD_LIBRARY_PATH"] = os.path.join( p.decode("utf-8"), "usr", "lib") os.environ["DYLD_IMAGE_SUFFIX"] = "_debug" # The OSX 10.11 SDK no longer contains ".dylib" files, which # makes the test useless when running up-to-date # tools on OSX 10.10 or later. if os_level_key(os_release()) < os_level_key("10.10"): self.assertEqual( dyld.dyld_library("/usr/lib/libSystem.dylib", "libSystem.dylib"), os.path.join(os.environ["DYLD_LIBRARY_PATH"], "libSystem_debug.dylib"), )
def testFunctions(self): CoreServices.LSInit(CoreServices.kLSInitializeDefaults) CoreServices.LSTerm() url = CoreServices.CFURLCreateFromFileSystemRepresentation( None, self.bpath, len(self.bpath), True) self.assertIsInstance(url, CoreServices.CFURLRef) ok, info = CoreServices.LSCopyItemInfoForURL( url, CoreServices.kLSRequestExtension | CoreServices.kLSRequestTypeCreator, None, ) self.assertEqual(ok, 0) self.assertIsInstance(info, CoreServices.LSItemInfoRecord) self.assertArgIsOut(CoreServices.LSGetExtensionInfo, 2) ok, info = CoreServices.LSGetExtensionInfo(len(self.path), self.path, None) self.assertEqual(ok, 0) self.assertEqual(info, self.path.rindex(".") + 1) self.assertArgIsOut(CoreServices.LSCopyDisplayNameForURL, 1) self.assertArgIsCFRetained(CoreServices.LSCopyDisplayNameForURL, 1) ok, info = CoreServices.LSCopyDisplayNameForURL(url, None) self.assertEqual(ok, 0) self.assertIsInstance(info, str) self.assertArgIsBOOL(CoreServices.LSSetExtensionHiddenForURL, 1) ok = CoreServices.LSSetExtensionHiddenForURL(url, True) self.assertEqual(ok, 0) self.assertArgIsOut(CoreServices.LSCopyKindStringForURL, 1) self.assertArgIsCFRetained(CoreServices.LSCopyKindStringForURL, 1) ok, info = CoreServices.LSCopyKindStringForURL(url, None) self.assertEqual(ok, 0) self.assertIsInstance(info, str) self.assertArgIsOut(CoreServices.LSCopyKindStringForTypeInfo, 3) self.assertArgIsCFRetained(CoreServices.LSCopyKindStringForTypeInfo, 3) ok, info = CoreServices.LSCopyKindStringForTypeInfo( CoreServices.kLSUnknownType, CoreServices.kLSUnknownCreator, "jpg", None) self.assertEqual(ok, 0) self.assertIsInstance(info, str) self.assertArgIsOut(CoreServices.LSCopyKindStringForMIMEType, 1) self.assertArgIsCFRetained(CoreServices.LSCopyKindStringForMIMEType, 1) ok, info = CoreServices.LSCopyKindStringForMIMEType("text/plain", None) self.assertIsInstance(ok, int) # XXX: For some reason this fails sometimes... # self.assertEqual(ok, 0) self.assertIsInstance(info, (str, type(None))) self.assertArgIsOut(CoreServices.LSGetApplicationForInfo, 4) self.assertArgIsOut(CoreServices.LSGetApplicationForInfo, 5) self.assertArgIsCFRetained(CoreServices.LSGetApplicationForInfo, 5) ok, ref, info_url = CoreServices.LSGetApplicationForInfo( CoreServices.kLSUnknownType, CoreServices.kLSUnknownCreator, "txt", CoreServices.kLSRolesAll, None, None, ) self.assertEqual(ok, 0) self.assertIsInstance(ref, objc.FSRef) self.assertIsInstance(info_url, CoreServices.CFURLRef) self.assertArgIsOut(CoreServices.LSCopyApplicationForMIMEType, 2) self.assertArgIsCFRetained(CoreServices.LSCopyApplicationForMIMEType, 2) ok, info_url = CoreServices.LSCopyApplicationForMIMEType( "text/plain", CoreServices.kLSRolesAll, None) self.assertEqual(ok, 0) self.assertIsInstance(info_url, CoreServices.CFURLRef) self.assertArgIsOut(CoreServices.LSGetApplicationForURL, 2) self.assertArgIsOut(CoreServices.LSGetApplicationForURL, 3) self.assertArgIsCFRetained(CoreServices.LSGetApplicationForURL, 3) ok, ref, info_url = CoreServices.LSGetApplicationForURL( url, CoreServices.kLSRolesAll, None, None) self.assertEqual(ok, 0) self.assertIsInstance(ref, objc.FSRef) self.assertIsInstance(info_url, CoreServices.CFURLRef) self.assertArgIsOut(CoreServices.LSFindApplicationForInfo, 3) self.assertArgIsOut(CoreServices.LSFindApplicationForInfo, 4) self.assertArgIsCFRetained(CoreServices.LSFindApplicationForInfo, 4) ok, ref, info_url = CoreServices.LSFindApplicationForInfo( CoreServices.kLSUnknownCreator, None, "foo.app", None, None) # XXX: The code looks correct but fails, however the corresponding C code also fails. # self.assertEqual(ok, 0) self.assertIsInstance(ok, int) if ref is not None: self.assertIsInstance(ref, objc.FSRef) if info_url is not None: self.assertIsInstance(info_url, CoreServices.CFURLRef) self.assertArgIsOut(CoreServices.LSCanURLAcceptURL, 4) ok, status = CoreServices.LSCanURLAcceptURL( url, url, CoreServices.kLSRolesAll, CoreServices.kLSAcceptDefault, None) self.assertIsInstance(ok, int) self.assertIsInstance(status, bool) ok = CoreServices.LSRegisterURL(url, False) self.assertIsInstance(ok, int) v = CoreServices.LSCopyApplicationURLsForURL(url, CoreServices.kLSRolesAll) self.assertIsInstance(v, CoreServices.CFArrayRef) for a in v: self.assertIsInstance(a, CoreServices.CFURLRef) default_role = CoreServices.LSCopyDefaultRoleHandlerForContentType( "public.plain-text", CoreServices.kLSRolesAll) if os_level_key(os_release()) < os_level_key("10.7"): if default_role is not None: self.assertIsInstance(default_role, str) else: self.assertIsInstance(default_role, str) v = CoreServices.LSCopyAllRoleHandlersForContentType( "public.plain-text", CoreServices.kLSRolesAll) self.assertIsInstance(v, CoreServices.CFArrayRef) for a in v: self.assertIsInstance(a, str) ok = CoreServices.LSSetDefaultRoleHandlerForContentType( "public.plain-text", CoreServices.kLSRolesAll, default_role) self.assertIsInstance(ok, int) v = CoreServices.LSGetHandlerOptionsForContentType("public.plain-text") self.assertIsInstance(v, int) ok = CoreServices.LSSetHandlerOptionsForContentType( "public.plain-text", v) self.assertIsInstance(ok, int) self.assertResultIsCFRetained( CoreServices.LSCopyDefaultHandlerForURLScheme) default_handler = CoreServices.LSCopyDefaultHandlerForURLScheme("http") if os_level_key(os_release()) < os_level_key("10.7"): if default_handler is not None: self.assertIsInstance(default_handler, str) else: self.assertIsInstance(default_handler, str) self.assertResultIsCFRetained( CoreServices.LSCopyAllHandlersForURLScheme) v = CoreServices.LSCopyAllHandlersForURLScheme("http") self.assertIsInstance(v, CoreServices.CFArrayRef) for a in v: self.assertIsInstance(a, str) ok = CoreServices.LSSetDefaultHandlerForURLScheme( "http", default_handler) self.assertIsInstance(ok, int)
class ObjCRoundTrip(TestCase): # TODO: NSProxy def testNSObject(self): container = OC_TestIdentity.alloc().init() cls = objc.lookUpClass("NSObject") container.setStoredObjectToResultOf_on_("new", cls) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) container.setStoredObjectToResultOf_on_("class", cls) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) def testNSString(self): container = OC_TestIdentity.alloc().init() cls = objc.lookUpClass("NSObject") container.setStoredObjectToResultOf_on_("description", cls) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) self.assertTrue(isinstance(v, str)) cls = objc.lookUpClass("NSMutableString") container.setStoredObjectToResultOf_on_("new", cls) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) self.assertTrue(isinstance(v, str)) def testProtocol(self): container = OC_TestIdentity.alloc().init() container.setStoredObjectToAProtocol() v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) self.assertTrue(isinstance(v, objc.formal_protocol)) if sys.maxsize < 2**32 and os_level_key( os_release()) < os_level_key("10.7"): def testObject(self): container = OC_TestIdentity.alloc().init() cls = objc.lookUpClass("Object") container.setStoredObjectAnInstanceOfClassic_(cls) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) self.assertTrue(isinstance(v, cls)) def testNSNumber(self): container = OC_TestIdentity.alloc().init() container.setStoredObjectToInteger_(10) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) container.setStoredObjectToInteger_(-40) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) container.setStoredObjectToUnsignedInteger_(40) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) container.setStoredObjectToUnsignedInteger_(2**32 - 4) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) if sys.maxsize < 2**32: container.setStoredObjectToLongLong_(sys.maxsize * 2) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) container.setStoredObjectToLongLong_(-sys.maxsize) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) container.setStoredObjectToUnsignedLongLong_(sys.maxsize * 2) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) container.setStoredObjectToFloat_(10.0) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) container.setStoredObjectToDouble_(9999.0) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v)) def testNSDecimalNumber(self): container = OC_TestIdentity.alloc().init() cls = objc.lookUpClass("NSDecimalNumber") container.setStoredObjectToResultOf_on_("zero", cls) v = container.storedObject() self.assertTrue(container.isSameObjectAsStored_(v), repr(v))
class ObjCtoPython(TestCase): # TODO: NSProxy def assertFetchingTwice(self, container, message=None): v1 = container.storedObject() v2 = container.storedObject() self.assertTrue(v1 is v2, message) def testNSObject(self): container = OC_TestIdentity.alloc().init() cls = objc.lookUpClass("NSObject") container.setStoredObjectToResultOf_on_("new", cls) self.assertFetchingTwice(container, repr(cls)) container.setStoredObjectToResultOf_on_("new", cls) v1 = container.storedObject() container.setStoredObjectToResultOf_on_("new", cls) v2 = container.storedObject() self.assertTrue(v1 is not v2, "different objects") def dont_testNSString(self): # This would always fail, NSStrings get a new proxy everytime # they cross the bridge, otherwise it would be unnecessarily hard # to get at the current value of NSMutableStrings. container = OC_TestIdentity.alloc().init() cls = objc.lookUpClass("NSObject") container.setStoredObjectToResultOf_on_("description", cls) self.assertFetchingTwice(container, "string") cls = objc.lookUpClass("NSMutableString") container.setStoredObjectToResultOf_on_("new", cls) self.assertFetchingTwice(container, "mutable string") def testProtocol(self): container = OC_TestIdentity.alloc().init() container.setStoredObjectToAProtocol() v = container.storedObject() self.assertIsNot(v, None) self.assertFetchingTwice(container, "protocol") if sys.maxsize < 2**32 and os_release() < "10.7": def testObject(self): container = OC_TestIdentity.alloc().init() cls = objc.lookUpClass("Object") container.setStoredObjectAnInstanceOfClassic_(cls) self.assertFetchingTwice(container, "object") def dont_testNSNumber(self): # No unique proxies yet, due to the way these proxies are # implemented. This needs to be fixed, but that does not have # a high priority. container = OC_TestIdentity.alloc().init() container.setStoredObjectToInteger_(10) self.assertFetchingTwice(container, "int 10") container.setStoredObjectToInteger_(-40) self.assertFetchingTwice(container, "int -40") container.setStoredObjectToUnsignedInteger_(40) self.assertFetchingTwice(container, "unsigned int 40") container.setStoredObjectToUnsignedInteger_(sys.maxsize * 2) self.assertFetchingTwice(container, "unsigned int sys.maxsize*2") container.setStoredObjectToLongLong_(sys.maxsize * 2) self.assertFetchingTwice(container, "long long sys.maxsize*2") container.setStoredObjectToLongLong_(-sys.maxsize) self.assertFetchingTwice(container, "long long -sys.maxsize") container.setStoredObjectToUnsignedLongLong_(sys.maxsize * 2) self.assertFetchingTwice(container, "unsigned long long sys.maxsize*2") container.setStoredObjectToFloat_(10.0) self.assertFetchingTwice(container, "float") container.setStoredObjectToDouble_(9999.0) self.assertFetchingTwice(container, "double") def testNSDecimalNumber(self): container = OC_TestIdentity.alloc().init() cls = objc.lookUpClass("NSDecimalNumber") container.setStoredObjectToResultOf_on_("zero", cls) self.assertFetchingTwice(container, "decimal")
class TestSceneKitTypes(TestCase): def testTypes(self): v = SceneKit.SCNVector3() self.assertIsInstance(v.x, float) self.assertIsInstance(v.y, float) self.assertIsInstance(v.z, float) v = SceneKit.SCNVector4() self.assertIsInstance(v.x, float) self.assertIsInstance(v.y, float) self.assertIsInstance(v.z, float) self.assertIsInstance(v.w, float) self.assertTrue(SceneKit.SCNQuaternion is SceneKit.SCNVector4) self.assertTrue(SceneKit.SCNMatrix4 is SceneKit.CATransform3D) def testConstants(self): self.assertEqual(SceneKit.SCNProgramCompilationError, 1) self.assertEqual(SceneKit.SCNActionTimingModeLinear, 0) self.assertEqual(SceneKit.SCNActionTimingModeEaseIn, 1) self.assertEqual(SceneKit.SCNActionTimingModeEaseOut, 2) self.assertEqual(SceneKit.SCNActionTimingModeEaseInEaseOut, 3) self.assertEqual(SceneKit.SCNColorMaskNone, 0) self.assertEqual(SceneKit.SCNColorMaskRed, 0x1 << 3) self.assertEqual(SceneKit.SCNColorMaskGreen, 0x1 << 2) self.assertEqual(SceneKit.SCNColorMaskBlue, 0x1 << 1) self.assertEqual(SceneKit.SCNColorMaskAlpha, 0x1 << 0) self.assertEqual(SceneKit.SCNColorMaskAll, 0xF) @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.10") @min_os_level("10.10") def testConstantsFail10_10(self): self.assertIsInstance(SceneKit.SCNErrorDomain, str) @min_os_level("10.10") def testConstants10_10(self): self.assertIsInstance(SceneKit.SCNMatrix4Identity, SceneKit.SCNMatrix4) self.assertIsInstance(SceneKit.SCNVector3Zero, SceneKit.SCNVector3) self.assertIsInstance(SceneKit.SCNVector4Zero, SceneKit.SCNVector4) @min_os_level("10.10") def testFunctions(self): self.assertResultHasType(SceneKit.SCNVector3EqualToVector3, objc._C_BOOL) self.assertResultHasType(SceneKit.SCNVector4EqualToVector4, objc._C_BOOL) v = SceneKit.SCNVector3Make(1, 2, 3) self.assertIsInstance(v, SceneKit.SCNVector3) self.assertEqual(v.x, 1) self.assertEqual(v.y, 2) self.assertEqual(v.z, 3) v = SceneKit.SCNVector4Make(1, 2, 3, 4) self.assertIsInstance(v, SceneKit.SCNVector4) self.assertEqual(v.x, 1) self.assertEqual(v.y, 2) self.assertEqual(v.z, 3) self.assertEqual(v.w, 4) v = SceneKit.SCNMatrix4MakeTranslation(1, 2, 3) self.assertIsInstance(v, SceneKit.SCNMatrix4) self.assertEqual(v.m41, 1) self.assertEqual(v.m42, 2) self.assertEqual(v.m43, 3) v = SceneKit.SCNMatrix4MakeScale(1, 2, 3) self.assertIsInstance(v, SceneKit.SCNMatrix4) self.assertEqual(v.m11, 1) self.assertEqual(v.m22, 2) self.assertEqual(v.m33, 3) w = SceneKit.SCNMatrix4Translate(v, 6, 7, 8) self.assertIsInstance(w, SceneKit.SCNMatrix4) @expectedFailure def testFunctions_unsupported(self): # XXX SceneKit.SCNVector3FromGLKVector3 SceneKit.SCNVector3ToGLKVector3 SceneKit.SCNVector4FromGLKVector4 SceneKit.SCNVector4ToGLKVector4 @min_os_level("10.10") def testFunctions10_10(self): v = SceneKit.SCNMatrix4MakeRotation(1, 2, 3, 4) self.assertIsInstance(v, SceneKit.SCNMatrix4) v = SceneKit.SCNMatrix4Scale(v, 1, 2, 3) self.assertIsInstance(v, SceneKit.SCNMatrix4) v = SceneKit.SCNMatrix4Rotate(v, 1, 2, 3, 4) self.assertIsInstance(v, SceneKit.SCNMatrix4) v = SceneKit.SCNMatrix4Invert(v) self.assertIsInstance(v, SceneKit.SCNMatrix4) v = SceneKit.SCNMatrix4Invert(v) self.assertIsInstance(v, SceneKit.SCNMatrix4) self.assertResultHasType(SceneKit.SCNMatrix4IsIdentity, objc._C_BOOL) self.assertResultHasType(SceneKit.SCNMatrix4EqualToMatrix4, objc._C_BOOL) @min_os_level("10.10") @expectedFailure def testFunctions10_10_unsup(self): # vector types SceneKit.SCNMatrix4ToGLKMatrix4 SceneKit.SCNMatrix4FromGLKMatrix4 self.assertTrue(SceneKit.GLKMatrix4FromCATransform3D is SceneKit.SCNMatrix4ToGLKMatrix4) self.assertTrue(SceneKit.GLKMatrix4ToCATransform3D is SceneKit.SCNMatrix4FromGLKMatrix4)
class TestGKMatchmaker(TestCase): @min_os_level("10.8") def testConstants10_8(self): self.assertEqual(GameCenter.GKInviteRecipientResponseAccepted, 0) self.assertEqual(GameCenter.GKInviteRecipientResponseDeclined, 1) self.assertEqual(GameCenter.GKInviteRecipientResponseFailed, 2) self.assertEqual(GameCenter.GKInviteRecipientResponseIncompatible, 3) self.assertEqual(GameCenter.GKInviteRecipientResponseUnableToConnect, 4) self.assertEqual(GameCenter.GKInviteRecipientResponseNoAnswer, 5) self.assertEqual( GameCenter.GKInviteeResponseAccepted, GameCenter.GKInviteRecipientResponseAccepted, ) self.assertEqual( GameCenter.GKInviteeResponseDeclined, GameCenter.GKInviteRecipientResponseDeclined, ) self.assertEqual( GameCenter.GKInviteeResponseFailed, GameCenter.GKInviteRecipientResponseFailed, ) self.assertEqual( GameCenter.GKInviteeResponseIncompatible, GameCenter.GKInviteRecipientResponseIncompatible, ) self.assertEqual( GameCenter.GKInviteeResponseUnableToConnect, GameCenter.GKInviteRecipientResponseUnableToConnect, ) self.assertEqual( GameCenter.GKInviteeResponseNoAnswer, GameCenter.GKInviteRecipientResponseNoAnswer, ) self.assertEqual(GameCenter.GKMatchTypePeerToPeer, 0) self.assertEqual(GameCenter.GKMatchTypeHosted, 1) self.assertEqual(GameCenter.GKMatchTypeTurnBased, 2) @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.9") @min_os_level("10.8") def testMethods10_8(self): self.assertResultIsBOOL(GameCenter.GKInvite.isHosted) self.assertArgIsBlock( GameCenter.GKMatchmaker.matchForInvite_completionHandler_, 1, b"v@@") self.assertArgIsBlock( GameCenter.GKMatchmaker.findMatchForRequest_withCompletionHandler_, 1, b"v@@", ) self.assertArgIsBlock( GameCenter.GKMatchmaker. addPlayersToMatch_matchRequest_completionHandler_, 2, b"v@", ) self.assertArgIsBlock( GameCenter.GKMatchmaker. queryPlayerGroupActivity_withCompletionHandler_, 1, b"v" + objc._C_NSInteger + b"@", ) self.assertArgIsBlock( GameCenter.GKMatchmaker.queryActivityWithCompletionHandler_, 0, b"v" + objc._C_NSInteger + b"@", ) self.assertResultIsBlock(GameCenter.GKMatchmaker.inviteHandler, b"v@@") self.assertArgIsBlock(GameCenter.GKMatchmaker.setInviteHandler_, 0, b"v@@") self.assertArgIsBlock( GameCenter.GKMatchmaker. findPlayersForHostedMatchRequest_withCompletionHandler_, 1, b"v@@", ) @expectedFailureIf(os_release().rsplit(".", 1)[0] == "10.9") @min_os_level("10.9") def testMethods10_9(self): self.assertArgIsBlock( GameCenter.GKMatchmaker. startBrowsingForNearbyPlayersWithReachableHandler_, 0, b"v@Z", ) @min_os_level("10.10") def testMethods10_10(self): self.assertResultIsBlock( GameCenter.GKMatchRequest.recipientResponseHandler, b"v@" + objc._C_NSUInteger, ) self.assertResultIsBlock( GameCenter.GKMatchRequest.inviteeResponseHandler, b"v@" + objc._C_NSUInteger) self.assertArgIsBlock( GameCenter.GKMatchRequest.setRecipientResponseHandler_, 0, b"v@" + objc._C_NSUInteger, ) self.assertArgIsBlock( GameCenter.GKMatchRequest.setInviteeResponseHandler_, 0, b"v@" + objc._C_NSUInteger, ) self.assertArgIsBlock( GameCenter.GKMatchmaker. findPlayersForHostedRequest_withCompletionHandler_, 1, b"v@@", ) self.assertArgIsBlock( GameCenter.GKMatchmaker.startBrowsingForNearbyPlayersWithHandler_, 0, b"v@Z") @min_os_level("10.8") def testProtocols(self): objc.protocolNamed("GKInviteEventListener")
def testResources(self): url = CoreFoundation.CFURLCreateWithFileSystemPath( None, "/System/Library/Frameworks/Foundation.framework", CoreFoundation.kCFURLPOSIXPathStyle, True, ) bundle = CoreFoundation.CFBundleCreate(None, url) self.assertIsInstance(bundle, CoreFoundation.CFBundleRef) url = CoreFoundation.CFURLCreateWithFileSystemPath( None, "/System/Library/Frameworks/Tcl.framework", CoreFoundation.kCFURLPOSIXPathStyle, True, ) bundle2 = CoreFoundation.CFBundleCreate(None, url) self.assertIsInstance(bundle2, CoreFoundation.CFBundleRef) url = CoreFoundation.CFBundleCopyResourceURL( bundle, "Formatter", "strings", None ) self.assertIsInstance(url, CoreFoundation.CFURLRef) url = CoreFoundation.CFBundleCopyResourceURL( bundle, "Formatter", "strings", "helloworld.lproj" ) self.assertIs(url, None) array = CoreFoundation.CFBundleCopyResourceURLsOfType(bundle, "strings", None) self.assertIsNot(array, None) self.assertIsInstance(array, CoreFoundation.CFArrayRef) val = CoreFoundation.CFBundleCopyLocalizedString( bundle, "Err640.f", "value", "FoundationErrors" ) self.assertIsInstance(val, str) self.assertNotEqual(val, "value") CoreFoundation.CFCopyLocalizedString("python", "error") CoreFoundation.CFCopyLocalizedStringFromTable("pyobjc", "python", "error") CoreFoundation.CFCopyLocalizedStringFromTableInBundle( "pyobjc", "python", bundle, "comment" ) CoreFoundation.CFCopyLocalizedStringWithDefaultValue( "pyobjc", "python", bundle, "default", "comment" ) array = CoreFoundation.CFBundleCopyBundleLocalizations(bundle) self.assertIsNot(array, None) self.assertIsInstance(array, CoreFoundation.CFArrayRef) arr2 = CoreFoundation.CFBundleCopyPreferredLocalizationsFromArray(array) self.assertIsNot(arr2, None) self.assertIsInstance(arr2, CoreFoundation.CFArrayRef) arr2 = CoreFoundation.CFBundleCopyLocalizationsForPreferences(array, None) self.assertIsNot(arr2, None) self.assertIsInstance(arr2, CoreFoundation.CFArrayRef) url = CoreFoundation.CFBundleCopyResourceURLForLocalization( bundle, "Formatter", "strings", None, "Dutch" ) if url is None: url = CoreFoundation.CFBundleCopyResourceURLForLocalization( bundle, "Formatter", "strings", None, "nl" ) if url is None: url = CoreFoundation.CFBundleCopyResourceURLForLocalization( bundle, "Formatter", "strings", None, "en" ) self.assertIsInstance(url, CoreFoundation.CFURLRef) array = CoreFoundation.CFBundleCopyResourceURLsOfTypeForLocalization( bundle, "strings", None, "Dutch" ) self.assertIsNot(array, None) self.assertIsInstance(array, CoreFoundation.CFArrayRef) url = CoreFoundation.CFBundleCopyExecutableURL(bundle) self.assertIsInstance(url, CoreFoundation.CFURLRef) array = CoreFoundation.CFBundleCopyExecutableArchitectures(bundle) if os_level_key(os_release()) >= os_level_key("10.16"): self.assertIs(array, None) else: self.assertIsNot(array, None) self.assertIsInstance(array, CoreFoundation.CFArrayRef) self.assertArgIsOut(CoreFoundation.CFBundlePreflightExecutable, 1) ok, error = CoreFoundation.CFBundlePreflightExecutable(bundle, None) self.assertTrue((ok is True) or (ok is False)) if ok: self.assertIs(error, None) else: self.assertIsInstance(error, CoreFoundation.CFErrorRef) self.assertArgIsOut(CoreFoundation.CFBundleLoadExecutableAndReturnError, 1) ok, error = CoreFoundation.CFBundleLoadExecutableAndReturnError(bundle2, None) self.assertTrue((ok is True) or (ok is False)) if ok: self.assertIs(error, None) else: self.assertIsInstance(error, CoreFoundation.CFErrorRef) ok = CoreFoundation.CFBundleLoadExecutable(bundle2) self.assertTrue(ok) ok = CoreFoundation.CFBundleIsExecutableLoaded(bundle2) self.assertTrue(ok) CoreFoundation.CFBundleUnloadExecutable(bundle2) ok = CoreFoundation.CFBundleIsExecutableLoaded(bundle2) # self.assertFalse(ok) ok = CoreFoundation.CFBundleLoadExecutable(bundle2) self.assertTrue(ok) try: CoreFoundation.CFBundleGetFunctionPointerForName except AttributeError: pass else: self.fail("CFBundleGetFunctionPointerForName") try: CoreFoundation.CFBundleGetFunctionPointersForNames except AttributeError: pass else: self.fail("CFBundleGetFunctionPointersForNames") try: CoreFoundation.CFBundleGetDataPointerForName except AttributeError: pass else: self.fail("CFBundleGetDataPointerForName") try: CoreFoundation.CFBundleGetDataPointersForNames except AttributeError: pass else: self.fail("CFBundleGetDataPointersForNames") url = CoreFoundation.CFBundleCopyAuxiliaryExecutableURL(bundle, "Foundation") self.assertIsInstance(url, CoreFoundation.CFURLRef) map_id = CoreFoundation.CFBundleOpenBundleResourceMap(bundle) self.assertIsInstance(map_id, int) CoreFoundation.CFBundleCloseBundleResourceMap(bundle, map_id) err, id1, id2 = CoreFoundation.CFBundleOpenBundleResourceFiles( bundle, None, None ) self.assertIsInstance(err, int) self.assertIsInstance(id1, int) self.assertIsInstance(id2, int) if id1 != -1: CoreFoundation.CFBundleCloseBundleResourceMap(bundle, id1) if id2 != -1: CoreFoundation.CFBundleCloseBundleResourceMap(bundle, id2)
objc.registerMetaDataForSelector( b"NSKeyedArchiver", b"archivedDataWithRootObject:requiringSecureCoding:error:", { "arguments": { 2 + 1: { "type": objc._C_NSBOOL }, 2 + 2: { "type_modifier": objc._C_OUT }, } }, ) if os_level_key(os_release()) >= os_level_key("10.13"): # Secure coding was introduced in 10.13. class TestNSKeyedArchivingInterop(TestCase): @classmethod def setUpClass(cls): src = os.path.join(MYDIR, "dump-nsarchive-securecoding.m") dst = cls.progpath = os.path.join(MYDIR, "dump-nsarchive-securecoding") subprocess.check_call([ "cc", "-o", dst, src, "-framework",