1
2from PyObjCTools.TestSupport import *
3from AppKit import *
4
5try:
6    unicode
7except NameError:
8    unicode = str
9
10class TestNSTableViewHelper (NSObject):
11    def tableView_viewForTableColumn_row_(self, a, b, c): pass
12    def tableView_rowViewForRow_(self, a, b): pass
13    def tableView_didAddRowView_forRow_(self, a, b, c): pass
14    def tableView_didRemoveRowView_forRow_(self, a, b, c): pass
15    def tableView_pastboardWriterForRow_(self, a, b): pass
16    def tableView_draggingSession_willBeginAtPoint_forRowIndexes_(self, a, b, c, d): pass
17    def tableView_draggingSession_endedAtPoint_operation_(self, a, b, c, d): pass
18
19    def numberOfRowsInTableView_(self, tv): return 1
20    def tableView_objectValueForTableColumn_row_(self, tv, c, r): return 1
21    def tableView_setObjectValue_forTableColumn_row_(self, o, tv, c, r): pass
22    def tableView_writeRowsWithIndexes_toPasteboard_(self, tv, r, p): return 1
23    def tableView_validateDrop_proposedRow_proposedDropOperation_(self, tv, dr, r, o): return 1
24    def tableView_acceptDrop_row_dropOperation_(self, tv, dr, r, o): return 1
25    def tableView_writeRows_toPasteboard_(self, tv, r, p): return 1
26
27    def tableView_willDisplayCell_forTableColumn_row_(self, tv, c, tc, r): return 1
28    def tableView_shouldEditTableColumn_row_(self, tv, tc, r): return 1
29    def selectionShouldChangeInTableView_(self, tv): return 1
30    def tableView_shouldSelectTableColumn_(self, tv, tc): return 1
31    def tableView_toolTipForCell_rect_tableColumn_row_mouseLocation_(self, tv, c, re, tc, r, l): return 1
32    def tableView_heightOfRow_(self, tv, r): return 1
33    def tableView_typeSelectStringForTableColumn_row_(self, tv, tc, r): return 1
34    def tableView_nextTypeSelectMatchFromRow_toRow_forString_(self, tv, r1, r2, s): return 1
35    def tableView_shouldTypeSelectForEvent_withCurrentSearchString_(self, tv, e, s): return 1
36    def tableView_shouldShowCellExpansionForTableColumn_row_(self, tv, tc, r): return 1
37    def tableView_shouldTrackCell_forTableColumn_row_(self, tv, c, tc, r): return 1
38    def tableView_dataCellForTableColumn_row_(self, tv, tc, r): return 1
39    def tableView_isGroupRow_(self, tv, r): return 1
40
41    def tableView_sizeToFitWidthOfColumn_(self, tv, c): return 1
42    def tableView_shouldReorderColumn_toColumn_(self, tv, c1, c2): return 1
43
44
45
46
47
48class TestNSTableView (TestCase):
49    def testConstants(self):
50        self.assertEqual(NSTableViewDropOn, 0)
51        self.assertEqual(NSTableViewDropAbove, 1)
52
53        self.assertEqual(NSTableViewNoColumnAutoresizing, 0)
54        self.assertEqual(NSTableViewUniformColumnAutoresizingStyle, 1)
55        self.assertEqual(NSTableViewSequentialColumnAutoresizingStyle, 2)
56        self.assertEqual(NSTableViewReverseSequentialColumnAutoresizingStyle, 3)
57        self.assertEqual(NSTableViewLastColumnOnlyAutoresizingStyle, 4)
58        self.assertEqual(NSTableViewFirstColumnOnlyAutoresizingStyle, 5)
59
60        self.assertEqual(NSTableViewGridNone, 0)
61        self.assertEqual(NSTableViewSolidVerticalGridLineMask, 1 << 0)
62        self.assertEqual(NSTableViewSolidHorizontalGridLineMask, 1 << 1)
63
64        self.assertEqual(NSTableViewSelectionHighlightStyleRegular, 0)
65        self.assertEqual(NSTableViewSelectionHighlightStyleSourceList, 1)
66
67        self.assertIsInstance(NSTableViewSelectionDidChangeNotification, unicode)
68        self.assertIsInstance(NSTableViewColumnDidMoveNotification, unicode)
69        self.assertIsInstance(NSTableViewColumnDidResizeNotification, unicode)
70        self.assertIsInstance(NSTableViewSelectionIsChangingNotification, unicode)
71
72    @min_os_level('10.6')
73    def testConstants10_6(self):
74        self.assertEqual(NSTableViewSelectionHighlightStyleNone, -1)
75        self.assertEqual(NSTableViewDraggingDestinationFeedbackStyleNone, -1)
76        self.assertEqual(NSTableViewDraggingDestinationFeedbackStyleRegular, 0)
77        self.assertEqual(NSTableViewDraggingDestinationFeedbackStyleSourceList, 1)
78
79    @min_os_level('10.7')
80    def testConstants10_7(self):
81        self.assertEqual(NSTableViewDashedHorizontalGridLineMask, 1<<3)
82        self.assertEqual(NSTableViewRowSizeStyleDefault, -1)
83        self.assertEqual(NSTableViewRowSizeStyleCustom, 0)
84        self.assertEqual(NSTableViewRowSizeStyleSmall, 1)
85        self.assertEqual(NSTableViewRowSizeStyleMedium, 2)
86        self.assertEqual(NSTableViewRowSizeStyleLarge, 3)
87
88        self.assertEqual(NSTableViewAnimationEffectNone, 0)
89        self.assertEqual(NSTableViewAnimationEffectFade, 1)
90        self.assertEqual(NSTableViewAnimationEffectGap, 2)
91        self.assertEqual(NSTableViewAnimationSlideUp, 0x10)
92        self.assertEqual(NSTableViewAnimationSlideDown, 0x20)
93        self.assertEqual(NSTableViewAnimationSlideLeft, 0x30)
94        self.assertEqual(NSTableViewAnimationSlideRight, 0x40)
95
96        self.assertIsInstance(NSTableViewRowViewKey, unicode)
97
98        self.assertEqual(NSTableViewDashedHorizontalGridLineMask, 1<<3)
99
100    def testMethods(self):
101        self.assertArgIsBOOL(NSTableView.setAllowsColumnReordering_, 0)
102        self.assertResultIsBOOL(NSTableView.allowsColumnReordering)
103        self.assertArgIsBOOL(NSTableView.setAllowsColumnResizing_, 0)
104        self.assertResultIsBOOL(NSTableView.allowsColumnResizing)
105        self.assertArgIsBOOL(NSTableView.setUsesAlternatingRowBackgroundColors_, 0)
106        self.assertResultIsBOOL(NSTableView.usesAlternatingRowBackgroundColors)
107        self.assertArgIsBOOL(NSTableView.setVerticalMotionCanBeginDrag_, 0)
108        self.assertResultIsBOOL(NSTableView.verticalMotionCanBeginDrag)
109        self.assertResultIsBOOL(NSTableView.canDragRowsWithIndexes_atPoint_)
110        self.assertArgIsInOut(NSTableView.dragImageForRowsWithIndexes_tableColumns_event_offset_, 3)
111        self.assertArgIsBOOL(NSTableView.setDraggingSourceOperationMask_forLocal_, 1)
112        self.assertResultIsBOOL(NSTableView.verticalMotionCanBeginDrag)
113        self.assertArgIsBOOL(NSTableView.setAllowsMultipleSelection_, 0)
114        self.assertResultIsBOOL(NSTableView.allowsMultipleSelection)
115        self.assertArgIsBOOL(NSTableView.setAllowsEmptySelection_, 0)
116        self.assertResultIsBOOL(NSTableView.allowsEmptySelection)
117        self.assertArgIsBOOL(NSTableView.setAllowsColumnSelection_, 0)
118        self.assertResultIsBOOL(NSTableView.allowsColumnSelection)
119        self.assertArgIsBOOL(NSTableView.selectColumnIndexes_byExtendingSelection_, 1)
120        self.assertArgIsBOOL(NSTableView.selectRowIndexes_byExtendingSelection_, 1)
121        self.assertResultIsBOOL(NSTableView.isColumnSelected_)
122        self.assertResultIsBOOL(NSTableView.isRowSelected_)
123        self.assertResultIsBOOL(NSTableView.textShouldBeginEditing_)
124        self.assertResultIsBOOL(NSTableView.textShouldEndEditing_)
125        self.assertArgIsBOOL(NSTableView.setAutosaveTableColumns_, 0)
126        self.assertResultIsBOOL(NSTableView.autosaveTableColumns)
127        self.assertArgIsBOOL(NSTableView.editColumn_row_withEvent_select_, 3)
128
129        self.assertArgHasType(NSTableView.drawBackgroundInClipRect_, 0, NSRect.__typestr__)
130
131
132
133        self.assertArgIsBOOL(NSTableView.setDrawsGrid_, 0)
134        self.assertResultIsBOOL(NSTableView.drawsGrid)
135        self.assertArgIsBOOL(NSTableView.selectColumn_byExtendingSelection_, 1)
136        self.assertArgIsBOOL(NSTableView.selectRow_byExtendingSelection_, 1)
137        self.assertArgIsInOut(NSTableView.dragImageForRows_event_dragImageOffset_, 2)
138        self.assertArgIsBOOL(NSTableView.setAutoresizesAllColumnsToFit_, 0)
139        self.assertResultIsBOOL(NSTableView.autoresizesAllColumnsToFit)
140
141    @min_os_level('10.5')
142    def testMethods10_5(self):
143        self.assertArgIsBOOL(NSTableView.setAllowsTypeSelect_, 0)
144        self.assertResultIsBOOL(NSTableView.allowsTypeSelect)
145
146        self.assertArgHasType(NSTableView.columnIndexesInRect_, 0, NSRect.__typestr__)
147
148    @min_os_level('10.6')
149    def testMethods10_6(self):
150        self.assertResultIsBOOL(NSTableView.shouldFocusCell_atColumn_row_)
151
152    @min_os_level('10.7')
153    def testMethods10_7(self):
154        self.assertArgIsBOOL(NSTableView.viewAtColumn_row_makeIfNecessary_, 2)
155        self.assertArgIsBOOL(NSTableView.rowViewAtRow_makeIfNecessary_, 1)
156
157        self.assertArgIsBlock(NSTableView.enumerateAvailableRowViewsUsingBlock_, 0, b'v@' + objc._C_NSInteger)
158
159        self.assertResultIsBOOL(NSTableView.floatsGroupRows)
160        self.assertArgIsBOOL(NSTableView.setFloatsGroupRows_, 0)
161
162    def testProtocols(self):
163        self.assertResultHasType(TestNSTableViewHelper.numberOfRowsInTableView_, objc._C_NSInteger)
164        self.assertArgHasType(TestNSTableViewHelper.tableView_objectValueForTableColumn_row_, 2, objc._C_NSInteger)
165        self.assertArgHasType(TestNSTableViewHelper.tableView_setObjectValue_forTableColumn_row_, 3, objc._C_NSInteger)
166        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_writeRowsWithIndexes_toPasteboard_)
167        self.assertResultHasType(TestNSTableViewHelper.tableView_validateDrop_proposedRow_proposedDropOperation_, objc._C_NSUInteger)
168        self.assertArgHasType(TestNSTableViewHelper.tableView_validateDrop_proposedRow_proposedDropOperation_, 2, objc._C_NSInteger)
169        self.assertArgHasType(TestNSTableViewHelper.tableView_validateDrop_proposedRow_proposedDropOperation_, 3, objc._C_NSUInteger)
170        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_acceptDrop_row_dropOperation_)
171        self.assertArgHasType(TestNSTableViewHelper.tableView_acceptDrop_row_dropOperation_, 2, objc._C_NSInteger)
172        self.assertArgHasType(TestNSTableViewHelper.tableView_acceptDrop_row_dropOperation_, 3, objc._C_NSUInteger)
173        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_writeRows_toPasteboard_)
174
175
176        self.assertArgHasType(TestNSTableViewHelper.tableView_willDisplayCell_forTableColumn_row_, 3, objc._C_NSInteger)
177        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_shouldEditTableColumn_row_)
178        self.assertArgHasType(TestNSTableViewHelper.tableView_shouldEditTableColumn_row_, 2, objc._C_NSInteger)
179        self.assertResultIsBOOL(TestNSTableViewHelper.selectionShouldChangeInTableView_)
180        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_shouldSelectTableColumn_)
181        self.assertArgHasType(TestNSTableViewHelper.tableView_toolTipForCell_rect_tableColumn_row_mouseLocation_, 2, b'N^' + NSRect.__typestr__)
182        self.assertArgHasType(TestNSTableViewHelper.tableView_toolTipForCell_rect_tableColumn_row_mouseLocation_, 4, objc._C_NSInteger)
183        self.assertArgHasType(TestNSTableViewHelper.tableView_toolTipForCell_rect_tableColumn_row_mouseLocation_, 5, NSPoint.__typestr__)
184        self.assertResultHasType(TestNSTableViewHelper.tableView_heightOfRow_, objc._C_CGFloat)
185        self.assertArgHasType(TestNSTableViewHelper.tableView_heightOfRow_, 1, objc._C_NSInteger)
186        self.assertArgHasType(TestNSTableViewHelper.tableView_typeSelectStringForTableColumn_row_, 2, objc._C_NSInteger)
187        self.assertResultHasType(TestNSTableViewHelper.tableView_nextTypeSelectMatchFromRow_toRow_forString_, objc._C_NSInteger)
188        self.assertArgHasType(TestNSTableViewHelper.tableView_nextTypeSelectMatchFromRow_toRow_forString_, 1, objc._C_NSInteger)
189        self.assertArgHasType(TestNSTableViewHelper.tableView_nextTypeSelectMatchFromRow_toRow_forString_, 2, objc._C_NSInteger)
190        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_shouldTypeSelectForEvent_withCurrentSearchString_)
191        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_shouldShowCellExpansionForTableColumn_row_)
192        self.assertArgHasType(TestNSTableViewHelper.tableView_shouldShowCellExpansionForTableColumn_row_, 2, objc._C_NSInteger)
193        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_shouldTrackCell_forTableColumn_row_)
194        self.assertArgHasType(TestNSTableViewHelper.tableView_shouldTrackCell_forTableColumn_row_, 3, objc._C_NSInteger)
195        self.assertArgHasType(TestNSTableViewHelper.tableView_dataCellForTableColumn_row_, 2, objc._C_NSInteger)
196        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_isGroupRow_)
197        self.assertArgHasType(TestNSTableViewHelper.tableView_isGroupRow_, 1, objc._C_NSInteger)
198
199    @min_os_level('10.6')
200    def testProtococols10_6(self):
201        self.assertResultHasType(TestNSTableViewHelper.tableView_sizeToFitWidthOfColumn_, objc._C_CGFloat)
202        self.assertArgHasType(TestNSTableViewHelper.tableView_sizeToFitWidthOfColumn_, 1, objc._C_NSInteger)
203
204        self.assertResultIsBOOL(TestNSTableViewHelper.tableView_shouldReorderColumn_toColumn_)
205        self.assertArgHasType(TestNSTableViewHelper.tableView_shouldReorderColumn_toColumn_, 1, objc._C_NSInteger)
206        self.assertArgHasType(TestNSTableViewHelper.tableView_shouldReorderColumn_toColumn_, 2, objc._C_NSInteger)
207
208    @min_os_level('10.7')
209    def testProtococols10_7(self):
210        self.assertArgHasType(TestNSTableViewHelper.tableView_viewForTableColumn_row_, 2, objc._C_NSInteger)
211        self.assertArgHasType(TestNSTableViewHelper.tableView_rowViewForRow_, 1, objc._C_NSInteger)
212        self.assertArgHasType(TestNSTableViewHelper.tableView_didAddRowView_forRow_, 2, objc._C_NSInteger)
213        self.assertArgHasType(TestNSTableViewHelper.tableView_didRemoveRowView_forRow_, 2, objc._C_NSInteger)
214        self.assertArgHasType(TestNSTableViewHelper.tableView_pastboardWriterForRow_, 1, objc._C_NSInteger)
215        self.assertArgHasType(TestNSTableViewHelper.tableView_draggingSession_willBeginAtPoint_forRowIndexes_, 2, NSPoint.__typestr__)
216        self.assertArgHasType(TestNSTableViewHelper.tableView_draggingSession_endedAtPoint_operation_, 2, NSPoint.__typestr__)
217
218
219if __name__ == "__main__":
220    main()
221