1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3from Foundation import NSCFData 4 5 6class TestData (TestCase): 7 def testTypes(self): 8 self.failUnless(CFDataRef is NSCFData) 9 10 def testTypeID(self): 11 v = CFDataGetTypeID() 12 self.failUnless(v, (int, long)) 13 14 def testCreation(self): 15 self.failUnlessArgHasType(CFDataCreate, 1, 'n^v') 16 self.failUnlessArgSizeInArg(CFDataCreate, 1, 2) 17 data = CFDataCreate(None, "hello", 5) 18 self.failUnless(isinstance(data, CFDataRef)) 19 20 bytes = buffer("hello world") 21 self.failUnlessArgHasType(CFDataCreateWithBytesNoCopy, 1, 'n^v') 22 self.failUnlessArgSizeInArg(CFDataCreateWithBytesNoCopy, 1, 2) 23 data = CFDataCreateWithBytesNoCopy(None, bytes, 5, kCFAllocatorNull) 24 self.failUnless(isinstance(data, CFDataRef)) 25 del data 26 27 data = CFDataCreate(None, "hello", 5) 28 self.failUnless(isinstance(data, CFDataRef)) 29 cpy = CFDataCreateCopy(None, data) 30 self.failUnless(isinstance(cpy, CFDataRef)) 31 32 cpy2 = CFDataCreateMutableCopy(None, 0, data) 33 self.failUnless(isinstance(cpy2, CFDataRef)) 34 35 mut = CFDataCreateMutable(None, 0) 36 self.failUnless(isinstance(mut, CFDataRef)) 37 38 def testInspection(self): 39 data = CFDataCreate(None, "hello", 5) 40 self.failUnless(isinstance(data, CFDataRef)) 41 mutableData = CFDataCreateMutableCopy(None, 0, data) 42 self.failUnless(isinstance(mutableData, CFDataRef)) 43 44 self.failUnless(CFDataGetLength(data) == 5) 45 self.failUnless(CFDataGetLength(mutableData) == 5) 46 47 v = CFDataGetBytePtr(data) 48 self.failUnless(CFDataGetBytePtr(data)[0] == 'h') 49 50 v = CFDataGetMutableBytePtr(mutableData) 51 self.failUnless(v[0] == 'h') 52 v[0] = 'p' 53 54 v = CFDataGetBytePtr(mutableData) 55 self.failUnless(v[0] == 'p') 56 57 self.failUnlessArgHasType(CFDataGetBytes, 2, 'o^v') 58 self.failUnlessArgSizeInArg(CFDataGetBytes, 2, 1) 59 bytes = CFDataGetBytes(data, (1,3), None) 60 self.assertEquals(bytes, 'hello'[1:4]) 61 62 CFDataSetLength(mutableData, 3) 63 self.failUnless(CFDataGetLength(mutableData) == 3) 64 65 CFDataIncreaseLength(mutableData, 17) 66 self.failUnless(CFDataGetLength(mutableData) == 20) 67 CFDataSetLength(mutableData, 3) 68 69 self.failUnlessArgHasType(CFDataAppendBytes, 1, 'n^v') 70 self.failUnlessArgSizeInArg(CFDataAppendBytes, 1, 2) 71 CFDataAppendBytes(mutableData, " world", 6) 72 self.failUnless(CFDataGetLength(mutableData) == 9) 73 self.assertEquals(CFDataGetBytes(mutableData, (0, 9), None), 'pel world') 74 75 self.failUnlessArgHasType(CFDataReplaceBytes, 2, 'n^v') 76 self.failUnlessArgSizeInArg(CFDataReplaceBytes, 2, 3) 77 CFDataReplaceBytes(mutableData, (0, 3), "hello", 5) 78 self.assertEquals(CFDataGetBytes(mutableData, (0, 9), None), 'hello world'[:9]) 79 80 CFDataDeleteBytes(mutableData, (0, 6)) 81 self.assertEquals(CFDataGetBytes(mutableData, (0, 5), None), 'world') 82 83 84if __name__ == "__main__": 85 main() 86