1from CoreFoundation import * 2import unittest 3 4class TestCFTree (unittest.TestCase): 5 def testCreation(self): 6 context = (1,2,3) 7 8 tree = CFTreeCreate(None, context) 9 self.assert_(isinstance(tree, CFTreeRef)) 10 11 for child in ("aap", "noot", "mies"): 12 node = CFTreeCreate(None, child) 13 CFTreeAppendChild(tree, node) 14 15 self.assertEquals(CFTreeGetChildCount(tree), 3) 16 17 def testGetContext(self): 18 context = (1,2,3) 19 20 tree = CFTreeCreate(None, context) 21 self.assert_(isinstance(tree, CFTreeRef)) 22 23 self.assert_(CFTreeGetContext(tree, None) is context) 24 25 26 def testSetContext(self): 27 context = (1,2,3) 28 29 tree = CFTreeCreate(None, context) 30 self.assert_(isinstance(tree, CFTreeRef)) 31 32 CFTreeSetContext(tree, "fubar") 33 self.assertEquals(CFTreeGetContext(tree, None), "fubar") 34 35 def testApplyFunction(self): 36 context = (1,2,3) 37 38 tree = CFTreeCreate(None, context) 39 self.assert_(isinstance(tree, CFTreeRef)) 40 41 for child in ("aap", "noot", "mies"): 42 node = CFTreeCreate(None, child) 43 CFTreeAppendChild(tree, node) 44 45 childvalues = [] 46 contexts = [] 47 48 def function(value, context): 49 childvalues.append(value) 50 contexts.append(context) 51 52 CFTreeApplyFunctionToChildren(tree, function, (42,)) 53 54 self.assertEquals(childvalues, ('aap', 'noot', 'mies')) 55 self.assertEquals(contexts, ((42,), (42,), (42,))) 56 57 def testSortChildren(self): 58 context = (1,2,3) 59 60 tree = CFTreeCreate(None, context) 61 self.assert_(isinstance(tree, CFTreeRef)) 62 63 for child in ("mies", "noot", "aap"): 64 node = CFTreeCreate(None, child) 65 CFTreeAppendChild(tree, node) 66 67 childvalues = [] 68 contexts = [] 69 70 def compare(l, r, context): 71 return cmp(CFTreeGetContext(l), CFTreeGetContext(r)) 72 CFTreeSortChildren(tree, compare, (32,)) 73 74 def function(value, context): 75 childvalues.append(value) 76 contexts.append(context) 77 CFTreeApplyFunctionToChildren(tree, function, (42,)) 78 79 self.assertEquals(childvalues, ('aap', 'noot', 'mies')) 80 self.assertEquals(contexts, ((42,), (42,), (42,))) 81 82if __name__ == "__main__": 83 unittest.main() 84