1
2from PyObjCTools.TestSupport import *
3from AppKit import *
4
5try:
6    unicode
7except NameError:
8    unicode = str
9
10class TestNSTextViewHelper (NSObject):
11    def textView_URLForContentsOfTextAttachment_atIndex_(self, a, b, c): pass
12    def textView_clickedOnLink_atIndex_(self, tv, a, b): return 1
13    def textView_clickedOnCell_inRect_atIndex_(self, tv, a, b, c): return 1
14    def textView_doubleClickedOnCell_inRect_atIndex_(self, tv, a, b, c): return 1
15    def textView_draggedCell_inRect_event_atIndex_(elf, tv, a, b, c, d): return 1
16    def textView_writablePasteboardTypesForCell_atIndex_(self, tv, a, b): return 1
17    def textView_writeCell_atIndex_toPasteboard_type_(self, tv, a, b, c, d): return 1
18    def textView_willChangeSelectionFromCharacterRange_toCharacterRange_(self, tv, a, b): return 1
19    def textView_shouldChangeTextInRanges_replacementStrings_(self, tv, a, b): return 1
20    def textView_willDisplayToolTip_forCharacterAtIndex_(self, tv, a, b): return 1
21    def textView_completions_forPartialWordRange_indexOfSelectedItem_(self, tv, a, b, c): return 1
22    def textView_shouldChangeTextInRange_replacementString_(self, tv, a, b): return 1
23    def textView_doCommandBySelector_(self, tv, a): return 1
24    def textView_clickedOnLink_(self, tv, a): return 1
25    def textView_clickedOnCell_inRect_(self, tv, a, b): return 1
26    def textView_doubleClickedOnCell_inRect_(self, tv, a, b): return 1
27    def textView_draggedCell_inRect_event_(self, tv, a, b, c): return 1
28    def textView_shouldSetSpellingState_range_(self, tv, a, b): return 1
29    def textView_menu_forEvent_atIndex_(self, tv, a, b, c): return 1
30    def textView_willCheckTextInRange_options_types_(self, tv, a, b, c): return 1
31    def textView_didCheckTextInRange_types_options_results_orthography_wordCount_(self, tv, r, t, o, rs, ort, wc): return 1
32
33class TestNSTextView (TestCase):
34    def testConstants(self):
35        self.assertEqual(NSSelectByCharacter, 0)
36        self.assertEqual(NSSelectByWord, 1)
37        self.assertEqual(NSSelectByParagraph, 2)
38        self.assertEqual(NSSelectionAffinityUpstream, 0)
39        self.assertEqual(NSSelectionAffinityDownstream, 1)
40        self.assertEqual(NSFindPanelActionShowFindPanel, 1)
41        self.assertEqual(NSFindPanelActionNext, 2)
42        self.assertEqual(NSFindPanelActionPrevious, 3)
43        self.assertEqual(NSFindPanelActionReplaceAll, 4)
44        self.assertEqual(NSFindPanelActionReplace, 5)
45        self.assertEqual(NSFindPanelActionReplaceAndFind, 6)
46        self.assertEqual(NSFindPanelActionSetFindString, 7)
47        self.assertEqual(NSFindPanelActionReplaceAllInSelection, 8)
48        self.assertEqual(NSFindPanelActionSelectAll, 9)
49        self.assertEqual(NSFindPanelActionSelectAllInSelection, 10)
50
51        self.assertIsInstance(NSFindPanelSearchOptionsPboardType, unicode)
52
53        self.assertIsInstance(NSFindPanelCaseInsensitiveSearch, unicode)
54        self.assertIsInstance(NSFindPanelSubstringMatch, unicode)
55
56        self.assertEqual(NSFindPanelSubstringMatchTypeContains, 0)
57        self.assertEqual(NSFindPanelSubstringMatchTypeStartsWith, 1)
58        self.assertEqual(NSFindPanelSubstringMatchTypeFullWord, 2)
59        self.assertEqual(NSFindPanelSubstringMatchTypeEndsWith, 3)
60
61        self.assertIsInstance(NSAllRomanInputSourcesLocaleIdentifier, unicode)
62
63        self.assertIsInstance(NSTextViewWillChangeNotifyingTextViewNotification, unicode)
64        self.assertIsInstance(NSTextViewDidChangeSelectionNotification, unicode)
65        self.assertIsInstance(NSTextViewDidChangeTypingAttributesNotification, unicode)
66
67
68    def testMethods(self):
69        self.assertResultIsBOOL(NSTextView.rulerView_shouldMoveMarker_)
70        self.assertResultIsBOOL(NSTextView.rulerView_shouldAddMarker_)
71        self.assertResultIsBOOL(NSTextView.rulerView_shouldRemoveMarker_)
72        self.assertArgIsBOOL(NSTextView.setNeedsDisplayInRect_avoidAdditionalLayout_, 1)
73        self.assertArgIsBOOL(NSTextView.drawInsertionPointInRect_color_turnedOn_, 2)
74        self.assertArgIsOut(NSTextView.completionsForPartialWordRange_indexOfSelectedItem_, 1)
75        self.assertArgIsBOOL(NSTextView.insertCompletion_forPartialWordRange_movement_isFinal_, 3)
76        self.assertResultIsBOOL(NSTextView.writeSelectionToPasteboard_type_)
77        self.assertResultIsBOOL(NSTextView.writeSelectionToPasteboard_types_)
78        self.assertResultIsBOOL(NSTextView.readSelectionFromPasteboard_type_)
79        self.assertResultIsBOOL(NSTextView.readSelectionFromPasteboard_)
80        self.assertResultIsBOOL(NSTextView.dragSelectionWithEvent_offset_slideBack_)
81        self.assertArgIsBOOL(NSTextView.dragSelectionWithEvent_offset_slideBack_, 2)
82        self.assertArgIsBOOL(NSTextView.setSelectedRanges_affinity_stillSelecting_, 2)
83        self.assertArgIsBOOL(NSTextView.setSelectedRange_affinity_stillSelecting_, 2)
84        self.assertArgIsBOOL(NSTextView.updateInsertionPointStateAndRestartTimer_, 0)
85        self.assertResultIsBOOL(NSTextView.acceptsGlyphInfo)
86        self.assertArgIsBOOL(NSTextView.setAcceptsGlyphInfo_, 0)
87        self.assertArgIsBOOL(NSTextView.setRulerVisible_, 0)
88        self.assertResultIsBOOL(NSTextView.usesRuler)
89        self.assertArgIsBOOL(NSTextView.setUsesRuler_, 0)
90        self.assertResultIsBOOL(NSTextView.isContinuousSpellCheckingEnabled)
91        self.assertArgIsBOOL(NSTextView.setContinuousSpellCheckingEnabled_, 0)
92        self.assertResultIsBOOL(NSTextView.isGrammarCheckingEnabled)
93        self.assertArgIsBOOL(NSTextView.setGrammarCheckingEnabled_, 0)
94        self.assertResultIsBOOL(NSTextView.shouldChangeTextInRanges_replacementStrings_)
95        self.assertResultIsBOOL(NSTextView.shouldChangeTextInRange_replacementString_)
96        self.assertResultIsBOOL(NSTextView.usesFindPanel)
97        self.assertArgIsBOOL(NSTextView.setUsesFindPanel_, 0)
98        self.assertResultIsBOOL(NSTextView.allowsDocumentBackgroundColorChange)
99        self.assertArgIsBOOL(NSTextView.setAllowsDocumentBackgroundColorChange_, 0)
100        self.assertResultIsBOOL(NSTextView.allowsUndo)
101        self.assertArgIsBOOL(NSTextView.setAllowsUndo_, 0)
102        self.assertResultIsBOOL(NSTextView.allowsImageEditing)
103        self.assertArgIsBOOL(NSTextView.setAllowsImageEditing_, 0)
104        self.assertResultIsBOOL(NSTextView.isEditable)
105        self.assertArgIsBOOL(NSTextView.setEditable_, 0)
106        self.assertResultIsBOOL(NSTextView.isSelectable)
107        self.assertArgIsBOOL(NSTextView.setSelectable_, 0)
108        self.assertResultIsBOOL(NSTextView.isRichText)
109        self.assertArgIsBOOL(NSTextView.setRichText_, 0)
110        self.assertResultIsBOOL(NSTextView.importsGraphics)
111        self.assertArgIsBOOL(NSTextView.setImportsGraphics_, 0)
112        self.assertResultIsBOOL(NSTextView.drawsBackground)
113        self.assertArgIsBOOL(NSTextView.setDrawsBackground_, 0)
114        self.assertResultIsBOOL(NSTextView.isFieldEditor)
115        self.assertArgIsBOOL(NSTextView.setFieldEditor_, 0)
116        self.assertResultIsBOOL(NSTextView.usesFontPanel)
117        self.assertArgIsBOOL(NSTextView.setUsesFontPanel_, 0)
118        self.assertResultIsBOOL(NSTextView.isRulerVisible)
119        self.assertResultIsBOOL(NSTextView.smartInsertDeleteEnabled)
120        self.assertArgIsBOOL(NSTextView.setSmartInsertDeleteEnabled_, 0)
121
122        self.assertArgIsOut(NSTextView.dragImageForSelectionWithEvent_origin_, 1)
123        self.assertArgIsOut(NSTextView.smartInsertForString_replacingRange_beforeString_afterString_, 2)
124        self.assertArgIsOut(NSTextView.smartInsertForString_replacingRange_beforeString_afterString_, 3)
125
126    @min_os_level('10.7')
127    def testMethods10_7(self):
128        self.assertResultIsBOOL(NSTextView.usesInspectorBar)
129        self.assertArgIsBOOL(NSTextView.setUsesInspectorBar_, 0)
130        self.assertResultIsBOOL(NSTextView.usesFindBar)
131        self.assertArgIsBOOL(NSTextView.setUsesFindBar_, 0)
132        self.assertResultIsBOOL(NSTextView.isIncrementalSearchingEnabled)
133        self.assertArgIsBOOL(NSTextView.setIncrementalSearchingEnabled_, 0)
134
135    @min_os_level('10.5')
136    def testMethods10_5(self):
137        self.assertResultIsBOOL(NSTextView.displaysLinkToolTips)
138        self.assertArgIsBOOL(NSTextView.setDisplaysLinkToolTips_, 0)
139        self.assertResultIsBOOL(NSTextView.isAutomaticQuoteSubstitutionEnabled)
140        self.assertArgIsBOOL(NSTextView.setAutomaticQuoteSubstitutionEnabled_, 0)
141        self.assertResultIsBOOL(NSTextView.isAutomaticLinkDetectionEnabled)
142        self.assertArgIsBOOL(NSTextView.setAutomaticLinkDetectionEnabled_, 0)
143
144
145    def testProtocols(self):
146        self.assertResultIsBOOL(TestNSTextViewHelper.textView_clickedOnLink_atIndex_)
147        self.assertArgHasType(TestNSTextViewHelper.textView_clickedOnLink_atIndex_, 2, objc._C_NSUInteger)
148        self.assertArgHasType(TestNSTextViewHelper.textView_clickedOnCell_inRect_atIndex_, 2, NSRect.__typestr__)
149        self.assertArgHasType(TestNSTextViewHelper.textView_clickedOnCell_inRect_atIndex_, 3, objc._C_NSUInteger)
150        self.assertArgHasType(TestNSTextViewHelper.textView_doubleClickedOnCell_inRect_atIndex_, 2, NSRect.__typestr__)
151        self.assertArgHasType(TestNSTextViewHelper.textView_doubleClickedOnCell_inRect_atIndex_, 3, objc._C_NSUInteger)
152        self.assertArgHasType(TestNSTextViewHelper.textView_draggedCell_inRect_event_atIndex_, 2, NSRect.__typestr__)
153        self.assertArgHasType(TestNSTextViewHelper.textView_draggedCell_inRect_event_atIndex_, 4, objc._C_NSUInteger)
154        self.assertArgHasType(TestNSTextViewHelper.textView_writablePasteboardTypesForCell_atIndex_, 2, objc._C_NSUInteger)
155        self.assertResultIsBOOL(TestNSTextViewHelper.textView_writeCell_atIndex_toPasteboard_type_)
156        self.assertArgHasType(TestNSTextViewHelper.textView_writeCell_atIndex_toPasteboard_type_, 2, objc._C_NSUInteger)
157        self.assertArgHasType(TestNSTextViewHelper.textView_willChangeSelectionFromCharacterRange_toCharacterRange_, 1, NSRange.__typestr__)
158        self.assertArgHasType(TestNSTextViewHelper.textView_willChangeSelectionFromCharacterRange_toCharacterRange_, 2, NSRange.__typestr__)
159        self.assertResultIsBOOL(TestNSTextViewHelper.textView_shouldChangeTextInRanges_replacementStrings_)
160        self.assertArgHasType(TestNSTextViewHelper.textView_willDisplayToolTip_forCharacterAtIndex_, 2, objc._C_NSUInteger)
161        self.assertArgHasType(TestNSTextViewHelper.textView_completions_forPartialWordRange_indexOfSelectedItem_, 2, NSRange.__typestr__)
162        self.assertArgHasType(TestNSTextViewHelper.textView_completions_forPartialWordRange_indexOfSelectedItem_, 3, b'N^'+objc._C_NSInteger)
163        self.assertResultIsBOOL(TestNSTextViewHelper.textView_shouldChangeTextInRange_replacementString_)
164        self.assertArgHasType(TestNSTextViewHelper.textView_shouldChangeTextInRange_replacementString_, 1, NSRange.__typestr__)
165        self.assertResultIsBOOL(TestNSTextViewHelper.textView_doCommandBySelector_)
166        self.assertArgHasType(TestNSTextViewHelper.textView_doCommandBySelector_, 1, objc._C_SEL)
167        self.assertResultIsBOOL(TestNSTextViewHelper.textView_clickedOnLink_)
168        self.assertArgHasType(TestNSTextViewHelper.textView_clickedOnCell_inRect_, 2, NSRect.__typestr__)
169        self.assertArgHasType(TestNSTextViewHelper.textView_doubleClickedOnCell_inRect_, 2, NSRect.__typestr__)
170        self.assertArgHasType(TestNSTextViewHelper.textView_draggedCell_inRect_event_, 2, NSRect.__typestr__)
171
172    @min_os_level('10.5')
173    def testProtocols10_5(self):
174        self.assertArgHasType(TestNSTextViewHelper.textView_shouldSetSpellingState_range_, 1, objc._C_NSInteger)
175        self.assertArgHasType(TestNSTextViewHelper.textView_shouldSetSpellingState_range_, 2, NSRange.__typestr__)
176        self.assertArgHasType(TestNSTextViewHelper.textView_menu_forEvent_atIndex_, 3, objc._C_NSUInteger)
177
178    @min_os_level('10.6')
179    def testMethods10_6(self):
180        self.assertResultIsBOOL(NSTextView.isCoalescingUndo)
181
182        self.assertArgIsBOOL(NSTextView.setAutomaticDataDetectionEnabled_, 0)
183        self.assertResultIsBOOL(NSTextView.isAutomaticDataDetectionEnabled)
184        self.assertArgIsBOOL(NSTextView.setAutomaticDashSubstitutionEnabled_, 0)
185        self.assertResultIsBOOL(NSTextView.isAutomaticDashSubstitutionEnabled)
186        self.assertArgIsBOOL(NSTextView.setAutomaticTextReplacementEnabled_, 0)
187        self.assertResultIsBOOL(NSTextView.isAutomaticTextReplacementEnabled)
188        self.assertArgIsBOOL(NSTextView.setAutomaticSpellingCorrectionEnabled_, 0)
189        self.assertResultIsBOOL(NSTextView.isAutomaticSpellingCorrectionEnabled)
190
191        self.assertArgHasType(NSTextView.checkTextInRange_types_options_, 0, NSRange.__typestr__)
192        self.assertArgHasType(NSTextView.handleTextCheckingResults_forRange_types_options_orthography_wordCount_, 1, NSRange.__typestr__)
193
194    @min_os_level('10.6')
195    def testProtocols10_6(self):
196        self.assertArgHasType(TestNSTextViewHelper.textView_willCheckTextInRange_options_types_, 1, NSRange.__typestr__)
197        self.assertArgHasType(TestNSTextViewHelper.textView_willCheckTextInRange_options_types_, 3, b'N^' + objc._C_NSInteger)
198
199        self.assertArgHasType(TestNSTextViewHelper.textView_didCheckTextInRange_types_options_results_orthography_wordCount_, 1, NSRange.__typestr__)
200        self.assertArgHasType(TestNSTextViewHelper.textView_didCheckTextInRange_types_options_results_orthography_wordCount_, 2, objc._C_NSInteger)
201        self.assertArgHasType(TestNSTextViewHelper.textView_didCheckTextInRange_types_options_results_orthography_wordCount_, 6, objc._C_NSInteger)
202
203    @min_os_level('10.7')
204    def testProtocols10_7(self):
205        self.assertArgHasType(TestNSTextViewHelper.textView_URLForContentsOfTextAttachment_atIndex_, 2, objc._C_NSUInteger)
206
207
208
209if __name__ == "__main__":
210    main()
211