1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3 4 5class TestStringTokenizer (TestCase): 6 def testTypes(self): 7 self.failUnlessIsCFType(CFStringTokenizerRef) 8 9 def testFunctions(self): 10 s = u"Spring eens over een boom" 11 v = CFStringTokenizerCopyBestStringLanguage(s, (0, len(s))) 12 self.assertEquals(v, 'nl') 13 14 v = CFStringTokenizerGetTypeID() 15 self.failUnless(isinstance(v, (int, long))) 16 17 self.failUnlessResultIsCFRetained(CFStringTokenizerCreate) 18 tok = CFStringTokenizerCreate( 19 None, s, (0, len(s)), kCFStringTokenizerUnitWord, 20 CFLocaleCopyCurrent()) 21 self.failUnless(isinstance(tok, CFStringTokenizerRef)) 22 23 v = CFStringTokenizerGoToTokenAtIndex(tok, 2) 24 self.assertEquals(v, kCFStringTokenizerTokenNormal) 25 26 v = CFStringTokenizerGetCurrentTokenRange(tok) 27 self.assertEquals(v, CFRange(0, 6)) 28 29 v = CFStringTokenizerAdvanceToNextToken(tok) 30 self.assertEquals(v, kCFStringTokenizerTokenNormal) 31 32 v = CFStringTokenizerGetCurrentTokenRange(tok) 33 self.assertEquals(v, CFRange(7, 4)) 34 35 self.failUnlessResultIsCFRetained(CFStringTokenizerCopyCurrentTokenAttribute) 36 v = CFStringTokenizerCopyCurrentTokenAttribute(tok, kCFStringTokenizerAttributeLanguage) 37 self.failUnless(v is None) 38 39 40 s = u"A dog jumped over a log. And then some more." 41 CFStringTokenizerSetString(tok, s, (0, len(s))) 42 43 subref = [] 44 idx, ranges = CFStringTokenizerGetCurrentSubTokens(tok, None, 20, subref) 45 self.assertEquals(idx, 0) 46 self.assertEquals(ranges, ()) 47 self.assertEquals(subref, []) 48 49 50 51 def testConstants(self): 52 53 self.failUnless( kCFStringTokenizerUnitWord == 0 ) 54 self.failUnless( kCFStringTokenizerUnitSentence == 1 ) 55 self.failUnless( kCFStringTokenizerUnitParagraph == 2 ) 56 self.failUnless( kCFStringTokenizerUnitLineBreak == 3 ) 57 self.failUnless( kCFStringTokenizerUnitWordBoundary == 4 ) 58 self.failUnless( kCFStringTokenizerAttributeLatinTranscription == 1L << 16 ) 59 self.failUnless( kCFStringTokenizerAttributeLanguage == 1L << 17 ) 60 61 self.failUnless( kCFStringTokenizerTokenNone == 0 ) 62 self.failUnless( kCFStringTokenizerTokenNormal == 1 ) 63 self.failUnless( kCFStringTokenizerTokenHasSubTokensMask == 1L << 1 ) 64 self.failUnless( kCFStringTokenizerTokenHasDerivedSubTokensMask == 1L << 2 ) 65 self.failUnless( kCFStringTokenizerTokenHasHasNumbersMask == 1L << 3 ) 66 self.failUnless( kCFStringTokenizerTokenHasNonLettersMask == 1L << 4 ) 67 self.failUnless( kCFStringTokenizerTokenIsCJWordMask == 1L << 5 ) 68 69 70if __name__ == "__main__": 71 main() 72