Beispiel #1
0
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)
Beispiel #4
0
 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)
Beispiel #6
0
    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))
Beispiel #7
0
 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))
Beispiel #8
0
    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,
            )
Beispiel #9
0
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)
Beispiel #12
0
    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)
Beispiel #14
0
    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)
Beispiel #16
0
    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
Beispiel #17
0
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)
Beispiel #18
0
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
Beispiel #19
0
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@@")
Beispiel #21
0
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,
        )
Beispiel #22
0
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)
Beispiel #23
0
    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"),
                )
Beispiel #24
0
    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)
Beispiel #25
0
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))
Beispiel #26
0
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")
Beispiel #29
0
    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",