1from PyObjCTools.TestSupport import *
2
3from Foundation import *
4
5try:
6    unicode
7except NameError:
8    unicode = str
9
10class TestNSErrorHelper (NSObject):
11    def attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_(self, a, b, c, d, e): pass
12    def attemptRecoveryFromError_optionIndex_(self, a, b): return 1
13
14
15class TestNSError (TestCase):
16    def testConstants(self):
17        self.assertIsInstance(NSCocoaErrorDomain, unicode)
18        self.assertIsInstance(NSPOSIXErrorDomain, unicode)
19        self.assertIsInstance(NSOSStatusErrorDomain, unicode)
20        self.assertIsInstance(NSMachErrorDomain, unicode)
21        self.assertIsInstance(NSUnderlyingErrorKey, unicode)
22        self.assertIsInstance(NSLocalizedDescriptionKey, unicode)
23        self.assertIsInstance(NSLocalizedFailureReasonErrorKey, unicode)
24        self.assertIsInstance(NSLocalizedRecoverySuggestionErrorKey, unicode)
25        self.assertIsInstance(NSLocalizedRecoveryOptionsErrorKey, unicode)
26        self.assertIsInstance(NSRecoveryAttempterErrorKey, unicode)
27        self.assertIsInstance(NSStringEncodingErrorKey, unicode)
28        self.assertIsInstance(NSURLErrorKey, unicode)
29        self.assertIsInstance(NSFilePathErrorKey, unicode)
30        self.assertIsInstance(NSHelpAnchorErrorKey, unicode)
31
32    def testAttemptRecovery(self):
33        self.assertArgHasType(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_, 1, objc._C_NSUInteger)
34        self.assertArgIsSEL(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_, 3, b'v@:' + objc._C_NSBOOL + b'^v')
35        self.assertArgHasType(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_, 4, b'^v')
36
37        self.assertResultIsBOOL(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_)
38        self.assertArgHasType(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_, 1, objc._C_NSUInteger)
39
40if __name__ == "__main__":
41    main()
42