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