1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3from Foundation import * 4 5 6class TestError (TestCase): 7 8 @min_os_level('10.5') 9 def testTypes(self): 10 self.failUnless(CFErrorRef is NSCFError) 11 12 @min_os_level('10.5') 13 def testTypeID(self): 14 self.failUnless(isinstance(CFErrorGetTypeID(), (int, long))) 15 16 @min_os_level('10.5') 17 def testCreation(self): 18 userInfo = { 19 u'foo': u'bar', 20 } 21 err = CFErrorCreate(None, kCFErrorDomainPOSIX, 42, userInfo) 22 self.failUnless(isinstance(err, CFErrorRef)) 23 24 self.failUnlessResultIsCFRetained(CFErrorCopyUserInfo) 25 dct = CFErrorCopyUserInfo(err) 26 self.assertEquals(dct, userInfo) 27 28 keys = [ u"key1", u"key2"] 29 values = [ u"value1", u"value2"] 30 31 keys = [ NSString.stringWithString_(v) for v in keys ] 32 values = [ NSString.stringWithString_(v) for v in values ] 33 34 self.failUnlessArgHasType(CFErrorCreateWithUserInfoKeysAndValues, 3, 'n^@') 35 self.failUnlessArgSizeInArg(CFErrorCreateWithUserInfoKeysAndValues, 3, 5) 36 self.failUnlessArgHasType(CFErrorCreateWithUserInfoKeysAndValues, 4, 'n^@') 37 self.failUnlessArgSizeInArg(CFErrorCreateWithUserInfoKeysAndValues, 4, 5) 38 err = CFErrorCreateWithUserInfoKeysAndValues(None, kCFErrorDomainPOSIX, 42, keys, values, 2) 39 self.failUnless(isinstance(err, CFErrorRef)) 40 dct = CFErrorCopyUserInfo(err) 41 self.assertEquals(dct, {u'key1': u'value1', u'key2':u'value2'}) 42 43 @min_os_level('10.5') 44 def testInspection(self): 45 userInfo = { 46 u'foo': u'bar', 47 kCFErrorLocalizedFailureReasonKey: "failure reason", 48 kCFErrorLocalizedRecoverySuggestionKey: 'recovery suggestion', 49 } 50 self.failUnlessResultIsCFRetained(CFErrorCreate) 51 err = CFErrorCreate(None, kCFErrorDomainPOSIX, 42, userInfo) 52 self.failUnless(isinstance(err, CFErrorRef)) 53 54 dom = CFErrorGetDomain(err) 55 self.assertEquals(dom, kCFErrorDomainPOSIX) 56 57 code = CFErrorGetCode(err) 58 self.assertEquals(code, 42) 59 60 self.failUnlessResultIsCFRetained(CFErrorCopyDescription) 61 v = CFErrorCopyDescription(err) 62 self.assertEquals(v, u'Operation could not be completed. failure reason') 63 64 self.failUnlessResultIsCFRetained(CFErrorCopyFailureReason) 65 v = CFErrorCopyFailureReason(err) 66 self.assertEquals(v, u'failure reason') 67 68 self.failUnlessResultIsCFRetained(CFErrorCopyRecoverySuggestion) 69 v = CFErrorCopyRecoverySuggestion(err) 70 self.assertEquals(v, u'recovery suggestion') 71 72 73 @min_os_level('10.5') 74 def testConstants(self): 75 self.failUnless(isinstance(kCFErrorDomainPOSIX, unicode)) 76 self.failUnless(isinstance(kCFErrorDomainOSStatus, unicode)) 77 self.failUnless(isinstance(kCFErrorDomainMach, unicode)) 78 self.failUnless(isinstance(kCFErrorDomainCocoa, unicode)) 79 self.failUnless(isinstance(kCFErrorLocalizedDescriptionKey, unicode)) 80 self.failUnless(isinstance(kCFErrorLocalizedFailureReasonKey, unicode)) 81 self.failUnless(isinstance(kCFErrorLocalizedRecoverySuggestionKey, unicode)) 82 self.failUnless(isinstance(kCFErrorDescriptionKey, unicode)) 83 self.failUnless(isinstance(kCFErrorUnderlyingErrorKey, unicode)) 84 85if __name__ == "__main__": 86 main() 87