1from PyObjCTools.TestSupport import * 2import re 3from CoreFoundation import * 4 5 6class TestCFUUIDAPI (TestCase): 7 def testTypes(self): 8 self.assertIsCFType(CFUUIDRef) 9 10 def testTypeID(self): 11 v = CFUUIDGetTypeID() 12 self.assertIsInstance(v, (int, long)) 13 def testCreate(self): 14 15 self.assertResultIsCFRetained(CFUUIDCreate) 16 uuid = CFUUIDCreate(None) 17 self.assertIsNot(uuid, None) 18 self.assertIsInstance(uuid, CFUUIDRef) 19 text = CFUUIDCreateString(None, uuid) 20 self.assertIsInstance(text, unicode) 21 m = re.match('^[0-9A-Z]{8}(-[0-9A-Z]{4}){3}-[0-9A-Z]{12}$', text) 22 self.assertIsNot(m, None ) 23 def testCreateWithBytes(self): 24 self.assertResultIsCFRetained(CFUUIDCreateWithBytes) 25 uuid = CFUUIDCreateWithBytes(None, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) 26 self.assertIsNot(uuid, None) 27 self.assertIsInstance(uuid, CFUUIDRef) 28 self.assertResultIsCFRetained(CFUUIDCreateString) 29 text = CFUUIDCreateString(None, uuid) 30 self.assertEqual(text , u'01020304-0506-0708-090A-0B0C0D0E0F10') 31 self.assertRaises(ValueError, CFUUIDCreateWithBytes, None, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 300) 32 self.assertRaises(ValueError, CFUUIDCreateWithBytes, None, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 300, 16) 33 34 def testCreateFromString(self): 35 self.assertResultIsCFRetained(CFUUIDCreateFromString) 36 uuid1 = CFUUIDCreateFromString(None, u'01020304-0506-0708-090A-0B0C0D0E0F10') 37 self.assertIsNot(uuid1, None) 38 self.assertIsInstance(uuid1, CFUUIDRef) 39 text = CFUUIDCreateString(None, uuid1) 40 self.assertEqual(text , u'01020304-0506-0708-090A-0B0C0D0E0F10') 41 uuid2 = CFUUIDCreateFromString(None, u'01020304-0506-0708-090A-0B0C0D0E0F10') 42 text = CFUUIDCreateString(None, uuid2) 43 self.assertEqual(text , u'01020304-0506-0708-090A-0B0C0D0E0F10') 44 # CFUUID interns values 45 self.assertIs(uuid1, uuid2) 46 def testGetBytes(self): 47 uuid = CFUUIDCreateWithBytes(None, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) 48 self.assertIsNot(uuid, None) 49 self.assertIsInstance(uuid, CFUUIDRef) 50 bytes = CFUUIDGetUUIDBytes(uuid) 51 self.assertIsInstance(bytes, CFUUIDBytes) 52 self.assertEqual(bytes.byte0 , 1) 53 self.assertEqual(bytes.byte1 , 2) 54 self.assertEqual(bytes.byte2 , 3) 55 self.assertEqual(bytes.byte3 , 4) 56 self.assertEqual(bytes.byte4 , 5) 57 self.assertEqual(bytes.byte5 , 6) 58 self.assertEqual(bytes.byte6 , 7) 59 self.assertEqual(bytes.byte7 , 8) 60 self.assertEqual(bytes.byte8 , 9) 61 self.assertEqual(bytes.byte9 , 10) 62 self.assertEqual(bytes.byte10 , 11) 63 self.assertEqual(bytes.byte11 , 12) 64 self.assertEqual(bytes.byte12 , 13) 65 self.assertEqual(bytes.byte13 , 14) 66 self.assertEqual(bytes.byte14 , 15) 67 self.assertEqual(bytes.byte15 , 16) 68 def testConstant(self): 69 # This is an interesting one, the result of 70 # CFUUIDGetConstantUUIDWithBytes should not be released. 71 72 uuid = CFUUIDGetConstantUUIDWithBytes(None, *range(16)) 73 CFRetain(CFUUIDGetConstantUUIDWithBytes) # Ensure the value won't be released. 74 self.assertIsNot(uuid, None) 75 self.assertIsInstance(uuid, CFUUIDRef) 76 s = CFUUIDCreateString(None, uuid) 77 78 uuid = None 79 del uuid 80 81 uuid = CFUUIDGetConstantUUIDWithBytes(None, *range(16)) 82 self.assertIsNot(uuid, None) 83 self.assertIsInstance(uuid, CFUUIDRef) 84 t = CFUUIDCreateString(None, uuid) 85 86 self.assertEqual(s , t) 87 def testCreateFromUUIDBytes(self): 88 bytes = CFUUIDBytes(*range(16, 32)) 89 uuid = CFUUIDCreateFromUUIDBytes(None, bytes) 90 91 self.assertIsNot(uuid, None) 92 self.assertIsInstance(uuid, CFUUIDRef) 93 text = CFUUIDCreateString(None, uuid) 94 self.assertEqual(text , u'10111213-1415-1617-1819-1A1B1C1D1E1F' ) 95 def testStructs(self): 96 o = CFUUIDBytes() 97 self.assertHasAttr(o, 'byte0') 98 self.assertHasAttr(o, 'byte1') 99 self.assertHasAttr(o, 'byte2') 100 self.assertHasAttr(o, 'byte3') 101 self.assertHasAttr(o, 'byte4') 102 self.assertHasAttr(o, 'byte5') 103 self.assertHasAttr(o, 'byte6') 104 self.assertHasAttr(o, 'byte7') 105 self.assertHasAttr(o, 'byte8') 106 self.assertHasAttr(o, 'byte9') 107 self.assertHasAttr(o, 'byte10') 108 self.assertHasAttr(o, 'byte11') 109 self.assertHasAttr(o, 'byte12') 110 self.assertHasAttr(o, 'byte13') 111 self.assertHasAttr(o, 'byte14') 112 self.assertHasAttr(o, 'byte15') 113if __name__ == "__main__": 114 main() 115