TreeMixins 0.6 from Frank

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@44528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2007-02-19 20:31:11 +00:00
parent 191406ad84
commit 55ce0bae63
3 changed files with 377 additions and 111 deletions

View File

@@ -1,6 +1,8 @@
import wx, wx.gizmos, wx.lib.customtreectrl, unittest, treemixin
# VirtualTree tests
class VirtualTreeCtrl(treemixin.VirtualTree, wx.TreeCtrl):
def __init__(self, *args, **kwargs):
self.children = {}
@@ -10,8 +12,8 @@ class VirtualTreeCtrl(treemixin.VirtualTree, wx.TreeCtrl):
return 'item %s'%'.'.join([str(index) for index in indices])
def OnGetChildrenCount(self, indices=None):
indices = indices or []
return self.children.get(tuple(indices), 0)
indices = indices or ()
return self.children.get(indices, 0)
def SetChildrenCount(self, indices, childrenCount):
self.children[tuple(indices)] = childrenCount
@@ -27,20 +29,20 @@ class VirtualTreeCtrlTest_NoRootItems(unittest.TestCase):
self.assertEqual(0, self.tree.GetCount())
def testAddTwoRootItems(self):
self.tree.SetChildrenCount([], 2)
self.tree.SetChildrenCount((), 2)
self.tree.RefreshItems()
self.assertEqual(2, self.tree.GetCount())
def testAddOneRootItemAndOneChild(self):
self.tree.SetChildrenCount([], 1)
self.tree.SetChildrenCount([0], 1)
self.tree.SetChildrenCount((), 1)
self.tree.SetChildrenCount((0,), 1)
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(2, self.tree.GetCount())
def testAddOneRootItemAndTwoChildren(self):
self.tree.SetChildrenCount([], 1)
self.tree.SetChildrenCount([0], 2)
self.tree.SetChildrenCount((), 1)
self.tree.SetChildrenCount((0,), 2)
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(3, self.tree.GetCount())
@@ -50,30 +52,31 @@ class VirtualTreeCtrlTest_OneRoot(unittest.TestCase):
def setUp(self):
self.frame = wx.Frame(None)
self.tree = VirtualTreeCtrl(self.frame)
self.tree.SetChildrenCount([], 1)
self.tree.SetChildrenCount((), 1)
self.tree.RefreshItems()
def testOneRoot(self):
self.assertEqual(1, self.tree.GetCount())
def testDeleteRootItem(self):
self.tree.SetChildrenCount([], 0)
self.tree.SetChildrenCount((), 0)
self.tree.RefreshItems()
self.assertEqual(0, self.tree.GetCount())
def testAddOneChild(self):
self.tree.SetChildrenCount([0], 1)
self.tree.SetChildrenCount((0,), 1)
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(2, self.tree.GetCount())
def testAddTwoChildren(self):
self.tree.SetChildrenCount([0], 2)
self.tree.SetChildrenCount((0,), 2)
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(3, self.tree.GetCount())
# TreeAPIHarmonizer tests
class TreeAPIHarmonizerTestCase(unittest.TestCase):
style = wx.TR_DEFAULT_STYLE
@@ -140,21 +143,24 @@ class TreeAPIHarmonizerMultipleSelectionTests(object):
self.assertEqual([self.item], self.tree.GetSelections())
def testGetSelections_TwoSelectedItems(self):
self.tree.UnselectAll()
item2 = self.tree.AppendItem(self.root, 'item 2')
self.tree.SelectItem(self.item)
self.tree.ExpandAll()
self.tree.UnselectAll()
self.tree.SelectItem(item2)
self.tree.SelectItem(self.item)
self.assertEqual([self.item, item2], self.tree.GetSelections())
class TreeAPIHarmonizerWithTreeCtrlTestCase(TreeAPIHarmonizerTestCase):
TreeClass = wx.TreeCtrl
class TreeAPIHarmonizerWithTreeCtrl_SingleSelection( \
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerSingleSelectionTests,
TreeAPIHarmonizerWithTreeCtrlTestCase):
pass
class TreeAPIHarmonizerWithTreeCtrl_MultipleSelection( \
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerMultipleSelectionTests,
TreeAPIHarmonizerWithTreeCtrlTestCase):
@@ -213,6 +219,7 @@ class TreeAPIHarmonizerCustomTreeCtrlTests(object):
def testGetRadioItemType(self):
item = self.tree.AppendItem(self.root, 'item', ct_type=2)
self.assertEqual(2, self.tree.GetItemType(item))
class TreeAPIHarmonizerWithCustomTreeCtrl_SingleSelection( \
@@ -226,9 +233,127 @@ class TreeAPIHarmonizerWithCustomTreeCtrl_MultipleSelection( \
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerMultipleSelectionTests,
TreeAPIHarmonizerCustomTreeCtrlTests,
TreeAPIHarmonizerWithCustomTreeCtrlTestCase):
pass
# ExpansionState tests
class ExpansionStateTreeCtrl(treemixin.ExpansionState, wx.TreeCtrl):
pass
class GetExpansionStateTestCase(unittest.TestCase):
def setUp(self):
self.frame = wx.Frame(None)
self.tree = ExpansionStateTreeCtrl(self.frame)
def testEmptyTree(self):
self.assertEqual([], self.tree.GetExpansionState())
def testRoot(self):
self.tree.AddRoot('Root item')
self.assertEqual([], self.tree.GetExpansionState())
def testRoot_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
self.assertEqual([], self.tree.GetExpansionState())
def testExpandedRoot_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
self.tree.Expand(root)
self.assertEqual([()], self.tree.GetExpansionState())
def testExpandedRoot_Child_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
grandChild = self.tree.AppendItem(child, 'Grandchild')
self.tree.Expand(root)
# Property should work too:
self.assertEqual([()], self.tree.ExpansionState)
def testRoot_ExpandedChild_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
grandChild = self.tree.AppendItem(child, 'Grandchild')
self.tree.Expand(child)
self.assertEqual([], self.tree.GetExpansionState())
def testExpandedRoot_ExpandedChild_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
grandChild = self.tree.AppendItem(child, 'Grandchild')
self.tree.Expand(child)
self.tree.Expand(root)
self.assertEqual([(), (0,)], self.tree.GetExpansionState())
def testExpandedRoot_ExpandedChild_ExpandedChild(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
grandChild = self.tree.AppendItem(child, 'Grandchild')
grandGrandChild = self.tree.AppendItem(grandChild, 'Grandgrandchild')
self.tree.Expand(root)
self.tree.Expand(child)
self.tree.Expand(grandChild)
self.assertEqual([(), (0,), (0,0)], self.tree.GetExpansionState())
class SetExpansionStateTestCase(unittest.TestCase):
def setUp(self):
self.frame = wx.Frame(None)
self.tree = ExpansionStateTreeCtrl(self.frame)
def testEmptyTree(self):
self.tree.SetExpansionState([])
def testRoot(self):
root = self.tree.AddRoot('Root item')
self.tree.SetExpansionState([])
self.failIf(self.tree.IsExpanded(root))
def testRoot_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
self.tree.SetExpansionState([])
self.failIf(self.tree.IsExpanded(root))
def testExpandedRoot_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
self.tree.ExpansionState = [()] # Property should work too
self.failUnless(self.tree.IsExpanded(root))
def testExpandedRoot_Child_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
grandChild = self.tree.AppendItem(child, 'Grandchild')
self.tree.SetExpansionState([()])
self.failIf(self.tree.IsExpanded(child))
def testExpandedRoot_ExpandedChild_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
grandChild = self.tree.AppendItem(child, 'Grandchild')
self.tree.SetExpansionState([(), (0,)])
self.failUnless(self.tree.IsExpanded(child))
def testRoot_ExpandedChild_Child(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
grandChild = self.tree.AppendItem(child, 'Grandchild')
self.tree.SetExpansionState([(0,)])
self.failIf(self.tree.IsExpanded(child))
def testExpandedRoot_ExpandedChild_ExpandedChild(self):
root = self.tree.AddRoot('Root item')
child = self.tree.AppendItem(root, 'Child')
grandChild = self.tree.AppendItem(child, 'Grandchild')
grandGrandChild = self.tree.AppendItem(grandChild, 'Grandgrandchild')
self.tree.SetExpansionState([(), (0,), (0,0)])
self.failUnless(self.tree.IsExpanded(grandChild))
if __name__ == '__main__':
app = wx.App(False)