Source

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

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()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.