1
2from PyObjCTools.TestSupport import *
3from AppKit import *
4
5class TestNSDraggingHelper (NSObject):
6    def draggingFormation(self): return 1
7    def setDraggingFormation(self, v): return 1
8    def animatesToDestination(self): return 1
9    def setAnimatesToDestination_(self, v): return 1
10    def numberOfValidItemsForDrop(self): return 1
11    def setNumberOfValidItemsForDrop_(self, v): return 1
12    def enumerateDraggingItemsWithOptions_forView_classes_searchOptions_usingBlock_(self, a, b, c, d, e): return 1
13    def draggingSession_sourceOperationMaskForDraggingContext_(self, a, b): return 1
14    def draggingSession_willBeginAtPoint_(self, a, b): pass
15    def draggingSession_movedToPoint_(self, a, b): pass
16    def draggingSession_endedAtPoint_operation_(self, a, b, c): pass
17    def ignoreModifierKeysForDraggingSession_(self, a): return 1
18
19
20
21    def draggingSourceOperationMask(self): return 1
22    def draggingLocation(self): return 1
23    def draggedImageLocation(self): return 1
24    def draggingSource(self): return 1
25    def draggingSequenceNumber(self): return 1
26    def slideDraggedImageTo_(self, v): pass
27
28    def draggingEntered_(self, sender): return 1
29    def draggingUpdated_(self, sender): return 1
30    def draggingExited_(self, sender): pass
31    def prepareForDragOperation_(self, sender): return 1
32    def performDragOperation_(self, sender): return 1
33    def concludeDragOperation_(self, sender): pass
34    def draggingEnded_(self, sender): pass
35    def wantsPeriodicDraggingUpdates(self): return 1
36
37    def draggingSourceOperationMaskForLocal_(self, v): return 1
38    def draggedImage_beganAt_(self, v, v2): pass
39    def draggedImage_endedAt_operation_(self, v, v2, v3): pass
40    def draggedImage_movedTo_(self, v, v2): pass
41    def ignoreModifierKeysWhileDragging(self): return 1
42    def draggedImage_endedAt_deposited_(self, i, p, f): pass
43
44class TestNSDragging (TestCase):
45    def testConstants(self):
46        self.assertEqual(NSDragOperationNone, 0)
47        self.assertEqual(NSDragOperationCopy, 1)
48        self.assertEqual(NSDragOperationLink, 2)
49        self.assertEqual(NSDragOperationGeneric, 4)
50        self.assertEqual(NSDragOperationPrivate, 8)
51        self.assertEqual(NSDragOperationAll_Obsolete, 15)
52        self.assertEqual(NSDragOperationMove, 16)
53        self.assertEqual(NSDragOperationDelete, 32)
54        self.assertEqual(NSDragOperationEvery, NSUIntegerMax)
55
56        self.assertEqual(NSDragOperationAll, NSDragOperationAll_Obsolete)
57
58    @min_os_level('10.7')
59    def testConstant10_7(self):
60        self.assertEqual(NSDraggingFormationDefault, 0)
61        self.assertEqual(NSDraggingFormationNone, 1)
62        self.assertEqual(NSDraggingFormationPile, 2)
63        self.assertEqual(NSDraggingFormationList, 3)
64        self.assertEqual(NSDraggingFormationStack, 4)
65
66        self.assertEqual(NSDraggingContextOutsideApplication, 0)
67        self.assertEqual(NSDraggingContextWithinApplication, 1)
68
69        self.assertEqual(NSDraggingItemEnumerationClearNonenumeratedImages, 1<<16)
70
71
72    def testProtocols(self):
73        self.assertResultHasType(TestNSDraggingHelper.draggingSourceOperationMask, objc._C_NSUInteger)
74        self.assertResultHasType(TestNSDraggingHelper.draggingLocation, NSPoint.__typestr__)
75        self.assertResultHasType(TestNSDraggingHelper.draggedImageLocation, NSPoint.__typestr__)
76        self.assertResultHasType(TestNSDraggingHelper.draggingSequenceNumber, objc._C_NSInteger)
77        self.assertArgHasType(TestNSDraggingHelper.slideDraggedImageTo_, 0, NSPoint.__typestr__)
78
79        self.assertResultHasType(TestNSDraggingHelper.draggingEntered_, objc._C_NSUInteger)
80        self.assertResultHasType(TestNSDraggingHelper.draggingUpdated_, objc._C_NSUInteger)
81        self.assertResultIsBOOL(TestNSDraggingHelper.prepareForDragOperation_)
82        self.assertResultIsBOOL(TestNSDraggingHelper.performDragOperation_)
83        self.assertResultIsBOOL(TestNSDraggingHelper.wantsPeriodicDraggingUpdates)
84
85        self.assertResultHasType(TestNSDraggingHelper.draggingSourceOperationMaskForLocal_, objc._C_NSUInteger)
86        self.assertArgIsBOOL(TestNSDraggingHelper.draggingSourceOperationMaskForLocal_, 0)
87        self.assertArgHasType(TestNSDraggingHelper.draggedImage_beganAt_, 1, NSPoint.__typestr__)
88        self.assertArgHasType(TestNSDraggingHelper.draggedImage_endedAt_operation_, 1, NSPoint.__typestr__)
89        self.assertArgHasType(TestNSDraggingHelper.draggedImage_endedAt_operation_, 2, objc._C_NSUInteger)
90        self.assertArgHasType(TestNSDraggingHelper.draggedImage_movedTo_, 1, NSPoint.__typestr__)
91        self.assertResultIsBOOL(TestNSDraggingHelper.ignoreModifierKeysWhileDragging)
92        self.assertArgHasType(TestNSDraggingHelper.draggedImage_endedAt_deposited_, 1, NSPoint.__typestr__)
93        self.assertArgIsBOOL(TestNSDraggingHelper.draggedImage_endedAt_deposited_, 2)
94
95    @min_os_level('10.7')
96    def testProtocols10_7(self):
97        self.assertResultIsBOOL(TestNSDraggingHelper.animatesToDestination)
98        self.assertArgIsBOOL(TestNSDraggingHelper.setAnimatesToDestination_, 0)
99
100        self.assertResultIsBOOL(TestNSDraggingHelper.animatesToDestination)
101        self.assertArgIsBOOL(TestNSDraggingHelper.setAnimatesToDestination_, 0)
102
103        self.assertResultHasType(TestNSDraggingHelper.numberOfValidItemsForDrop, objc._C_NSInteger)
104        self.assertArgHasType(TestNSDraggingHelper.setNumberOfValidItemsForDrop_, 0, objc._C_NSInteger)
105
106
107        self.assertArgHasType(TestNSDraggingHelper.enumerateDraggingItemsWithOptions_forView_classes_searchOptions_usingBlock_, 0, objc._C_NSUInteger)
108        self.assertArgIsBlock(TestNSDraggingHelper.enumerateDraggingItemsWithOptions_forView_classes_searchOptions_usingBlock_, 4, b'v@' + objc._C_NSInteger + b'o^' + objc._C_NSBOOL)
109
110        self.assertArgHasType(TestNSDraggingHelper.draggingSession_willBeginAtPoint_, 1, NSPoint.__typestr__)
111        self.assertArgHasType(TestNSDraggingHelper.draggingSession_movedToPoint_, 1, NSPoint.__typestr__)
112        self.assertArgHasType(TestNSDraggingHelper.draggingSession_endedAtPoint_operation_, 1, NSPoint.__typestr__)
113        self.assertArgHasType(TestNSDraggingHelper.draggingSession_endedAtPoint_operation_, 2, objc._C_NSUInteger)
114
115        self.assertResultIsBOOL(TestNSDraggingHelper.ignoreModifierKeysForDraggingSession_)
116
117if __name__ == "__main__":
118    main()
119