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