1from PyObjCTools.TestSupport import *
2
3from Foundation import *
4
5class TestNSIndexSet (TestCase):
6    def testMethods(self):
7        self.assertResultIsBOOL(NSIndexSet.isEqualToIndexSet_)
8        self.assertResultIsBOOL(NSIndexSet.containsIndex_)
9        self.assertResultIsBOOL(NSIndexSet.containsIndexesInRange_)
10        self.assertResultIsBOOL(NSIndexSet.containsIndexes_)
11        self.assertResultIsBOOL(NSIndexSet.intersectsIndexesInRange_)
12
13        self.assertArgIsOut(NSIndexSet.getIndexes_maxCount_inIndexRange_, 0)
14        self.assertArgSizeInArg(NSIndexSet.getIndexes_maxCount_inIndexRange_, 0, 1)
15        self.assertArgSizeInResult(NSIndexSet.getIndexes_maxCount_inIndexRange_, 0)
16
17    @min_os_level('10.6')
18    def testMethods10_6(self):
19        self.assertArgIsBlock(NSIndexSet.enumerateIndexesUsingBlock_, 0,
20                b'v' + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
21        self.assertArgIsBlock(NSIndexSet.enumerateIndexesWithOptions_usingBlock_, 1,
22                b'v' + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
23        self.assertArgHasType(NSIndexSet.enumerateIndexesInRange_options_usingBlock_, 0, NSRange.__typestr__)
24        self.assertArgIsBlock(NSIndexSet.enumerateIndexesInRange_options_usingBlock_, 2,
25                b'v' + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
26
27        self.assertArgIsBlock(NSIndexSet.indexPassingTest_, 0,
28                objc._C_NSBOOL + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
29        self.assertArgIsBlock(NSIndexSet.indexWithOptions_passingTest_, 1,
30                objc._C_NSBOOL + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
31        self.assertArgHasType(NSIndexSet.indexInRange_options_passingTest_, 0,  NSRange.__typestr__)
32        self.assertArgIsBlock(NSIndexSet.indexInRange_options_passingTest_, 2,
33                objc._C_NSBOOL + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
34
35        self.assertArgIsBlock(NSIndexSet.indexesPassingTest_, 0,
36                objc._C_NSBOOL + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
37        self.assertArgIsBlock(NSIndexSet.indexesWithOptions_passingTest_, 1,
38                objc._C_NSBOOL + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
39        self.assertArgHasType(NSIndexSet.indexesInRange_options_passingTest_, 0,  NSRange.__typestr__)
40        self.assertArgIsBlock(NSIndexSet.indexesInRange_options_passingTest_, 2,
41                objc._C_NSBOOL + objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
42
43    @min_os_level('10.7')
44    def testMethod10_7(self):
45        self.assertArgIsBlock(NSIndexSet.enumerateRangesUsingBlock_, 0,
46                b'v' + NSRange.__typestr__ + b'o^' + objc._C_NSBOOL)
47
48        self.assertArgIsBlock(NSIndexSet.enumerateRangesWithOptions_usingBlock_, 1,
49                b'v' + NSRange.__typestr__ + b'o^' + objc._C_NSBOOL)
50
51        self.assertArgIsBlock(NSIndexSet.enumerateRangesInRange_options_usingBlock_, 2,
52                b'v' + NSRange.__typestr__ + b'o^' + objc._C_NSBOOL)
53
54
55if __name__ == "__main__":
56    main()
57