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