1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3 4 5class TestSet (TestCase): 6 def testTypes(self): 7 self.assertIsCFType(CFSetRef) 8 9 def testTypeID(self): 10 self.assertIsInstance(CFSetGetTypeID(), (int, long)) 11 def testCreation(self): 12 st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks) 13 self.assertIsInstance(st, CFSetRef) 14 self.assertIsInstance(st, objc.lookUpClass('NSSet')) 15 st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks) 16 self.assertIsInstance(st, CFSetRef) 17 st = CFSetCreateMutable(None, 0, kCFTypeSetCallBacks) 18 self.assertIsInstance(st, CFSetRef) 19 cp = CFSetCreateMutableCopy(None, 0, st) 20 self.assertIsInstance(st, CFSetRef) 21 cp = CFSetCreateCopy(None, st) 22 self.assertIsInstance(st, CFSetRef) 23 def testInspection(self): 24 st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks) 25 self.assertIsInstance(st, CFSetRef) 26 self.assertIsInstance(st, objc.lookUpClass('NSSet')) 27 v = CFSetGetCount(st) 28 self.assertEqual(v , 3) 29 self.assertArgHasType(CFSetGetCountOfValue, 1, b'@') 30 v = CFSetGetCountOfValue(st, u'd') 31 self.assertEqual(v , 0) 32 v = CFSetGetCountOfValue(st, u'b') 33 self.assertEqual(v , 1) 34 self.assertArgHasType(CFSetContainsValue, 1, b'@') 35 v = CFSetContainsValue(st, u'd') 36 self.assertIs(v, False) 37 v = CFSetContainsValue(st, u'b') 38 self.assertIs(v, True) 39 self.assertResultHasType(CFSetGetValue, b'@') 40 self.assertArgHasType(CFSetGetValue, 1, b'@') 41 v = CFSetGetValue(st, u'd') 42 self.assertIs(v, None) 43 v = CFSetGetValue(st, u'b') 44 self.assertEqual(v , u'b') 45 self.assertResultIsBOOL(CFSetGetValueIfPresent) 46 self.assertArgHasType(CFSetGetValueIfPresent, 1, b'@') 47 self.assertArgHasType(CFSetGetValueIfPresent, 2, b'o^@') 48 present, value = CFSetGetValueIfPresent(st, u'c', None) 49 self.assertIs(present, True) 50 self.assertEqual(value , u'c') 51 values = CFSetGetValues(st, None) 52 values = list(values) 53 values.sort() 54 self.assertEqual(values , [u'a', u'b', u'c']) 55 def testApplying(self): 56 st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks) 57 self.assertIsInstance(st, CFSetRef) 58 self.assertIsInstance(st, objc.lookUpClass('NSSet')) 59 context = [] 60 def callback(value, context): 61 context.append(value) 62 63 self.assertArgIsFunction(CFSetApplyFunction, 1, b'v@@', False) 64 self.assertArgHasType(CFSetApplyFunction, 2, b'@') 65 CFSetApplyFunction(st, callback, context) 66 self.assertEqual(len(context) , 3) 67 context.sort() 68 self.assertEqual(context , [u'a', u'b', u'c']) 69 70 def testMutation(self): 71 st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks) 72 self.assertIsInstance(st, CFSetRef) 73 self.assertIsInstance(st, objc.lookUpClass('NSSet')) 74 st = CFSetCreateMutableCopy(None, 0, st) 75 self.assertIsInstance(st, CFSetRef) 76 self.assertEqual(CFSetGetCount(st) , 3) 77 self.assertArgHasType(CFSetSetValue, 1, b'@') 78 CFSetSetValue(st, 'c') 79 self.assertEqual(CFSetGetCount(st) , 3) 80 CFSetSetValue(st, 'd') 81 self.assertEqual(CFSetGetCount(st) , 4) 82 self.assertArgHasType(CFSetRemoveValue, 1, b'@') 83 CFSetRemoveValue(st, 'c') 84 self.assertEqual(CFSetGetCount(st) , 3) 85 CFSetRemoveAllValues(st) 86 self.assertEqual(CFSetGetCount(st) , 0) 87 self.assertArgHasType(CFSetAddValue, 1, b'@') 88 CFSetAddValue(st, 'd') 89 90 self.assertArgHasType(CFSetReplaceValue, 1, b'@') 91 CFSetReplaceValue(st, 'd') 92 93 94if __name__ == "__main__": 95 main() 96