1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4 5try: 6 long 7except NameError: 8 long = int 9 10class TestCGEvent (TestCase): 11 def testTypes(self): 12 self.assertIsCFType(CGEventRef) 13 self.assertIsCFType(CGEventSourceRef) 14 15 def testEventFunctions(self): 16 evt = CGEventCreateMouseEvent(None, kCGEventLeftMouseDown, (80, 90), kCGMouseButtonLeft) 17 self.assertIsInstance(evt, CGEventRef) 18 19 self.assertResultIsCFRetained(CGEventCreateSourceFromEvent) 20 v = CGEventCreateSourceFromEvent(evt) 21 self.assertIsInstance(v, CGEventSourceRef) 22 23 src = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState) 24 self.assertIsInstance(src, CGEventSourceRef) 25 26 CGEventSetSource(evt, src) 27 28 t = CGEventGetType(evt) 29 self.assertIsInstance(t, (int, long)) 30 self.assertEqual(t, kCGEventLeftMouseDown) 31 32 CGEventSetType(evt, kCGEventOtherMouseUp) 33 t = CGEventGetType(evt) 34 self.assertEqual(t, kCGEventOtherMouseUp) 35 36 v = CGEventGetTimestamp(evt) 37 self.assertIsInstance(v, (int, long)) 38 39 CGEventSetTimestamp(evt, 99) 40 v = CGEventGetTimestamp(evt) 41 self.assertEqual(v, 99) 42 43 v = CGEventGetLocation(evt) 44 self.assertIsInstance(v, CGPoint) 45 46 CGEventSetLocation(evt, (99, 99)) 47 v = CGEventGetLocation(evt) 48 self.assertEqual(v, (99, 99)) 49 50 v = CGEventGetFlags(evt) 51 self.assertIsInstance(v, (int, long)) 52 53 CGEventSetFlags(evt, 99) 54 v = CGEventGetFlags(evt) 55 self.assertEqual(v, 99) 56 57 v = CGEventGetIntegerValueField(evt, kCGMouseEventNumber) 58 self.assertIsInstance(v, (int, long)) 59 60 CGEventSetIntegerValueField(evt, kCGMouseEventNumber, 99) 61 v = CGEventGetIntegerValueField(evt, kCGMouseEventNumber) 62 self.assertEqual(v, 99) 63 64 v = CGEventGetDoubleValueField(evt, kCGMouseEventPressure) 65 self.assertIsInstance(v, float) 66 67 CGEventSetDoubleValueField(evt, kCGMouseEventPressure, 42.5) 68 69 self.assertArgHasType(CGEventTapEnable, 0, b'^{__CFMachPort=}') 70 self.assertArgHasType(CGEventTapEnable, 1, objc._C_BOOL) 71 72 self.assertResultHasType(CGEventTapIsEnabled, objc._C_BOOL) 73 self.assertArgHasType(CGEventTapIsEnabled, 0, b'^{__CFMachPort=}') 74 75 self.assertArgHasType(CGEventTapPostEvent, 0, b'^{__CGEventTapProxy=}') 76 self.assertArgHasType(CGEventTapPostEvent, 1, b'^{__CGEvent=}') 77 78 self.assertResultHasType(CGGetEventTapList, objc._C_INT) 79 self.assertArgHasType(CGGetEventTapList, 0, objc._C_UINT) 80 self.assertArgHasType(CGGetEventTapList, 1, b'o^' + CGEventTapInformation.__typestr__) 81 self.assertArgSizeInArg(CGGetEventTapList, 1, (0, 2)) 82 self.assertArgHasType(CGGetEventTapList, 2, b'o^' + objc._C_UINT) 83 84 self.assertResultHasType(CGEventPost, objc._C_VOID) 85 self.assertArgHasType(CGEventPost, 0, objc._C_UINT) 86 self.assertArgHasType(CGEventPost, 1, b'^{__CGEvent=}') 87 88 self.assertResultHasType(CGEventPostToPSN, objc._C_VOID) 89 self.assertArgHasType(CGEventPostToPSN, 0, b'n^{ProcessSerialNumber=II}') 90 self.assertArgHasType(CGEventPostToPSN, 1, b'^{__CGEvent=}') 91 92 93 @expectedFailure 94 def testMissing(self): 95 self.fail("CGEventTapCreateForPSN") 96 97 98 def testFunctions(self): 99 self.assertIsInstance(CGEventGetTypeID(), (int, long)) 100 101 self.assertResultIsCFRetained(CGEventCreate) 102 evt = CGEventCreate(None) 103 self.assertIsInstance(evt, CGEventRef) 104 105 self.assertResultIsCFRetained(CGEventCreateData) 106 dta = CGEventCreateData(None, evt) 107 self.assertIsInstance(dta, CFDataRef) 108 109 self.assertResultIsCFRetained(CGEventCreateFromData) 110 v = CGEventCreateFromData(None, dta) 111 self.assertIsInstance(v, CGEventRef) 112 113 self.assertResultIsCFRetained(CGEventCreateMouseEvent) 114 evt = CGEventCreateMouseEvent(None, kCGEventOtherMouseDown, (0, 0), 2) 115 self.assertIsInstance(evt, CGEventRef) 116 117 self.assertResultIsCFRetained(CGEventCreateKeyboardEvent) 118 self.assertArgHasType(CGEventCreateKeyboardEvent, 2, objc._C_BOOL) 119 evt = CGEventCreateKeyboardEvent(None, 45, False) 120 self.assertIsInstance(evt, CGEventRef) 121 122 123 v = CGEventCreateCopy(evt) 124 self.assertIsInstance(v, CGEventRef) 125 126 @min_os_level('10.5') 127 def testFunctions10_5(self): 128 self.assertResultIsCFRetained(CGEventCreateScrollWheelEvent) 129 evt = CGEventCreateScrollWheelEvent(None, kCGScrollEventUnitPixel, 2, 99, 44) 130 self.assertIsInstance(evt, CGEventRef) 131 self.assertRaises(ValueError, CGEventCreateScrollWheelEvent, kCGScrollEventUnitPixel, 40, 2, 99) 132 self.assertRaises(ValueError, CGEventCreateScrollWheelEvent, kCGScrollEventUnitPixel, 40, 2, 99, 100, 101) 133 134 v = CGEventGetUnflippedLocation(evt) 135 self.assertIsInstance(v, CGPoint) 136 137if __name__ == "__main__": 138 main() 139