1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3from Foundation import NSCFAttributedString 4 5 6class TestAttributedString (TestCase): 7 def testTypes(self): 8 self.failUnless( CFAttributedStringRef is NSCFAttributedString ) 9 self.failUnless( CFMutableAttributedStringRef is NSCFAttributedString ) 10 11 def testTypeID(self): 12 v = CFAttributedStringGetTypeID() 13 self.failUnless( isinstance(v, (int, long)) ) 14 15 def testCreate(self): 16 val = CFAttributedStringCreate(None, u"hello", {u'foo': 42}) 17 self.failUnless( isinstance(val, CFAttributedStringRef) ) 18 19 val = CFAttributedStringCreateWithSubstring(None, val, (1,2)) 20 self.failUnless( isinstance(val, CFAttributedStringRef) ) 21 22 val2 = CFAttributedStringCreateCopy(None, val) 23 self.failUnless(val2 is val) 24 25 def testGetting(self): 26 val = CFAttributedStringCreate(None, u"hello", {u'foo': 42, u'bar':'baz'}) 27 self.failUnless( isinstance(val, CFAttributedStringRef) ) 28 29 dta = CFAttributedStringGetString(val) 30 self.failUnless( dta == u"hello" ) 31 32 l = CFAttributedStringGetLength(val) 33 self.failUnless( l == 5 ) 34 35 v, rng = CFAttributedStringGetAttributes(val, 1, None) 36 self.failUnless( v == {u'foo': 42, u'bar': 'baz' } ) 37 self.failUnless( rng == (0, 5) ) 38 39 v, rng = CFAttributedStringGetAttributes(val, 1, objc.NULL) 40 self.failUnless( v == {u'foo': 42, u'bar': 'baz' } ) 41 self.failUnless( rng == objc.NULL ) 42 43 v, rng = CFAttributedStringGetAttribute(val, 1, u"foo", None) 44 self.failUnless( v == 42 ) 45 self.failUnless( rng == (0, 5) ) 46 47 v, rng = CFAttributedStringGetAttribute(val, 1, u"foo", objc.NULL) 48 self.failUnless( v == 42 ) 49 self.failUnless( rng == objc.NULL ) 50 51 v, rng = CFAttributedStringGetAttributesAndLongestEffectiveRange(val, 1, (0,5), None) 52 self.failUnless( v == {u'foo': 42, u'bar': 'baz' } ) 53 self.failUnless( rng == (0, 5) ) 54 55 v, rng = CFAttributedStringGetAttributesAndLongestEffectiveRange(val, 1, (0,5), objc.NULL) 56 self.failUnless( v == {u'foo': 42, u'bar': 'baz' } ) 57 self.failUnless( rng == objc.NULL ) 58 59 v, rng = CFAttributedStringGetAttributeAndLongestEffectiveRange(val, 1, u'bar', (0,5), None) 60 self.failUnless( v == 'baz' ) 61 self.failUnless( rng == (0, 5) ) 62 63 v, rng = CFAttributedStringGetAttributeAndLongestEffectiveRange(val, 1, u'bar', (0,5), objc.NULL) 64 self.failUnless( v == 'baz' ) 65 self.failUnless( rng == objc.NULL ) 66 67 68 def testMutableCopy(self): 69 val = CFAttributedStringCreateMutable(None, 0) 70 self.failUnless( isinstance(val, CFAttributedStringRef) ) 71 72 orig = CFAttributedStringCreate(None, u"hello", {u'foo': 42, u'bar':'baz'}) 73 self.failUnless( isinstance(orig, CFAttributedStringRef) ) 74 75 val = CFAttributedStringCreateMutableCopy(None, 0, orig) 76 self.failUnless( isinstance(orig, CFAttributedStringRef) ) 77 self.failIf( val is orig) 78 79 CFAttributedStringReplaceString(val, (0,3), "Hal") 80 dta = CFAttributedStringGetString(val) 81 self.failUnless( dta == u"Hallo" ) 82 83 v = CFAttributedStringGetMutableString(val) 84 self.failUnless( v is None ) 85 86 87 CFAttributedStringSetAttributes(val, (0, 2), {u'ronald':99}, False) 88 v, rng = CFAttributedStringGetAttributes(val, 1, None) 89 self.failUnless( v == {u'ronald':99, u'foo': 42, u'bar': 'baz' } ) 90 self.failUnless( rng == (0, 2) ) 91 92 v, rng = CFAttributedStringGetAttributes(val, 3, None) 93 self.failUnless( v == {u'foo': 42, u'bar': 'baz' } ) 94 self.failUnless( rng == (2, 3) ) 95 self.failUnless( isinstance(rng, CFRange) ) 96 97 CFAttributedStringSetAttributes(val, (0, 2), {u'ronald':99}, True) 98 v, rng = CFAttributedStringGetAttributes(val, 1, None) 99 self.failUnless( v == {u'ronald':99} ) 100 self.failUnless( rng == (0, 2) ) 101 102 CFAttributedStringSetAttribute(val, (1, 3), u'color', u'blue') 103 v, rng = CFAttributedStringGetAttributes(val, 1, None) 104 self.failUnless( v == {u'ronald':99, u'color':u'blue'} ) 105 self.failUnless( rng == (1, 1) ) 106 107 108 CFAttributedStringRemoveAttribute(val, (1,3), u'color') 109 v, rng = CFAttributedStringGetAttributes(val, 3, None) 110 self.failUnless( v == {u'foo': 42, u'bar': 'baz' } ) 111 self.failUnless( rng == (2, 2) ) 112 113 rep = CFAttributedStringCreate(None, "dummy", {u'attrib': 99} ) 114 CFAttributedStringReplaceAttributedString(val, (1,3), rep) 115 self.failUnless( CFAttributedStringGetString(val) == u'Hdummyo') 116 117 def testEditing(self): 118 val = CFAttributedStringCreateMutable(None, 0) 119 self.failUnless( isinstance(val, CFAttributedStringRef) ) 120 121 CFAttributedStringBeginEditing(val) 122 CFAttributedStringEndEditing(val) 123 124if __name__ == "__main__": 125 main() 126