1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3import sys 4 5try: 6 long 7except NameError: 8 long = int 9 10try: 11 unichr 12except NameError: 13 unichr = chr 14 15 16class TestCharacterSet (TestCase): 17 def testTypes(self): 18 self.assertIsCFType(CFCharacterSetRef) 19 self.assertIsCFType(CFMutableCharacterSetRef) 20 21 def testTypeId(self): 22 v = CFCharacterSetGetTypeID() 23 self.assertIsInstance(v, (int, long)) 24 25 def testCreation(self): 26 set = CFCharacterSetGetPredefined(kCFCharacterSetLetter) 27 self.assertIsInstance(set, CFCharacterSetRef) 28 set = CFCharacterSetCreateWithCharactersInRange(None, (ord('A'), ord('Z')-ord('A'))) 29 self.assertIsInstance(set, CFCharacterSetRef) 30 set = CFCharacterSetCreateWithCharactersInString(None, b"abcdefABCDEF0123456789".decode('latin1')) 31 self.assertIsInstance(set, CFCharacterSetRef) 32 bytes = b"0123" * (8192//4) 33 if sys.version_info[0] == 2: 34 bytes = buffer(bytes) 35 set = CFCharacterSetCreateWithBitmapRepresentation(None, bytes) 36 self.assertIsInstance(set, CFCharacterSetRef) 37 set = CFCharacterSetCreateInvertedSet(None, set) 38 self.assertIsInstance(set, CFCharacterSetRef) 39 set = CFCharacterSetCreateMutable(None) 40 self.assertIsInstance(set, CFCharacterSetRef) 41 set = CFCharacterSetCreateCopy(None, set) 42 self.assertIsInstance(set, CFCharacterSetRef) 43 set = CFCharacterSetCreateMutableCopy(None, set) 44 self.assertIsInstance(set, CFCharacterSetRef) 45 46 def testInspection(self): 47 letters = CFCharacterSetGetPredefined(kCFCharacterSetLetter) 48 digits = CFCharacterSetGetPredefined(kCFCharacterSetDecimalDigit) 49 set = CFCharacterSetCreateWithCharactersInString(None, b"abcdef".decode('latin1')) 50 51 self.assertTrue(CFCharacterSetIsSupersetOfSet(letters, set)) 52 self.assertFalse(CFCharacterSetIsSupersetOfSet(digits, set)) 53 54 self.assertTrue(CFCharacterSetHasMemberInPlane(digits, 0)) 55 self.assertFalse(CFCharacterSetHasMemberInPlane(digits, 4)) 56 57 self.assertTrue(CFCharacterSetIsCharacterMember(letters, b'A'.decode('latin1'))) 58 self.assertFalse(CFCharacterSetIsCharacterMember(letters, b'9'.decode('latin1'))) 59 60 data = CFCharacterSetCreateBitmapRepresentation(None, set) 61 self.assertIsInstance(data, CFDataRef) 62 63 def testInspectLongUnicode(self): 64 letters = CFCharacterSetGetPredefined(kCFCharacterSetLetter) 65 digits = CFCharacterSetGetPredefined(kCFCharacterSetDecimalDigit) 66 self.assertTrue(CFCharacterSetIsLongCharacterMember(letters, ord(b'A'.decode('latin1')))) 67 self.assertFalse(CFCharacterSetIsLongCharacterMember(letters, ord(b'9'.decode('latin1')))) 68 69 def testMutation(self): 70 set = CFCharacterSetCreateWithCharactersInString(None, b"abcdef".decode('latin1')) 71 set = CFCharacterSetCreateMutableCopy(None, set) 72 73 self.assertFalse(CFCharacterSetIsCharacterMember(set, unichr(4))) 74 CFCharacterSetAddCharactersInRange(set, (1, 10)) 75 self.assertTrue(CFCharacterSetIsCharacterMember(set, unichr(4))) 76 77 CFCharacterSetRemoveCharactersInRange(set, (4, 2)) 78 self.assertFalse(CFCharacterSetIsCharacterMember(set, unichr(4))) 79 80 self.assertFalse(CFCharacterSetIsCharacterMember(set, b"5".decode('latin1'))) 81 CFCharacterSetAddCharactersInString(set, b"012345".decode('latin1')) 82 self.assertTrue(CFCharacterSetIsCharacterMember(set, b"5".decode('latin1'))) 83 84 self.assertTrue(CFCharacterSetIsCharacterMember(set, b"a".decode('latin1'))) 85 CFCharacterSetRemoveCharactersInString(set, b"ab".decode('latin1')) 86 self.assertFalse(CFCharacterSetIsCharacterMember(set, b"a".decode('latin1'))) 87 88 self.assertFalse(CFCharacterSetIsCharacterMember(set, b"9".decode('latin1'))) 89 CFCharacterSetUnion(set, CFCharacterSetGetPredefined(kCFCharacterSetDecimalDigit)) 90 self.assertTrue(CFCharacterSetIsCharacterMember(set, b"9".decode('latin1'))) 91 92 CFCharacterSetIntersect(set, CFCharacterSetGetPredefined(kCFCharacterSetLetter)) 93 self.assertFalse(CFCharacterSetIsCharacterMember(set, b"9".decode('latin1'))) 94 95 CFCharacterSetInvert(set) 96 self.assertTrue(CFCharacterSetIsCharacterMember(set, b"9".decode('latin1'))) 97 self.assertFalse(CFCharacterSetIsCharacterMember(set, b"e".decode('latin1'))) 98 99 def testConstants(self): 100 self.assertEqual(kCFCharacterSetControl, 1) 101 self.assertEqual(kCFCharacterSetWhitespace, 2) 102 self.assertEqual(kCFCharacterSetWhitespaceAndNewline, 3) 103 self.assertEqual(kCFCharacterSetDecimalDigit, 4) 104 self.assertEqual(kCFCharacterSetLetter, 5) 105 self.assertEqual(kCFCharacterSetLowercaseLetter, 6) 106 self.assertEqual(kCFCharacterSetUppercaseLetter, 7) 107 self.assertEqual(kCFCharacterSetNonBase, 8) 108 self.assertEqual(kCFCharacterSetDecomposable, 9) 109 self.assertEqual(kCFCharacterSetAlphaNumeric, 10) 110 self.assertEqual(kCFCharacterSetPunctuation, 11) 111 self.assertEqual(kCFCharacterSetCapitalizedLetter, 13) 112 self.assertEqual(kCFCharacterSetSymbol, 14) 113 self.assertEqual(kCFCharacterSetIllegal, 12) 114 115 @min_os_level('10.5') 116 def testConstants10_5(self): 117 self.assertEqual(kCFCharacterSetNewline, 15) 118 119 120if __name__ == "__main__": 121 main() 122