1from PyObjCTools.TestSupport import *
2
3import AppKit
4
5try:
6    unicode
7except NameError:
8    unicode = str
9
10class FindHelper (AppKit.NSObject):
11    def isSelectable(self): pass
12    def allowsMultipleSelection(self): pass
13    def isEditable(self): pass
14    def stringAtIndex_effectiveRange_endswithSearchBoundary_(self, a, b, c): pass
15    def firstSelectedRange(self): pass
16    def scrollRangeToVisible_(self, a): pass
17    def shouldReplaceCharactersInRanges_withStrings_(self, a, b): pass
18    def contentViewAtIndex_effectiveCharacterRange_(self, a, b): pass
19    def drawCharactersInRange_forContentView_(self, a, b): pass
20    def isFindBarVisible(self): return 1
21    def setFindBarVisible_(self, a): pass
22
23class TestNSTextFinder (TestCase):
24    @min_os_level('10.7')
25    def testConstants10_7(self):
26        self.assertEqual(AppKit.NSTextFinderActionShowFindInterface, 1)
27        self.assertEqual(AppKit.NSTextFinderActionNextMatch, 2)
28        self.assertEqual(AppKit.NSTextFinderActionPreviousMatch, 3)
29        self.assertEqual(AppKit.NSTextFinderActionReplaceAll, 4)
30        self.assertEqual(AppKit.NSTextFinderActionReplace, 5)
31        self.assertEqual(AppKit.NSTextFinderActionReplaceAndFind, 6)
32        self.assertEqual(AppKit.NSTextFinderActionSetSearchString, 7)
33        self.assertEqual(AppKit.NSTextFinderActionReplaceAllInSelection, 8)
34        self.assertEqual(AppKit.NSTextFinderActionSelectAll, 9)
35        self.assertEqual(AppKit.NSTextFinderActionSelectAllInSelection, 10)
36        self.assertEqual(AppKit.NSTextFinderActionHideFindInterface, 11)
37        self.assertEqual(AppKit.NSTextFinderActionShowReplaceInterface, 12)
38        self.assertEqual(AppKit.NSTextFinderActionHideReplaceInterface, 13)
39
40        self.assertIsInstance(AppKit.NSTextFinderCaseInsensitiveKey, unicode)
41        self.assertIsInstance(AppKit.NSTextFinderMatchingTypeKey, unicode)
42
43        self.assertEqual(AppKit.NSTextFinderMatchingTypeContains, 0)
44        self.assertEqual(AppKit.NSTextFinderMatchingTypeStartsWith, 1)
45        self.assertEqual(AppKit.NSTextFinderMatchingTypeFullWord, 2)
46        self.assertEqual(AppKit.NSTextFinderMatchingTypeEndsWith, 3)
47
48    @min_os_level('10.7')
49    def testMethods10_7(self):
50        self.assertResultIsBOOL(AppKit.NSTextFinder.validateAction_)
51        self.assertResultIsBOOL(AppKit.NSTextFinder.findIndicatorNeedsUpdate)
52        self.assertArgIsBOOL(AppKit.NSTextFinder.setFindIndicatorNeedsUpdate_, 0)
53        self.assertResultIsBOOL(AppKit.NSTextFinder.isIncrementalSearchingEnabled)
54        self.assertArgIsBOOL(AppKit.NSTextFinder.setIncrementalSearchingEnabled_, 0)
55        self.assertResultIsBOOL(AppKit.NSTextFinder.incrementalSearchingShouldDimContentView)
56        self.assertArgIsBOOL(AppKit.NSTextFinder.setIncrementalSearchingShouldDimContentView_, 0)
57
58    @min_os_level('10.7')
59    def testProtocol10_7(self):
60        self.assertResultIsBOOL(FindHelper.isSelectable)
61        self.assertResultIsBOOL(FindHelper.allowsMultipleSelection)
62        self.assertResultIsBOOL(FindHelper.isEditable)
63
64        self.assertArgHasType(FindHelper.stringAtIndex_effectiveRange_endswithSearchBoundary_, 0, objc._C_NSUInteger)
65        self.assertArgHasType(FindHelper.stringAtIndex_effectiveRange_endswithSearchBoundary_, 1, b'o^' + AppKit.NSRange.__typestr__)
66        self.assertArgHasType(FindHelper.stringAtIndex_effectiveRange_endswithSearchBoundary_, 2, b'o^' + objc._C_NSBOOL)
67
68        self.assertResultHasType(FindHelper.firstSelectedRange, AppKit.NSRange.__typestr__)
69        self.assertArgHasType(FindHelper.scrollRangeToVisible_, 0, AppKit.NSRange.__typestr__)
70        self.assertResultIsBOOL(FindHelper.shouldReplaceCharactersInRanges_withStrings_)
71        self.assertArgHasType(FindHelper.contentViewAtIndex_effectiveCharacterRange_, 0, objc._C_NSUInteger)
72        self.assertArgHasType(FindHelper.contentViewAtIndex_effectiveCharacterRange_, 1, b'o^' + AppKit.NSRange.__typestr__)
73        self.assertArgHasType(FindHelper.drawCharactersInRange_forContentView_, 0, AppKit.NSRange.__typestr__)
74
75        self.assertResultIsBOOL(FindHelper.isFindBarVisible)
76        self.assertArgIsBOOL(FindHelper.setFindBarVisible_, 0)
77
78
79if __name__ == "__main__":
80    main()
81