Files
wxWidgets/wxPython/tests/TreeMixinTest.py
2007-03-19 16:02:51 +00:00

777 lines
26 KiB
Python

import wx, wx.gizmos, wx.lib.customtreectrl, unittest, treemixin
# VirtualTree tests
class TreeCtrl(object):
def __init__(self, *args, **kwargs):
self.children = {}
self.font = {}
self.colour = {}
self.bgcolour = {}
self.image = {}
self.type = {}
self.checked = {}
super(TreeCtrl, self).__init__(*args, **kwargs)
def OnGetItemFont(self, index):
return self.font.get(index, wx.NullFont)
def PrepareItemFont(self, index, font):
self.font[index] = font
def OnGetItemTextColour(self, index):
return self.colour.get(index, wx.NullColour)
def PrepareItemColour(self, index, colour):
self.colour[index] = colour
def OnGetItemBackgroundColour(self, index):
return self.bgcolour.get(index, wx.NullColour)
def PrepareItemBackgroundColour(self, index, colour):
self.bgcolour[index] = colour
def OnGetItemImage(self, index, which):
return self.image.get(index, -1)
def PrepareImage(self, index, imageIndex):
self.image[index] = imageIndex
def OnGetItemType(self, index):
return self.type.get(index, 0)
def PrepareType(self, index, itemType):
self.type[index] = itemType
def OnGetItemChecked(self, index):
return self.checked.get(index, False)
def PrepareChecked(self, index, checked):
self.checked[index] = checked
class VirtualTreeCtrlWithTreeIndices(TreeCtrl, treemixin.VirtualTree,
wx.lib.customtreectrl.CustomTreeCtrl):
def __init__(self, *args, **kwargs):
kwargs['tupleIndex'] = True
super(VirtualTreeCtrlWithTreeIndices, self).__init__(*args, **kwargs)
def OnGetItemText(self, indices):
return 'item %s'%'.'.join([str(index) for index in indices])
def OnGetChildrenCount(self, index=None):
index = index or ()
return self.children.get(index, 0)
def PrepareChildrenCount(self, index, childrenCount):
self.children[index] = childrenCount
class VirtualTreeCtrlWithListIndices(TreeCtrl, treemixin.VirtualTree,
wx.lib.customtreectrl.CustomTreeCtrl):
def __init__(self, *args, **kwargs):
kwargs['tupleIndex'] = False
super(VirtualTreeCtrlWithListIndices, self).__init__(*args, **kwargs)
def OnGetItemText(self, index):
return 'item %d'%index
def OnGetChildrenIndices(self, index=None):
return self.children.get(index, [])
def PrepareChildrenIndices(self, index, indices):
self.children[index] = indices
class VirtualTreeCtrlTestWithTreeIndices_NoRootItems(unittest.TestCase):
def setUp(self):
self.frame = wx.Frame(None)
self.tree = VirtualTreeCtrlWithTreeIndices(self.frame)
self.tree.RefreshItems()
def testNoRootItems(self):
self.assertEqual(0, self.tree.GetCount())
def testAddTwoRootItems(self):
self.tree.PrepareChildrenCount((), 2)
self.tree.RefreshItems()
self.assertEqual(2, self.tree.GetCount())
def testAddOneRootItemAndOneChild(self):
self.tree.PrepareChildrenCount((), 1)
self.tree.PrepareChildrenCount((0,), 1)
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(2, self.tree.GetCount())
def testAddOneRootItemAndTwoChildren(self):
self.tree.PrepareChildrenCount((), 1)
self.tree.PrepareChildrenCount((0,), 2)
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(3, self.tree.GetCount())
class VirtualTreeCtrlWithListIndicesTest_NoRootItems(unittest.TestCase):
def setUp(self):
self.frame = wx.Frame(None)
self.tree = VirtualTreeCtrlWithListIndices(self.frame)
self.tree.RefreshItems()
def testNoRootItems(self):
self.assertEqual(0, self.tree.GetCount())
def testAddTwoRootItems(self):
self.tree.PrepareChildrenIndices(None, [0,1])
self.tree.RefreshItems()
self.assertEqual(2, self.tree.GetCount())
def testAddOneRootItemAndOneChild(self):
self.tree.PrepareChildrenIndices(None, [0])
self.tree.PrepareChildrenIndices(0, [1])
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(2, self.tree.GetCount())
def testAddOneRootItemAndTwoChildren(self):
self.tree.PrepareChildrenIndices(None, [0])
self.tree.PrepareChildrenIndices(0, [1,2])
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(3, self.tree.GetCount())
class VirtualTreeCtrlTestWithTreeIndices_OneRoot(unittest.TestCase):
def setUp(self):
self.frame = wx.Frame(None)
self.tree = VirtualTreeCtrlWithTreeIndices(self.frame)
self.tree.PrepareChildrenCount((), 1)
self.tree.RefreshItems()
def testOneRoot(self):
self.assertEqual(1, self.tree.GetCount())
def testDeleteRootItem(self):
self.tree.PrepareChildrenCount((), 0)
self.tree.RefreshItems()
self.assertEqual(0, self.tree.GetCount())
def testAddOneChild(self):
self.tree.PrepareChildrenCount((0,), 1)
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(2, self.tree.GetCount())
def testAddTwoChildren(self):
self.tree.PrepareChildrenCount((0,), 2)
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(3, self.tree.GetCount())
def testChangeFont(self):
self.tree.PrepareItemFont((0,), wx.SMALL_FONT)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.assertEqual(wx.SMALL_FONT, self.tree.GetItemFont(item))
def testChangeColour(self):
self.tree.PrepareItemColour((0,), wx.RED)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.assertEqual(wx.RED, self.tree.GetItemTextColour(item))
def testChangeBackgroundColour(self):
self.tree.PrepareItemBackgroundColour((0,), wx.RED)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.assertEqual(wx.RED, self.tree.GetItemBackgroundColour(item))
def testChangeImage(self):
self.tree.PrepareImage((0,), 0)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.assertEqual(0, self.tree.GetItemImage(item))
def testChangeType(self):
self.tree.PrepareType((0,), 2)
self.tree.PrepareChecked((0,), True)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.failUnless(self.tree.IsItemChecked(item))
class VirtualTreeCtrlWithListIndicesTest_OneRoot(unittest.TestCase):
def setUp(self):
self.frame = wx.Frame(None)
self.tree = VirtualTreeCtrlWithListIndices(self.frame)
self.tree.PrepareChildrenIndices(None, [0])
self.tree.RefreshItems()
def testOneRoot(self):
self.assertEqual(1, self.tree.GetCount())
def testDeleteRootItem(self):
self.tree.PrepareChildrenIndices(None, [])
self.tree.RefreshItems()
self.assertEqual(0, self.tree.GetCount())
def testAddOneChild(self):
self.tree.PrepareChildrenIndices(0, [1])
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(2, self.tree.GetCount())
def testAddTwoChildren(self):
self.tree.PrepareChildrenIndices(0, [1,2])
self.tree.RefreshItems()
self.tree.ExpandAll()
self.assertEqual(3, self.tree.GetCount())
def testChangeFont(self):
self.tree.PrepareItemFont(0, wx.SMALL_FONT)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.assertEqual(wx.SMALL_FONT, self.tree.GetItemFont(item))
def testChangeColour(self):
self.tree.PrepareItemColour(0, wx.RED)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.assertEqual(wx.RED, self.tree.GetItemTextColour(item))
def testChangeBackgroundColour(self):
self.tree.PrepareItemBackgroundColour(0, wx.RED)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.assertEqual(wx.RED, self.tree.GetItemBackgroundColour(item))
def testChangeImage(self):
self.tree.PrepareImage(0, 0)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.assertEqual(0, self.tree.GetItemImage(item))
def testChangeType(self):
self.tree.PrepareType(0, 2)
self.tree.PrepareChecked(0, True)
self.tree.RefreshItems()
item, cookie = self.tree.GetFirstChild(self.tree.GetRootItem())
self.failUnless(self.tree.IsItemChecked(item))
# TreeAPIHarmonizer tests
class TreeAPIHarmonizerTestCase(unittest.TestCase):
style = wx.TR_DEFAULT_STYLE
def setUp(self):
self.frame = wx.Frame(None)
class HarmonizedTreeCtrl(treemixin.TreeAPIHarmonizer, self.TreeClass):
pass
self.tree = HarmonizedTreeCtrl(self.frame, style=self.style)
self.populateTree()
def populateTree(self):
self.root = self.tree.AddRoot('Root')
self.item = self.tree.AppendItem(self.root, 'Item')
self.items = [self.root, self.item]
class TreeAPIHarmonizerCommonTests(object):
''' Tests that should succeed for all tree controls and all styles. '''
def testGetItemType(self):
self.assertEqual(0, self.tree.GetItemType(self.item))
def testGetItemImage_DefaultIcon(self):
self.assertEqual(-1, self.tree.GetItemImage(self.item))
def testGetItemImage_SelectedIcon(self):
self.assertEqual(-1,
self.tree.GetItemImage(self.item, wx.TreeItemIcon_Selected))
def testGetItemImage_DefaultIcon_OtherColumn(self):
self.assertEqual(-1, self.tree.GetItemImage(self.item, column=1))
def testGetItemImage_SelectedIcon_OtherColumn(self):
self.assertEqual(-1,
self.tree.GetItemImage(self.item, wx.TreeItemIcon_Selected, 1))
def testSetItemImage_DefaultIcon(self):
self.tree.SetItemImage(self.item, -1)
self.assertEqual(-1, self.tree.GetItemImage(self.item))
def testSetItemImage_SelectedIcon(self):
self.tree.SetItemImage(self.item, -1, wx.TreeItemIcon_Selected)
self.assertEqual(-1,
self.tree.GetItemImage(self.item, wx.TreeItemIcon_Selected))
def testSetItemImage_DefaultIcon_OtherColumn(self):
self.tree.SetItemImage(self.item, -1, column=1)
self.assertEqual(-1, self.tree.GetItemImage(self.item, column=1))
def testSetItemImage_SelectedIcon_OtherColumn(self):
self.tree.SetItemImage(self.item, -1, wx.TreeItemIcon_Selected, 1)
self.assertEqual(-1,
self.tree.GetItemImage(self.item, wx.TreeItemIcon_Selected, 1))
class TreeAPIHarmonizerNoTreeListCtrlCommonTests(object):
''' Tests that should succeed for all tree controls, except the
TreeListCtrl, and all styles. '''
def testGetMainWindow(self):
self.assertEqual(self.tree, self.tree.GetMainWindow())
def testGetColumnCount(self):
self.assertEqual(0, self.tree.GetColumnCount())
class TreeAPIHarmonizerSingleSelectionTests(object):
''' Tests that should succeed for all tree controls when in single
selection mode (which is the default selection mode). '''
def testUnselectAll(self):
self.tree.SelectItem(self.item)
self.tree.UnselectAll()
self.assertEqual([], self.tree.GetSelections())
def testGetSelections_NoSelection(self):
self.tree.UnselectAll()
self.assertEqual([], self.tree.GetSelections())
def testGetSelections_OneSelectedItem(self):
self.tree.UnselectAll()
self.tree.SelectItem(self.item)
self.assertEqual([self.item], self.tree.GetSelections())
class TreeAPIHarmonizerMultipleSelectionTests(object):
''' Tests that should succeed for all tree controls when in multiple
selection mode. '''
style = wx.TR_DEFAULT_STYLE | wx.TR_MULTIPLE
def testUnselectAll(self):
self.tree.SelectItem(self.item)
self.tree.UnselectAll()
self.assertEqual([], self.tree.GetSelections())
def testGetSelections_NoSelection(self):
self.tree.UnselectAll()
self.assertEqual([], self.tree.GetSelections())
def testGetSelections_OneSelectedItem(self):
self.tree.UnselectAll()
self.tree.SelectItem(self.item)
self.assertEqual([self.item], self.tree.GetSelections())
def testGetSelections_TwoSelectedItems(self):
item2 = self.tree.AppendItem(self.root, 'item 2')
self.tree.ExpandAll()
self.tree.UnselectAll()
self.tree.SelectItem(item2)
self.tree.SelectItem(self.item)
self.assertEqual([self.item, item2], self.tree.GetSelections())
class TreeAPIHarmonizerVisibleRootTests(object):
''' Tests that should succeed for all tree controls when the root item
is not hidden. '''
def testGetCount(self):
self.assertEqual(len(self.items), self.tree.GetCount())
def testSelectRoot(self):
self.tree.SelectItem(self.root)
self.assertEqual([self.root], self.tree.GetSelections())
class TreeAPIHarmonizerHiddenRootTests(object):
''' Tests that should succeed for all tree controls when the root item
is hidden. '''
style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT
def testGetCount(self):
self.assertEqual(len(self.items) - 1, self.tree.GetCount())
def testSelectRoot(self):
self.tree.SelectItem(self.root)
self.assertEqual([], self.tree.GetSelections())
class TreeAPIHarmonizerWithTreeCtrlTestCase(TreeAPIHarmonizerTestCase):
TreeClass = wx.TreeCtrl
class TreeAPIHarmonizerWithTreeCtrlCommonTests( \
TreeAPIHarmonizerCommonTests,
TreeAPIHarmonizerNoTreeListCtrlCommonTests):
pass
class TreeAPIHarmonizerWithTreeCtrl_SingleSelection( \
TreeAPIHarmonizerWithTreeCtrlCommonTests,
TreeAPIHarmonizerSingleSelectionTests,
TreeAPIHarmonizerWithTreeCtrlTestCase):
pass
class TreeAPIHarmonizerWithTreeCtrl_MultipleSelection( \
TreeAPIHarmonizerWithTreeCtrlCommonTests,
TreeAPIHarmonizerMultipleSelectionTests,
TreeAPIHarmonizerWithTreeCtrlTestCase):
pass
class TreeAPIHarmonizerWithTreeCtrl_VisibleRoot( \
TreeAPIHarmonizerWithTreeCtrlCommonTests,
TreeAPIHarmonizerVisibleRootTests,
TreeAPIHarmonizerWithTreeCtrlTestCase):
pass
class TreeAPIHarmonizerWithTreeCtrl_HiddenRoot( \
TreeAPIHarmonizerWithTreeCtrlCommonTests,
TreeAPIHarmonizerHiddenRootTests,
TreeAPIHarmonizerWithTreeCtrlTestCase):
pass
class TreeAPIHarmonizerWithTreeListCtrlTestCase(TreeAPIHarmonizerTestCase):
TreeClass = wx.gizmos.TreeListCtrl
def populateTree(self):
self.tree.AddColumn('Column')
super(TreeAPIHarmonizerWithTreeListCtrlTestCase, self).populateTree()
class TreeAPIHarmonizerWithTreeListCtrlCommonTests( \
TreeAPIHarmonizerCommonTests):
def testGetColumnCount(self):
self.assertEqual(1, self.tree.GetColumnCount())
def testGetMainWindow(self):
self.assertNotEqual(self.tree, self.tree.GetMainWindow())
class TreeAPIHarmonizerWithTreeListCtrl_SingleSelection( \
TreeAPIHarmonizerWithTreeListCtrlCommonTests,
TreeAPIHarmonizerSingleSelectionTests,
TreeAPIHarmonizerWithTreeListCtrlTestCase):
pass
class TreeAPIHarmonizerWithTreeListCtrl_MultipleSelection( \
TreeAPIHarmonizerWithTreeListCtrlCommonTests,
TreeAPIHarmonizerMultipleSelectionTests,
TreeAPIHarmonizerWithTreeListCtrlTestCase):
def testGetSelections_TwoSelectedItems(self):
''' Override TreeAPIHarmonizerMultipleSelectionTests.-
testGetSelections_TwoSelectedItems, because
TreeListCtrl.SelectItem needs an extra parameter. '''
self.tree.UnselectAll()
item2 = self.tree.AppendItem(self.root, 'item 2')
self.tree.SelectItem(self.item)
self.tree.SelectItem(item2, unselect_others=False)
self.assertEqual([self.item, item2], self.tree.GetSelections())
class TreeAPIHarmonizerWithTreeListCtrl_VisibleRoot( \
TreeAPIHarmonizerWithTreeListCtrlCommonTests,
TreeAPIHarmonizerVisibleRootTests,
TreeAPIHarmonizerWithTreeListCtrlTestCase):
pass
class TreeAPIHarmonizerWithTreeListCtrl_HiddenRoot( \
TreeAPIHarmonizerWithTreeListCtrlCommonTests,
TreeAPIHarmonizerHiddenRootTests,
TreeAPIHarmonizerWithTreeListCtrlTestCase):
pass
class TreeAPIHarmonizerWithCustomTreeCtrlTestCase(TreeAPIHarmonizerTestCase):
TreeClass = wx.lib.customtreectrl.CustomTreeCtrl
class TreeAPIHarmonizerWithCustomTreeCtrlCommonTests( \
TreeAPIHarmonizerCommonTests,
TreeAPIHarmonizerNoTreeListCtrlCommonTests):
def testGetCheckItemType(self):
item = self.tree.AppendItem(self.root, 'item', ct_type=1)
self.assertEqual(1, self.tree.GetItemType(item))
def testGetRadioItemType(self):
item = self.tree.AppendItem(self.root, 'item', ct_type=2)
self.assertEqual(2, self.tree.GetItemType(item))
class TreeAPIHarmonizerWithCustomTreeCtrl_SingleSelection( \
TreeAPIHarmonizerWithCustomTreeCtrlCommonTests,
TreeAPIHarmonizerSingleSelectionTests,
TreeAPIHarmonizerWithCustomTreeCtrlTestCase):
pass
class TreeAPIHarmonizerWithCustomTreeCtrl_MultipleSelection( \
TreeAPIHarmonizerWithCustomTreeCtrlCommonTests,
TreeAPIHarmonizerMultipleSelectionTests,
TreeAPIHarmonizerWithCustomTreeCtrlTestCase):
pass
class TreeAPIHarmonizerWithCustomTreeCtrl_VisibleRoot( \
TreeAPIHarmonizerWithCustomTreeCtrlCommonTests,
TreeAPIHarmonizerVisibleRootTests,
TreeAPIHarmonizerWithCustomTreeCtrlTestCase):
pass
class TreeAPIHarmonizerWithCustomTreeCtrl_HiddenRoot( \
TreeAPIHarmonizerWithCustomTreeCtrlCommonTests,
TreeAPIHarmonizerHiddenRootTests,
TreeAPIHarmonizerWithCustomTreeCtrlTestCase):
pass
# TreeHelper tests
class TreeHelperTestCase(unittest.TestCase):
style = wx.TR_DEFAULT_STYLE
def setUp(self):
self.frame = wx.Frame(None)
class HelperTreeCtrl(treemixin.TreeHelper,
treemixin.TreeAPIHarmonizer, self.TreeClass):
pass
self.tree = HelperTreeCtrl(self.frame, style=self.style)
self.populateTree()
def populateTree(self):
self.root = self.tree.AddRoot('Root')
self.item = self.tree.AppendItem(self.root, 'Item')
self.child = self.tree.AppendItem(self.item, 'Child')
class TreeHelperVisibleRootTests(object):
def testIntegerIndexRootItem(self):
self.assertEqual(0, self.tree.ItemIndex(self.root, tupleIndex=False))
def testIntegerIndexRegularItem(self):
self.assertEqual(1, self.tree.ItemIndex(self.item, tupleIndex=False))
def testIntegerIndexChild(self):
self.assertEqual(2, self.tree.ItemIndex(self.child, tupleIndex=False))
def testTupleIndexRootItem(self):
self.assertEqual((), self.tree.ItemIndex(self.root))
def testTupleIndexRegularItem(self):
self.assertEqual((0,), self.tree.ItemIndex(self.item))
def testTupleIndexChild(self):
self.assertEqual((0,0), self.tree.ItemIndex(self.child))
class TreeHelperHiddenRootTests(object):
style = wx.TR_HIDE_ROOT
def testIntegerIndexRootItem(self):
self.assertEqual(None, self.tree.ItemIndex(self.root, tupleIndex=False))
def testIntegerIndexRegularItem(self):
self.assertEqual(0, self.tree.ItemIndex(self.item, tupleIndex=False))
def testIntegerIndexChild(self):
self.assertEqual(1, self.tree.ItemIndex(self.child, tupleIndex=False))
def testTupleIndexRootItem(self):
self.assertEqual((), self.tree.ItemIndex(self.root))
def testTupleIndexRegularItem(self):
self.assertEqual((0,), self.tree.ItemIndex(self.item))
def testTupleIndexChild(self):
self.assertEqual((0,0), self.tree.ItemIndex(self.child))
class TreeHelperWithTreeCtrlTestCase(TreeHelperTestCase):
TreeClass = wx.TreeCtrl
class TreeHelperWithTreeCtrl_VisibleRoot(TreeHelperVisibleRootTests,
TreeHelperWithTreeCtrlTestCase):
pass
class TreeHelperWithTreeCtrl_HiddenRoot(TreeHelperHiddenRootTests,
TreeHelperWithTreeCtrlTestCase):
pass
class TreeHelperWithTreeListCtrlTestCase(TreeHelperTestCase):
TreeClass = wx.gizmos.TreeListCtrl
def populateTree(self):
self.tree.AddColumn('Column')
super(TreeHelperWithTreeListCtrlTestCase, self).populateTree()
class TreeHelperWithTreeListCtrl_VisibleRoot(TreeHelperVisibleRootTests,
TreeHelperWithTreeListCtrlTestCase):
pass
class TreeHelperWithTreeListCtrl_HiddenRoot(TreeHelperHiddenRootTests,
TreeHelperWithTreeListCtrlTestCase):
pass
class TreeHelperWithCustomTreeCtrlTestCase(TreeHelperTestCase):
TreeClass = wx.lib.customtreectrl.CustomTreeCtrl
class TreeHelperWithCustomTreeCtrl_VisibleRoot(TreeHelperVisibleRootTests,
TreeHelperWithCustomTreeCtrlTestCase):
pass
class TreeHelperWithCustomTreeCtrl_HiddenRoot(TreeHelperHiddenRootTests,
TreeHelperWithCustomTreeCtrlTestCase):
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)
unittest.main()