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