Source

pyobjc / pyobjc-framework-Cocoa / PyObjCTest / test_cfset.py

Full commit
from PyObjCTools.TestSupport import *
from CoreFoundation import *


class TestSet (TestCase):
    def testTypes(self):
        self.assertIsCFType(CFSetRef)

    def testTypeID(self):
        self.assertIsInstance(CFSetGetTypeID(), (int, long))

    def testCreation(self):
        st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks)
        self.assertIsInstance(st, CFSetRef)
        self.assertIsInstance(st, objc.lookUpClass('NSSet'))
        st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks)
        self.assertIsInstance(st, CFSetRef)
        st = CFSetCreateMutable(None, 0, kCFTypeSetCallBacks)
        self.assertIsInstance(st, CFSetRef)
        cp = CFSetCreateMutableCopy(None, 0, st)
        self.assertIsInstance(st, CFSetRef)
        cp = CFSetCreateCopy(None, st)
        self.assertIsInstance(st, CFSetRef)

    def testInspection(self):
        st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks)
        self.assertIsInstance(st, CFSetRef)
        self.assertIsInstance(st, objc.lookUpClass('NSSet'))
        v = CFSetGetCount(st)
        self.assertEqual(v , 3)
        self.assertArgHasType(CFSetGetCountOfValue, 1, b'@')
        v = CFSetGetCountOfValue(st, u'd')
        self.assertEqual(v , 0)
        v = CFSetGetCountOfValue(st, u'b')
        self.assertEqual(v , 1)
        self.assertArgHasType(CFSetContainsValue, 1, b'@')
        v = CFSetContainsValue(st, u'd')
        self.assertIs(v, False)
        v = CFSetContainsValue(st, u'b')
        self.assertIs(v, True)
        self.assertResultHasType(CFSetGetValue, b'@')
        self.assertArgHasType(CFSetGetValue, 1, b'@')
        v = CFSetGetValue(st, u'd')
        self.assertIs(v, None)
        v = CFSetGetValue(st, u'b')
        self.assertEqual(v , u'b')
        self.assertResultIsBOOL(CFSetGetValueIfPresent)
        self.assertArgHasType(CFSetGetValueIfPresent, 1, b'@')
        self.assertArgHasType(CFSetGetValueIfPresent, 2, b'o^@')
        present, value = CFSetGetValueIfPresent(st, u'c', None)
        self.assertIs(present, True)
        self.assertEqual(value , u'c')
        values = CFSetGetValues(st, None)
        values = list(values)
        values.sort()
        self.assertEqual(values , [u'a', u'b', u'c'])

    def testApplying(self):
        st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks)
        self.assertIsInstance(st, CFSetRef)
        self.assertIsInstance(st, objc.lookUpClass('NSSet'))
        context = []
        def callback(value, context):
            context.append(value)

        self.assertArgIsFunction(CFSetApplyFunction, 1, b'v@@', False)
        self.assertArgHasType(CFSetApplyFunction, 2, b'@')
        CFSetApplyFunction(st, callback, context)
        self.assertEqual(len(context) , 3)
        context.sort()
        self.assertEqual(context , [u'a', u'b', u'c'])

    def testMutation(self):
        st = CFSetCreate(None, [u"a", u"b", u"c"], 3, kCFTypeSetCallBacks)
        self.assertIsInstance(st, CFSetRef)
        self.assertIsInstance(st, objc.lookUpClass('NSSet'))
        st = CFSetCreateMutableCopy(None, 0, st)
        self.assertIsInstance(st, CFSetRef)
        self.assertEqual(CFSetGetCount(st) , 3)
        self.assertArgHasType(CFSetSetValue, 1, b'@')
        CFSetSetValue(st, 'c')
        self.assertEqual(CFSetGetCount(st) , 3)
        CFSetSetValue(st, 'd')
        self.assertEqual(CFSetGetCount(st) , 4)
        self.assertArgHasType(CFSetRemoveValue, 1, b'@')
        CFSetRemoveValue(st, 'c')
        self.assertEqual(CFSetGetCount(st) , 3)
        CFSetRemoveAllValues(st)
        self.assertEqual(CFSetGetCount(st) , 0)
        self.assertArgHasType(CFSetAddValue, 1, b'@')
        CFSetAddValue(st, 'd')

        self.assertArgHasType(CFSetReplaceValue, 1, b'@')
        CFSetReplaceValue(st, 'd')

if __name__ == "__main__":
    main()