1from PyObjCTools.TestSupport import *
2import objc
3
4from Foundation import *
5
6class TestNSSetInteraction(TestCase):
7    def __testRepeatedAllocInit( self ):
8        for i in range(1,1000):
9            a = NSSet.alloc().init()
10
11    def __testContains( self ):
12        x = NSSet.setWithArray_( ["foo", "bar", "baz"] )
13
14        self.assert_( "foo" in x )
15        self.assert_( "notfoo" not in x )
16
17    def __testIteration( self ):
18        x = NSSet.setWithArray_( ["foo", "bar", "baz"] )
19
20        for i in x:
21            self.assert_( i in x )
22            self.assert_( x.containsObject_( i ) )
23
24    def test_varargsConstruction(self):
25        w = NSSet.setWithObjects_(0,1,2,3,None)
26        x = NSSet.alloc().initWithObjects_(0,1,2,3,None)
27        y = NSSet.setWithObjects_count_(range(10), 4)
28        z = NSSet.alloc().initWithObjects_count_(range(10), 4)
29        #a = NSSet.alloc().initWithObjects_count_(range(4), None)
30
31        self.assert_(len(w) == 4)
32        self.assert_(len(x) == 4)
33        self.assert_(len(y) == 4)
34        self.assert_(len(z) == 4)
35        #self.assert_(len(a) == 4)
36
37        self.assert_(0 in w)
38        self.assert_(1 in x)
39        self.assert_(2 in y)
40        self.assert_(3 in z)
41        #self.assert_(3 in a)
42
43    def test_varargsConstruction2(self):
44        w = NSMutableSet.setWithObjects_(0,1,2,3,None)
45        x = NSMutableSet.alloc().initWithObjects_(0,1,2,3,None)
46        y = NSMutableSet.setWithObjects_count_(range(10), 4)
47        z = NSMutableSet.alloc().initWithObjects_count_(range(10), 4)
48
49        self.assert_(len(w) == 4)
50        self.assert_(len(x) == 4)
51        self.assert_(len(y) == 4)
52        self.assert_(len(z) == 4)
53
54        self.assert_(0 in w)
55        self.assert_(1 in x)
56        self.assert_(2 in y)
57        self.assert_(3 in z)
58
59class TestVariadic (TestCase):
60    def testSetWithObjects(self):
61        o = NSSet.setWithObjects_()
62        self.assertEquals(len(o), 0)
63        self.assert_(isinstance(o, NSSet))
64
65        o = NSSet.setWithObjects_(1,2,3)
66        self.assertEquals(len(o), 3)
67        self.assert_(isinstance(o, NSSet))
68        self.assert_(1 in o)
69        self.assert_(2 in o)
70        self.assert_(3 in o)
71
72        o = NSMutableSet.setWithObjects_()
73        self.assertEquals(len(o), 0)
74        self.assert_(isinstance(o, NSMutableSet))
75
76        o = NSMutableSet.setWithObjects_(1,2,3)
77        self.assertEquals(len(o), 3)
78        self.assert_(isinstance(o, NSMutableSet))
79        self.assert_(1 in o)
80        self.assert_(2 in o)
81        self.assert_(3 in o)
82
83    def testInitWithObjects(self):
84        o = NSSet.alloc().initWithObjects_()
85        self.assertEquals(len(o), 0)
86        self.assert_(isinstance(o, NSSet))
87
88        o = NSSet.alloc().initWithObjects_(1,2,3)
89        self.assertEquals(len(o), 3)
90        self.assert_(isinstance(o, NSSet))
91        self.assert_(1 in o)
92        self.assert_(2 in o)
93        self.assert_(3 in o)
94
95        o = NSMutableSet.alloc().initWithObjects_()
96        self.assertEquals(len(o), 0)
97        self.assert_(isinstance(o, NSMutableSet))
98
99        o = NSMutableSet.alloc().initWithObjects_(1,2,3)
100        self.assertEquals(len(o), 3)
101        self.assert_(isinstance(o, NSMutableSet))
102        self.assert_(1 in o)
103        self.assert_(2 in o)
104        self.assert_(3 in o)
105
106    def testSetWithObjectsCount(self):
107        o = NSSet.setWithObjects_count_([1,2,3], 3)
108        self.assertEquals(len(o), 3)
109        self.assert_(isinstance(o, NSSet))
110        self.assert_(1 in o)
111        self.assert_(2 in o)
112        self.assert_(3 in o)
113        self.assert_(4 not in o)
114
115        o = NSSet.setWithObjects_count_([1,2,3], 0)
116        self.assertEquals(len(o), 0)
117        self.assert_(isinstance(o, NSSet))
118
119        o = NSMutableSet.setWithObjects_count_([1,2,3], 3)
120        self.assertEquals(len(o), 3)
121        self.assert_(isinstance(o, NSMutableSet))
122        self.assert_(1 in o)
123        self.assert_(2 in o)
124        self.assert_(3 in o)
125
126        o = NSMutableSet.setWithObjects_count_([1,2,3], 0)
127        self.assertEquals(len(o), 0)
128        self.assert_(isinstance(o, NSMutableSet))
129
130    def testInitWithObjectsCount(self):
131        o = NSSet.alloc().initWithObjects_count_([1,2,3], 3)
132        self.assertEquals(len(o), 3)
133        self.assert_(isinstance(o, NSSet))
134        self.assert_(1 in o)
135        self.assert_(2 in o)
136        self.assert_(3 in o)
137        self.assert_(4 not in o)
138
139        o = NSSet.alloc().initWithObjects_count_([1,2,3], 0)
140        self.assertEquals(len(o), 0)
141        self.assert_(isinstance(o, NSSet))
142
143        o = NSMutableSet.alloc().initWithObjects_count_([1,2,3], 3)
144        self.assertEquals(len(o), 3)
145        self.assert_(isinstance(o, NSMutableSet))
146        self.assert_(1 in o)
147        self.assert_(2 in o)
148        self.assert_(3 in o)
149
150        o = NSMutableSet.alloc().initWithObjects_count_([1,2,3], 0)
151        self.assertEquals(len(o), 0)
152        self.assert_(isinstance(o, NSMutableSet))
153
154    def testMethods(self):
155        self.failUnlessResultIsBOOL(NSSet.containsObject_)
156        self.failUnlessResultIsBOOL(NSSet.intersectsSet_)
157        self.failUnlessResultIsBOOL(NSSet.isEqualToSet_)
158        self.failUnlessResultIsBOOL(NSSet.isSubsetOfSet_)
159
160        self.failUnlessArgIsIn(NSSet.setWithObjects_count_, 0)
161        self.failUnlessArgSizeInArg(NSSet.setWithObjects_count_, 0, 1)
162        self.failUnlessArgIsIn(NSSet.initWithObjects_count_, 0)
163        self.failUnlessArgSizeInArg(NSSet.initWithObjects_count_, 0, 1)
164
165        self.failUnlessArgIsBOOL(NSSet.initWithSet_copyItems_, 1)
166
167if __name__ == '__main__':
168    main()
169