1from PyObjCTools.TestSupport import *
2from AppKit import *
3
4try:
5    unichr
6except NameError:
7    unichr = chr
8
9class TestNSEvent (TestCase):
10    def testConstants(self):
11        self.assertEqual(NSLeftMouseDown, 1)
12        self.assertEqual(NSLeftMouseUp, 2)
13        self.assertEqual(NSRightMouseDown, 3)
14        self.assertEqual(NSRightMouseUp, 4)
15        self.assertEqual(NSMouseMoved, 5)
16        self.assertEqual(NSLeftMouseDragged, 6)
17        self.assertEqual(NSRightMouseDragged, 7)
18        self.assertEqual(NSMouseEntered, 8)
19        self.assertEqual(NSMouseExited, 9)
20        self.assertEqual(NSKeyDown, 10)
21        self.assertEqual(NSKeyUp, 11)
22        self.assertEqual(NSFlagsChanged, 12)
23        self.assertEqual(NSAppKitDefined, 13)
24        self.assertEqual(NSSystemDefined, 14)
25        self.assertEqual(NSApplicationDefined, 15)
26        self.assertEqual(NSPeriodic, 16)
27        self.assertEqual(NSCursorUpdate, 17)
28        self.assertEqual(NSScrollWheel, 22)
29        self.assertEqual(NSTabletPoint, 23)
30        self.assertEqual(NSTabletProximity, 24)
31        self.assertEqual(NSOtherMouseDown, 25)
32        self.assertEqual(NSOtherMouseUp, 26)
33        self.assertEqual(NSOtherMouseDragged, 27)
34        self.assertEqual(NSLeftMouseDownMask, 1 << NSLeftMouseDown)
35        self.assertEqual(NSLeftMouseUpMask, 1 << NSLeftMouseUp)
36        self.assertEqual(NSRightMouseDownMask, 1 << NSRightMouseDown)
37        self.assertEqual(NSRightMouseUpMask, 1 << NSRightMouseUp)
38        self.assertEqual(NSMouseMovedMask, 1 << NSMouseMoved)
39        self.assertEqual(NSLeftMouseDraggedMask, 1 << NSLeftMouseDragged)
40        self.assertEqual(NSRightMouseDraggedMask, 1 << NSRightMouseDragged)
41        self.assertEqual(NSMouseEnteredMask, 1 << NSMouseEntered)
42        self.assertEqual(NSMouseExitedMask, 1 << NSMouseExited)
43        self.assertEqual(NSKeyDownMask, 1 << NSKeyDown)
44        self.assertEqual(NSKeyUpMask, 1 << NSKeyUp)
45        self.assertEqual(NSFlagsChangedMask, 1 << NSFlagsChanged)
46        self.assertEqual(NSAppKitDefinedMask, 1 << NSAppKitDefined)
47        self.assertEqual(NSSystemDefinedMask, 1 << NSSystemDefined)
48        self.assertEqual(NSApplicationDefinedMask, 1 << NSApplicationDefined)
49        self.assertEqual(NSPeriodicMask, 1 << NSPeriodic)
50        self.assertEqual(NSCursorUpdateMask, 1 << NSCursorUpdate)
51        self.assertEqual(NSScrollWheelMask, 1 << NSScrollWheel)
52        self.assertEqual(NSTabletPointMask, 1 << NSTabletPoint)
53        self.assertEqual(NSTabletProximityMask, 1 << NSTabletProximity)
54        self.assertEqual(NSOtherMouseDownMask, 1 << NSOtherMouseDown)
55        self.assertEqual(NSOtherMouseUpMask, 1 << NSOtherMouseUp)
56        self.assertEqual(NSOtherMouseDraggedMask, 1 << NSOtherMouseDragged)
57        self.assertEqual(NSAnyEventMask, NSUIntegerMax)
58
59        self.assertEqual(NSAlphaShiftKeyMask, 1 << 16)
60        self.assertEqual(NSShiftKeyMask, 1 << 17)
61        self.assertEqual(NSControlKeyMask, 1 << 18)
62        self.assertEqual(NSAlternateKeyMask, 1 << 19)
63        self.assertEqual(NSCommandKeyMask, 1 << 20)
64        self.assertEqual(NSNumericPadKeyMask, 1 << 21)
65        self.assertEqual(NSHelpKeyMask, 1 << 22)
66        self.assertEqual(NSFunctionKeyMask, 1 << 23)
67        self.assertEqual(NSDeviceIndependentModifierFlagsMask, 0xffff0000)
68        self.assertEqual(NSUnknownPointingDevice, 0)
69        self.assertEqual(NSPenPointingDevice, 1)
70        self.assertEqual(NSCursorPointingDevice, 2)
71        self.assertEqual(NSEraserPointingDevice, 3)
72        self.assertEqual(NSPenTipMask, 1)
73        self.assertEqual(NSPenLowerSideMask, 2)
74        self.assertEqual(NSPenUpperSideMask, 4)
75
76        self.assertEqual(NSWindowExposedEventType, 0)
77        self.assertEqual(NSApplicationActivatedEventType, 1)
78        self.assertEqual(NSApplicationDeactivatedEventType, 2)
79        self.assertEqual(NSWindowMovedEventType, 4)
80        self.assertEqual(NSScreenChangedEventType, 8)
81        self.assertEqual(NSAWTEventType, 16)
82        self.assertEqual(NSPowerOffEventType, 1)
83        self.assertEqual(NSMouseEventSubtype, 0)
84        self.assertEqual(NSTabletPointEventSubtype, 1)
85        self.assertEqual(NSTabletProximityEventSubtype, 2)
86
87        self.assertEqual(NSUpArrowFunctionKey, unichr(0xF700))
88        self.assertEqual(NSDownArrowFunctionKey, unichr(0xF701))
89        self.assertEqual(NSLeftArrowFunctionKey, unichr(0xF702))
90        self.assertEqual(NSRightArrowFunctionKey, unichr(0xF703))
91        self.assertEqual(NSF1FunctionKey, unichr(0xF704))
92        self.assertEqual(NSF2FunctionKey, unichr(0xF705))
93        self.assertEqual(NSF3FunctionKey, unichr(0xF706))
94        self.assertEqual(NSF4FunctionKey, unichr(0xF707))
95        self.assertEqual(NSF5FunctionKey, unichr(0xF708))
96        self.assertEqual(NSF6FunctionKey, unichr(0xF709))
97        self.assertEqual(NSF7FunctionKey, unichr(0xF70A))
98        self.assertEqual(NSF8FunctionKey, unichr(0xF70B))
99        self.assertEqual(NSF9FunctionKey, unichr(0xF70C))
100        self.assertEqual(NSF10FunctionKey, unichr(0xF70D))
101        self.assertEqual(NSF11FunctionKey, unichr(0xF70E))
102        self.assertEqual(NSF12FunctionKey, unichr(0xF70F))
103        self.assertEqual(NSF13FunctionKey, unichr(0xF710))
104        self.assertEqual(NSF14FunctionKey, unichr(0xF711))
105        self.assertEqual(NSF15FunctionKey, unichr(0xF712))
106        self.assertEqual(NSF16FunctionKey, unichr(0xF713))
107        self.assertEqual(NSF17FunctionKey, unichr(0xF714))
108        self.assertEqual(NSF18FunctionKey, unichr(0xF715))
109        self.assertEqual(NSF19FunctionKey, unichr(0xF716))
110        self.assertEqual(NSF20FunctionKey, unichr(0xF717))
111        self.assertEqual(NSF21FunctionKey, unichr(0xF718))
112        self.assertEqual(NSF22FunctionKey, unichr(0xF719))
113        self.assertEqual(NSF23FunctionKey, unichr(0xF71A))
114        self.assertEqual(NSF24FunctionKey, unichr(0xF71B))
115        self.assertEqual(NSF25FunctionKey, unichr(0xF71C))
116        self.assertEqual(NSF26FunctionKey, unichr(0xF71D))
117        self.assertEqual(NSF27FunctionKey, unichr(0xF71E))
118        self.assertEqual(NSF28FunctionKey, unichr(0xF71F))
119        self.assertEqual(NSF29FunctionKey, unichr(0xF720))
120        self.assertEqual(NSF30FunctionKey, unichr(0xF721))
121        self.assertEqual(NSF31FunctionKey, unichr(0xF722))
122        self.assertEqual(NSF32FunctionKey, unichr(0xF723))
123        self.assertEqual(NSF33FunctionKey, unichr(0xF724))
124        self.assertEqual(NSF34FunctionKey, unichr(0xF725))
125        self.assertEqual(NSF35FunctionKey, unichr(0xF726))
126        self.assertEqual(NSInsertFunctionKey, unichr(0xF727))
127        self.assertEqual(NSDeleteFunctionKey, unichr(0xF728))
128        self.assertEqual(NSHomeFunctionKey, unichr(0xF729))
129        self.assertEqual(NSBeginFunctionKey, unichr(0xF72A))
130        self.assertEqual(NSEndFunctionKey, unichr(0xF72B))
131        self.assertEqual(NSPageUpFunctionKey, unichr(0xF72C))
132        self.assertEqual(NSPageDownFunctionKey, unichr(0xF72D))
133        self.assertEqual(NSPrintScreenFunctionKey, unichr(0xF72E))
134        self.assertEqual(NSScrollLockFunctionKey, unichr(0xF72F))
135        self.assertEqual(NSPauseFunctionKey, unichr(0xF730))
136        self.assertEqual(NSSysReqFunctionKey, unichr(0xF731))
137        self.assertEqual(NSBreakFunctionKey, unichr(0xF732))
138        self.assertEqual(NSResetFunctionKey, unichr(0xF733))
139        self.assertEqual(NSStopFunctionKey, unichr(0xF734))
140        self.assertEqual(NSMenuFunctionKey, unichr(0xF735))
141        self.assertEqual(NSUserFunctionKey, unichr(0xF736))
142        self.assertEqual(NSSystemFunctionKey, unichr(0xF737))
143        self.assertEqual(NSPrintFunctionKey, unichr(0xF738))
144        self.assertEqual(NSClearLineFunctionKey, unichr(0xF739))
145        self.assertEqual(NSClearDisplayFunctionKey, unichr(0xF73A))
146        self.assertEqual(NSInsertLineFunctionKey, unichr(0xF73B))
147        self.assertEqual(NSDeleteLineFunctionKey, unichr(0xF73C))
148        self.assertEqual(NSInsertCharFunctionKey, unichr(0xF73D))
149        self.assertEqual(NSDeleteCharFunctionKey, unichr(0xF73E))
150        self.assertEqual(NSPrevFunctionKey, unichr(0xF73F))
151        self.assertEqual(NSNextFunctionKey, unichr(0xF740))
152        self.assertEqual(NSSelectFunctionKey, unichr(0xF741))
153        self.assertEqual(NSExecuteFunctionKey, unichr(0xF742))
154        self.assertEqual(NSUndoFunctionKey, unichr(0xF743))
155        self.assertEqual(NSRedoFunctionKey, unichr(0xF744))
156        self.assertEqual(NSFindFunctionKey, unichr(0xF745))
157        self.assertEqual(NSHelpFunctionKey, unichr(0xF746))
158        self.assertEqual(NSModeSwitchFunctionKey, unichr(0xF747))
159
160    @min_os_level('10.5')
161    def testConstants10_5(self):
162        self.assertEqual(NSEventTypeGesture, 29)
163        self.assertEqual(NSEventTypeMagnify, 30)
164        self.assertEqual(NSEventTypeSwipe, 31)
165        self.assertEqual(NSEventTypeRotate, 18)
166        self.assertEqual(NSEventTypeBeginGesture, 19)
167        self.assertEqual(NSEventTypeEndGesture, 20)
168
169        self.assertEqual(NSEventMaskGesture, 1 << 29)
170        self.assertEqual(NSEventMaskMagnify, 1 << 30)
171        self.assertEqual(NSEventMaskSwipe, 1 << 31)
172        self.assertEqual(NSEventMaskRotate, 1 << 18)
173        self.assertEqual(NSEventMaskBeginGesture, 1 << 19)
174        self.assertEqual(NSEventMaskEndGesture, 1 << 20)
175
176    @min_os_level('10.7')
177    def testConstants10_7(self):
178        self.assertEqual(NSEventPhaseNone, 0)
179        self.assertEqual(NSEventPhaseBegan, 1)
180        self.assertEqual(NSEventPhaseStationary, 2)
181        self.assertEqual(NSEventPhaseChanged, 4)
182        self.assertEqual(NSEventPhaseEnded, 8)
183        self.assertEqual(NSEventPhaseCancelled, 16)
184        self.assertEqual(NSEventPhaseMayBegin, 32)
185
186        self.assertEqual(NSEventGestureAxisNone, 0)
187        self.assertEqual(NSEventGestureAxisHorizontal, 1)
188        self.assertEqual(NSEventGestureAxisVertical, 2)
189
190        self.assertEqual(NSEventSwipeTrackingLockDirection, 1)
191        self.assertEqual(NSEventSwipeTrackingClampGestureAmount, 2)
192
193    @min_os_level('10.8')
194    def testConstants10_8(self):
195        self.assertEqual(NSEventTypeSmartMagnify, 32)
196        self.assertEqual(NSEventTypeQuickLook, 33)
197        self.assertEqual(NSEventMaskSmartMagnify, 1<<32)
198
199    def testFunctions(self):
200        v = NSEventMaskFromType(NSLeftMouseDown)
201        self.assertEqual(v, NSLeftMouseDownMask)
202
203        v = NSEventMaskFromType(NSOtherMouseDown)
204        self.assertEqual(v, NSOtherMouseDownMask)
205
206    @min_os_level('10.5')
207    def testMethods10_5(self):
208        self.assertResultIsBOOL(NSEvent.isMouseCoalescingEnabled)
209        self.assertArgIsBOOL(NSEvent.setMouseCoalescingEnabled_, 0)
210
211    def testMethods(self):
212        self.assertResultIsBOOL(NSEvent.isARepeat)
213        self.assertResultIsBOOL(NSEvent.isEnteringProximity)
214
215        self.assertArgIsBOOL(NSEvent.keyEventWithType_location_modifierFlags_timestamp_windowNumber_context_characters_charactersIgnoringModifiers_isARepeat_keyCode_, 8)
216        self.assertArgHasType(NSEvent.enterExitEventWithType_location_modifierFlags_timestamp_windowNumber_context_eventNumber_trackingNumber_userData_, 8, b'^v')
217
218
219        self.assertResultHasType(NSEvent.userData, b'^v')
220
221    @min_os_level('10.6')
222    def testMethods10_6(self):
223        self.assertArgIsBlock(NSEvent.addGlobalMonitorForEventsMatchingMask_handler_, 1, b'v@')
224        self.assertArgIsBlock(NSEvent.addLocalMonitorForEventsMatchingMask_handler_, 1, b'v@')
225
226    @min_os_level('10.7')
227    def testMethods10_7(self):
228        self.assertResultIsBOOL(NSEvent.hasPreciseScrollingDeltas)
229        self.assertResultIsBOOL(NSEvent.isDirectionInvertedFromDevice)
230        self.assertResultIsBOOL(NSEvent.isSwipeTrackingFromScrollEventsEnabled)
231
232        self.assertArgIsBlock(NSEvent.trackSwipeEventWithOptions_dampenAmountThresholdMin_max_usingHandler_, 3, b'v' + objc._C_CGFloat + objc._C_NSUInteger + objc._C_NSBOOL + b'o^' + objc._C_NSBOOL)
233
234if __name__ == "__main__":
235    main()
236