示例#1
0
    def testBSearchValues(self):
        # This method causes a hard crash, reason unclear.
        array = CoreFoundation.CFArrayCreate(
            None, range(20), 20, CoreFoundation.kCFTypeArrayCallBacks)

        self.assertArgHasType(CoreFoundation.CFArrayBSearchValues, 2, b"@")
        self.assertArgIsFunction(CoreFoundation.CFArrayBSearchValues, 3,
                                 b"l@@@", False)
        self.assertArgHasType(CoreFoundation.CFArrayBSearchValues, 4, b"@")

        def compare(l, r, context):
            return cmp(l, r)

        r = CoreFoundation.CFArrayBSearchValues(array, (0, 20), 10, compare,
                                                None)
        self.assertEqual(r, 10)

        r = CoreFoundation.CFArrayBSearchValues(array, (0, 20), 9.5, compare,
                                                None)
        self.assertEqual(r, 10)

        r = CoreFoundation.CFArrayBSearchValues(array, (0, 20), 99, compare,
                                                None)
        self.assertTrue(r >= 20)

        r = CoreFoundation.CFArrayBSearchValues(array, (0, 20), -1, compare,
                                                None)
        self.assertEqual(r, 0)