1from PyObjCTools.TestSupport import *
2from Foundation import *
3
4class TestNSOrderedSet (TestCase):
5    @min_os_level('10.7')
6    def testMethods10_7(self):
7        self.assertResultIsBOOL(NSOrderedSet.isEqualToOrderedSet_)
8        self.assertResultIsBOOL(NSOrderedSet.containsObject_)
9        self.assertResultIsBOOL(NSOrderedSet.intersectsOrderedSet_)
10        self.assertResultIsBOOL(NSOrderedSet.intersectsSet_)
11        self.assertResultIsBOOL(NSOrderedSet.isSubsetOfOrderedSet_)
12        self.assertResultIsBOOL(NSOrderedSet.isSubsetOfSet_)
13
14        self.assertArgIsBlock(NSOrderedSet.enumerateObjectsUsingBlock_, 0,
15                b'v@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
16        self.assertArgIsBlock(NSOrderedSet.enumerateObjectsWithOptions_usingBlock_, 1,
17                b'v@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
18        self.assertArgIsBlock(NSOrderedSet.enumerateObjectsAtIndexes_options_usingBlock_, 2,
19                b'v@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
20
21        self.assertArgIsBlock(NSOrderedSet.indexOfObjectPassingTest_, 0,
22                objc._C_NSBOOL + b'@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
23        self.assertArgIsBlock(NSOrderedSet.indexOfObjectWithOptions_passingTest_, 1,
24                objc._C_NSBOOL + b'@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
25        self.assertArgIsBlock(NSOrderedSet.indexOfObjectAtIndexes_options_passingTest_, 2,
26                objc._C_NSBOOL + b'@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
27
28        self.assertArgIsBlock(NSOrderedSet.indexesOfObjectsPassingTest_, 0,
29                objc._C_NSBOOL + b'@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
30        self.assertArgIsBlock(NSOrderedSet.indexesOfObjectsWithOptions_passingTest_, 1,
31                objc._C_NSBOOL + b'@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
32        self.assertArgIsBlock(NSOrderedSet.indexesOfObjectsAtIndexes_options_passingTest_, 2,
33                objc._C_NSBOOL + b'@'+objc._C_NSUInteger + b'o^' + objc._C_NSBOOL)
34
35        self.assertArgIsBlock(NSOrderedSet.indexOfObject_inSortedRange_options_usingComparator_, 3,
36                objc._C_NSInteger + b'@@')
37
38        self.assertArgIsBOOL(NSOrderedSet.orderedSetWithOrderedSet_range_copyItems_, 2)
39        self.assertArgIsBOOL(NSOrderedSet.orderedSetWithArray_range_copyItems_, 2)
40        self.assertArgIsBOOL(NSOrderedSet.orderedSetWithArray_copyItems_, 1)
41        self.assertArgIsBOOL(NSOrderedSet.orderedSetWithOrderedSet_range_copyItems_, 2)
42        self.assertArgIsBOOL(NSOrderedSet.orderedSetWithOrderedSet_copyItems_, 1)
43        self.assertArgIsBOOL(NSOrderedSet.initWithOrderedSet_range_copyItems_, 2)
44        self.assertArgIsBOOL(NSOrderedSet.initWithOrderedSet_copyItems_, 1)
45        self.assertArgIsBOOL(NSOrderedSet.initWithArray_range_copyItems_, 2)
46        self.assertArgIsBOOL(NSOrderedSet.initWithArray_copyItems_, 1)
47        self.assertArgIsBOOL(NSOrderedSet.initWithSet_copyItems_, 1)
48
49        self.assertArgIsBlock(NSMutableOrderedSet.sortUsingComparator_, 0,
50                objc._C_NSInteger + b'@@')
51        self.assertArgIsBlock(NSMutableOrderedSet.sortWithOptions_usingComparator_, 1,
52                objc._C_NSInteger + b'@@')
53        self.assertArgIsBlock(NSMutableOrderedSet.sortRange_options_usingComparator_, 2,
54                objc._C_NSInteger + b'@@')
55
56    @min_os_level('10.7')
57    def testCreation(self):
58        obj = NSOrderedSet.orderedSet()
59        self.assertIsInstance(obj, NSOrderedSet)
60
61        obj = NSOrderedSet.orderedSetWithObjects_count_([1,2,3,4,5], 3)
62        self.assertIsInstance(obj, NSOrderedSet)
63        self.assertTrue(obj.containsObject_(1))
64        self.assertTrue(obj.containsObject_(2))
65        self.assertTrue(obj.containsObject_(3))
66        self.assertFalse(obj.containsObject_(4))
67        self.assertFalse(obj.containsObject_(5))
68
69        obj = NSOrderedSet.orderedSetWithObjects_(1, 2, 3)
70        self.assertIsInstance(obj, NSOrderedSet)
71        self.assertTrue(obj.containsObject_(1))
72        self.assertTrue(obj.containsObject_(2))
73        self.assertTrue(obj.containsObject_(3))
74
75        obj = NSOrderedSet.alloc().initWithObjects_count_([1,2,3,4,5], 3)
76        self.assertIsInstance(obj, NSOrderedSet)
77        self.assertTrue(obj.containsObject_(1))
78        self.assertTrue(obj.containsObject_(2))
79        self.assertTrue(obj.containsObject_(3))
80        self.assertFalse(obj.containsObject_(4))
81        self.assertFalse(obj.containsObject_(5))
82
83        obj = NSOrderedSet.alloc().initWithObjects_(1, 2, 3)
84        self.assertIsInstance(obj, NSOrderedSet)
85        self.assertTrue(obj.containsObject_(1))
86        self.assertTrue(obj.containsObject_(2))
87        self.assertTrue(obj.containsObject_(3))
88
89
90        obj = NSMutableOrderedSet.orderedSet()
91        obj.addObjects_count_([1,2,3,4], 3)
92        self.assertTrue(obj.containsObject_(1))
93        self.assertTrue(obj.containsObject_(2))
94        self.assertTrue(obj.containsObject_(3))
95        self.assertFalse(obj.containsObject_(4))
96
97        #obj = NSMutableOrderedSet.alloc().init()
98        #obj.addObjects_(1,2,3)
99        #self.assertTrue(obj.containsObject_(1))
100        #self.assertTrue(obj.containsObject_(2))
101        #self.assertTrue(obj.containsObject_(3))
102
103        obj.replaceObjectsInRange_withObjects_count_(NSRange(0, 1), ['a', 'b', 'c', 'd'], 3)
104        self.assertTrue(obj.containsObject_('a'))
105        self.assertFalse(obj.containsObject_(1))
106
107
108if __name__ == "__main__":
109    main()
110