def testMutableCopy(self):
     val = CoreFoundation.CFAttributedStringCreateMutable(None, 0)
     self.assertIsInstance(val, CoreFoundation.CFAttributedStringRef)
     orig = CoreFoundation.CFAttributedStringCreate(None, "hello", {
         "foo": 42,
         "bar": "baz"
     })
     self.assertIsInstance(orig, CoreFoundation.CFAttributedStringRef)
     val = CoreFoundation.CFAttributedStringCreateMutableCopy(None, 0, orig)
     self.assertIsInstance(orig, CoreFoundation.CFAttributedStringRef)
     self.assertIsNot(val, orig)
     CoreFoundation.CFAttributedStringReplaceString(val, (0, 3), "Hal")
     dta = CoreFoundation.CFAttributedStringGetString(val)
     self.assertEqual(dta, "Hallo")
     v = CoreFoundation.CFAttributedStringGetMutableString(val)
     self.assertIs(v, None)
     CoreFoundation.CFAttributedStringSetAttributes(val, (0, 2),
                                                    {"ronald": 99}, False)
     v, rng = CoreFoundation.CFAttributedStringGetAttributes(val, 1, None)
     self.assertEqual(v, {"ronald": 99, "foo": 42, "bar": "baz"})
     self.assertEqual(rng, (0, 2))
     v, rng = CoreFoundation.CFAttributedStringGetAttributes(val, 3, None)
     self.assertEqual(v, {"foo": 42, "bar": "baz"})
     self.assertEqual(rng, (2, 3))
     self.assertIsInstance(rng, CoreFoundation.CFRange)
     CoreFoundation.CFAttributedStringSetAttributes(val, (0, 2),
                                                    {"ronald": 99}, True)
     v, rng = CoreFoundation.CFAttributedStringGetAttributes(val, 1, None)
     self.assertEqual(v, {"ronald": 99})
     self.assertEqual(rng, (0, 2))
     CoreFoundation.CFAttributedStringSetAttribute(val, (1, 3), "color",
                                                   "blue")
     v, rng = CoreFoundation.CFAttributedStringGetAttributes(val, 1, None)
     self.assertEqual(v, {"ronald": 99, "color": "blue"})
     self.assertEqual(rng, (1, 1))
     CoreFoundation.CFAttributedStringRemoveAttribute(val, (1, 3), "color")
     v, rng = CoreFoundation.CFAttributedStringGetAttributes(val, 3, None)
     self.assertEqual(v, {"foo": 42, "bar": "baz"})
     self.assertEqual(rng, (2, 2))
     rep = CoreFoundation.CFAttributedStringCreate(None, "dummy",
                                                   {"attrib": 99})
     CoreFoundation.CFAttributedStringReplaceAttributedString(
         val, (1, 3), rep)
     self.assertEqual(CoreFoundation.CFAttributedStringGetString(val),
                      "Hdummyo")
 def testGetting(self):
     val = CoreFoundation.CFAttributedStringCreate(
         None,
         b"hello".decode("ascii"),
         {
             b"foo".decode("ascii"): 42,
             b"bar".decode("ascii"): b"baz"
         },
     )
     self.assertIsInstance(val, CoreFoundation.CFAttributedStringRef)
     dta = CoreFoundation.CFAttributedStringGetString(val)
     self.assertEqual(dta, b"hello".decode("ascii"))
     length = CoreFoundation.CFAttributedStringGetLength(val)
     self.assertEqual(length, 5)
     v, rng = CoreFoundation.CFAttributedStringGetAttributes(val, 1, None)
     self.assertEqual(v, {
         b"foo".decode("ascii"): 42,
         b"bar".decode("ascii"): b"baz"
     })
     self.assertEqual(rng, (0, 5))
     v, rng = CoreFoundation.CFAttributedStringGetAttributes(
         val, 1, objc.NULL)
     self.assertEqual(v, {
         b"foo".decode("ascii"): 42,
         b"bar".decode("ascii"): b"baz"
     })
     self.assertEqual(rng, objc.NULL)
     v, rng = CoreFoundation.CFAttributedStringGetAttribute(
         val, 1, b"foo".decode("ascii"), None)
     self.assertEqual(v, 42)
     self.assertEqual(rng, (0, 5))
     v, rng = CoreFoundation.CFAttributedStringGetAttribute(
         val, 1, b"foo".decode("ascii"), objc.NULL)
     self.assertEqual(v, 42)
     self.assertEqual(rng, objc.NULL)
     v, rng = CoreFoundation.CFAttributedStringGetAttributesAndLongestEffectiveRange(
         val, 1, (0, 5), None)
     self.assertEqual(v, {
         b"foo".decode("ascii"): 42,
         b"bar".decode("ascii"): b"baz"
     })
     self.assertEqual(rng, (0, 5))
     v, rng = CoreFoundation.CFAttributedStringGetAttributesAndLongestEffectiveRange(
         val, 1, (0, 5), objc.NULL)
     self.assertEqual(v, {
         b"foo".decode("ascii"): 42,
         b"bar".decode("ascii"): b"baz"
     })
     self.assertEqual(rng, objc.NULL)
     v, rng = CoreFoundation.CFAttributedStringGetAttributeAndLongestEffectiveRange(
         val, 1, b"bar".decode("ascii"), (0, 5), None)
     self.assertEqual(v, b"baz")
     self.assertEqual(rng, (0, 5))
     v, rng = CoreFoundation.CFAttributedStringGetAttributeAndLongestEffectiveRange(
         val, 1, b"bar".decode("ascii"), (0, 5), objc.NULL)
     self.assertEqual(v, b"baz")
     self.assertEqual(rng, objc.NULL)
 def testCreate(self):
     val = CoreFoundation.CFAttributedStringCreate(
         None, b"hello".decode("ascii"), {b"foo".decode("ascii"): 42})
     self.assertIsInstance(val, CoreFoundation.CFAttributedStringRef)
     val = CoreFoundation.CFAttributedStringCreateWithSubstring(
         None, val, (1, 2))
     self.assertIsInstance(val, CoreFoundation.CFAttributedStringRef)
     val2 = CoreFoundation.CFAttributedStringCreateCopy(None, val)
     self.assertIs(val2, val)