1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3 4class TestUserNotification (TestCase): 5 def testTypes(self): 6 self.failUnlessIsCFType(CFUserNotificationRef) 7 8 def testTypeID(self): 9 id = CFUserNotificationGetTypeID() 10 self.failUnless( isinstance(id, (int, long)) ) 11 12 def testCreation(self): 13 rl = CFRunLoopGetCurrent() 14 15 infoDict = { 16 kCFUserNotificationAlertHeaderKey: u"Alert Header", 17 kCFUserNotificationProgressIndicatorValueKey: True, 18 kCFUserNotificationDefaultButtonTitleKey: "Cancel" 19 } 20 21 self.failUnlessArgIsOut(CFUserNotificationCreate, 3) 22 ref, error = CFUserNotificationCreate(None, 23 1.0, 0, None, infoDict) 24 self.failUnless( error == 0 ) 25 self.failUnless( isinstance(ref, CFUserNotificationRef) ) 26 27 values = [] 28 @objc.callbackFor(CFUserNotificationCreateRunLoopSource) 29 def callout(notification, flags): 30 values.append((notification, flags)) 31 32 self.failUnlessArgIsFunction(CFUserNotificationCreateRunLoopSource, 2, 'v^{__CFUserNotification=}' + objc._C_NSInteger, True) 33 rls = CFUserNotificationCreateRunLoopSource(None, ref, callout, 1) 34 self.failUnless(isinstance(rls, CFRunLoopSourceRef)) 35 36 CFRunLoopAddSource(rl, rls, kCFRunLoopDefaultMode) 37 CFRunLoopRunInMode(kCFRunLoopDefaultMode, 2.0, True) 38 39 CFUserNotificationCancel(ref) 40 CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0, True) 41 42 self.failUnlessEqual(len(values), 1) 43 self.failUnless(values[0][0] is ref) 44 self.failUnlessIsInstance(values[0][1], (int, long)) 45 46 self.failUnlessArgIsOut(CFUserNotificationReceiveResponse, 2) 47 error, flags = CFUserNotificationReceiveResponse(ref, 1.0, None) 48 self.failUnless(isinstance(error, (int, long))) 49 self.failUnless(isinstance(flags, (int, long))) 50 51 v = CFUserNotificationGetResponseDictionary(ref) 52 self.failUnless(v is None or isinstance(v, CFDictionaryRef)) 53 54 error = CFUserNotificationUpdate(ref, 2.0, 0, infoDict) 55 self.failUnless(error == 0) 56 57 error = CFUserNotificationCancel(ref) 58 self.assertEquals(error, 0) 59 60 v = CFUserNotificationGetResponseValue(ref, kCFUserNotificationTextFieldValuesKey, 0) 61 self.failUnless(v is None or isinstance(v, unicode)) 62 63 64 65 def testAlert(self): 66 err, flags = CFUserNotificationDisplayAlert(0.1, 0, None, None, None, "Header", "Message", "Cancel", None, None, None) 67 self.failUnless(err == 0) 68 self.failUnless(isinstance(flags, (int, long))) 69 70 err, flags = CFUserNotificationDisplayAlert(0.1, 0, None, None, None, "Header", "Message", "Cancel", "OK", "Rest", None) 71 self.failUnless(err == 0) 72 self.failUnless(isinstance(flags, (int, long))) 73 74 def testNotice(self): 75 err = CFUserNotificationDisplayNotice(0.1, 0, None, None, None, "Header", "Message", "Cancel") 76 self.failUnless(err == 0) 77 78 79 80 81 82 def testInlines(self): 83 flag = CFUserNotificationCheckBoxChecked(2) 84 self.failUnless( flag == 1 << 10 ) 85 86 flag = CFUserNotificationSecureTextField(2) 87 self.failUnless( flag == 1 << 18 ) 88 89 flag = CFUserNotificationPopUpSelection(2) 90 self.failUnless( flag == 2 << 24 ) 91 92 93 def testConstants(self): 94 self.failUnless( kCFUserNotificationStopAlertLevel == 0) 95 self.failUnless( kCFUserNotificationNoteAlertLevel == 1) 96 self.failUnless( kCFUserNotificationCautionAlertLevel == 2) 97 self.failUnless( kCFUserNotificationPlainAlertLevel == 3) 98 99 self.failUnless( kCFUserNotificationDefaultResponse == 0) 100 self.failUnless( kCFUserNotificationAlternateResponse == 1) 101 self.failUnless( kCFUserNotificationOtherResponse == 2) 102 self.failUnless( kCFUserNotificationCancelResponse == 3) 103 104 self.failUnless( kCFUserNotificationNoDefaultButtonFlag == (1 << 5)) 105 self.failUnless( kCFUserNotificationUseRadioButtonsFlag == (1 << 6)) 106 107 self.failUnless( isinstance(kCFUserNotificationIconURLKey, unicode) ) 108 self.failUnless( isinstance(kCFUserNotificationSoundURLKey, unicode) ) 109 self.failUnless( isinstance(kCFUserNotificationLocalizationURLKey, unicode) ) 110 self.failUnless( isinstance(kCFUserNotificationAlertHeaderKey, unicode) ) 111 self.failUnless( isinstance(kCFUserNotificationAlertMessageKey, unicode) ) 112 self.failUnless( isinstance(kCFUserNotificationDefaultButtonTitleKey, unicode) ) 113 self.failUnless( isinstance(kCFUserNotificationAlternateButtonTitleKey, unicode) ) 114 self.failUnless( isinstance(kCFUserNotificationOtherButtonTitleKey, unicode) ) 115 self.failUnless( isinstance(kCFUserNotificationProgressIndicatorValueKey, unicode) ) 116 self.failUnless( isinstance(kCFUserNotificationPopUpTitlesKey, unicode) ) 117 self.failUnless( isinstance(kCFUserNotificationTextFieldTitlesKey, unicode) ) 118 self.failUnless( isinstance(kCFUserNotificationCheckBoxTitlesKey, unicode) ) 119 self.failUnless( isinstance(kCFUserNotificationTextFieldValuesKey, unicode) ) 120 self.failUnless( isinstance(kCFUserNotificationPopUpSelectionKey, unicode) ) 121 122 123if __name__ == "__main__": 124 main() 125