Files
Phoenix/unittests/test_grid.py
Robin Dunn 66b4a7966d Enable wxArray wrappers to return copy from __getitem__.
This solves problems where an array that is the return value of some method call is indexed immediately and a reference to the array is not held, which could result in garbage values for the indexed item. Currently this is turned on for just GridCellCoordsArray, but others can be switched in the future if needed.
2017-10-12 14:33:15 -07:00

373 lines
10 KiB
Python

import unittest
from unittests import wtc
import wx
import wx.grid
#---------------------------------------------------------------------------
class grid_Tests(wtc.WidgetTestCase):
# NOTE: Most of these tests simply check that the class exists and can be
# instantiated. It would be nice to add more here, but in the meantime it
# will probably be easier to test features and interoperability between
# the classes in a non-unitest situation. See Phoenix/samples/grid
def test_grid00(self):
wx.grid.GRID_AUTOSIZE
wx.grid.GRID_COLUMN
wx.grid.GRID_ROW
wx.grid.GRID_DRAW_ROWS_HEADER
wx.grid.GRID_DRAW_COLS_HEADER
wx.grid.GRID_DRAW_CELL_LINES
wx.grid.GRID_DRAW_BOX_RECT
wx.grid.GRID_DRAW_SELECTION
wx.grid.GRID_DRAW_DEFAULT
def test_grid01(self):
c1 = wx.grid.GridCellCoords()
c2 = wx.grid.GridCellCoords(5,10)
def test_grid02(self):
r = wx.grid.GridCellAutoWrapStringRenderer()
def test_grid03(self):
r = wx.grid.GridCellBoolRenderer()
def test_grid04(self):
r = wx.grid.GridCellDateTimeRenderer()
def test_grid05(self):
r = wx.grid.GridCellEnumRenderer()
def test_grid06(self):
r = wx.grid.GridCellFloatRenderer()
def test_grid07(self):
r = wx.grid.GridCellNumberRenderer()
def test_grid08(self):
r = wx.grid.GridCellStringRenderer()
def test_grid09(self):
class MyRenderer(wx.grid.GridCellRenderer):
def Clone(self):
return MyRenderer()
def Draw(self, grid, attr, dc, rect, row, col, isSelected):
pass
def GetBestSize(self, grid, attr, dc, row, col):
return (80,20)
r = MyRenderer()
def test_grid10(self):
e = wx.grid.GridCellAutoWrapStringEditor()
def test_grid11(self):
e = wx.grid.GridCellBoolEditor()
def test_grid12(self):
e = wx.grid.GridCellChoiceEditor('one two three'.split())
def test_grid13(self):
e = wx.grid.GridCellEnumEditor()
def test_grid14(self):
e = wx.grid.GridCellTextEditor()
def test_grid15(self):
e = wx.grid.GridCellFloatEditor()
def test_grid16(self):
e = wx.grid.GridCellNumberEditor()
def test_grid17(self):
class MyEditor(wx.grid.GridCellEditor):
def Clone(self): return MyEditor()
def BeginEdit(self, row, col, grid): pass
def Create(self, parent, id, evtHandler): pass
def EndEdit(self, row, col, grid, oldval): return None
def ApplyEdit(self, row, col, grid): pass
def Reset(self): pass
def GetValue(self): return ""
e = MyEditor()
return e
def test_grid17a(self):
e = self.test_grid17()
e.GetControl
e.SetControl
def test_grid18(self):
a = wx.grid.GridCellAttr()
a.DecRef()
def test_grid18a(self):
# test that some GCA methods which were missing are now present
a = wx.grid.GridCellAttr()
b = wx.grid.GridCellAttr()
a.MergeWith(b)
a.SetFont(wx.NORMAL_FONT)
a.SetOverflow(True)
a.SetSize(3,4)
a.SetKind(wx.grid.GridCellAttr.Cell)
a.HasReadWriteMode()
a.HasOverflowMode()
a.HasSize()
a.GetSize()
a.GetOverflow()
a.GetKind()
a.DecRef()
def test_grid19(self):
wx.grid.GridCellAttr.Any
wx.grid.GridCellAttr.Cell
wx.grid.GridCellAttr.Row
wx.grid.GridCellAttr.Col
wx.grid.GridCellAttr.Default
wx.grid.GridCellAttr.Merged
def test_grid20(self):
class MyRenderer(wx.grid.GridCornerHeaderRenderer):
def DrawBorder(self, grid, dc, rect):
pass
r = MyRenderer()
def test_grid21(self):
class MyRenderer(wx.grid.GridHeaderLabelsRenderer):
def DrawBorder(self, grid, dc, rect):
pass
def DrawLabel(self, grid, dc, value, rect, horizAlign, vertAlign, textOrientation):
pass
r = MyRenderer()
def test_grid22(self):
class MyRenderer(wx.grid.GridRowHeaderRenderer):
def DrawBorder(self, grid, dc, rect):
pass
def DrawLabel(self, grid, dc, value, rect, horizAlign, vertAlign, textOrientation):
pass
r = MyRenderer()
def test_grid23(self):
class MyRenderer(wx.grid.GridColumnHeaderRenderer):
def DrawBorder(self, grid, dc, rect):
pass
def DrawLabel(self, grid, dc, value, rect, horizAlign, vertAlign, textOrientation):
pass
r = MyRenderer()
def test_grid24(self):
r = wx.grid.GridRowHeaderRendererDefault()
def test_grid25(self):
r = wx.grid.GridColumnHeaderRendererDefault()
def test_grid26(self):
r = wx.grid.GridCornerHeaderRendererDefault()
def test_grid27(self):
p = wx.grid.GridCellAttrProvider()
def test_grid28(self):
class MyTable(wx.grid.GridTableBase):
def GetNumberRows(self): return 1
def GetNumberCols(self): return 1
def GetValue(self, row, col): return ""
def SetValue(self, row, col, value): pass
t = MyTable()
def test_grid29(self):
t = wx.grid.GridStringTable()
def test_grid30(self):
m = wx.grid.GridTableMessage()
def test_grid31(self):
m = wx.grid.GridSizesInfo()
def test_grid32(self):
g = wx.grid.Grid(self.frame)
g.CreateGrid(10,5)
def test_grid33(self):
g = wx.grid.Grid(self.frame)
g.CreateGrid(10,5)
ul = wx.grid.GridUpdateLocker(g)
g.SetCellValue(1,2, 'hello')
g.SetCellValue((2,2), 'world')
del ul
def test_grid34(self):
g = wx.grid.Grid(self.frame)
g.CreateGrid(10,5)
with wx.grid.GridUpdateLocker(g):
g.SetCellValue(1,2, 'hello')
g.SetCellValue((2,2), 'world')
def test_grid35(self):
e = wx.grid.GridEvent()
def test_grid36(self):
e = wx.grid.GridSizeEvent()
def test_grid37(self):
e = wx.grid.GridRangeSelectEvent()
def test_grid38(self):
e = wx.grid.GridEditorCreatedEvent()
def test_grid39(self):
wx.grid.wxEVT_GRID_CELL_LEFT_CLICK
wx.grid.wxEVT_GRID_CELL_RIGHT_CLICK
wx.grid.wxEVT_GRID_CELL_LEFT_DCLICK
wx.grid.wxEVT_GRID_CELL_RIGHT_DCLICK
wx.grid.wxEVT_GRID_LABEL_LEFT_CLICK
wx.grid.wxEVT_GRID_LABEL_RIGHT_CLICK
wx.grid.wxEVT_GRID_LABEL_LEFT_DCLICK
wx.grid.wxEVT_GRID_LABEL_RIGHT_DCLICK
wx.grid.wxEVT_GRID_ROW_SIZE
wx.grid.wxEVT_GRID_COL_SIZE
wx.grid.wxEVT_GRID_RANGE_SELECT
wx.grid.wxEVT_GRID_CELL_CHANGING
wx.grid.wxEVT_GRID_CELL_CHANGED
wx.grid.wxEVT_GRID_SELECT_CELL
wx.grid.wxEVT_GRID_EDITOR_SHOWN
wx.grid.wxEVT_GRID_EDITOR_HIDDEN
wx.grid.wxEVT_GRID_EDITOR_CREATED
wx.grid.wxEVT_GRID_CELL_BEGIN_DRAG
wx.grid.wxEVT_GRID_COL_MOVE
wx.grid.wxEVT_GRID_COL_SORT
wx.grid.wxEVT_GRID_TABBING
def test_grid40(self):
wx.grid.EVT_GRID_CELL_LEFT_CLICK
wx.grid.EVT_GRID_CELL_RIGHT_CLICK
wx.grid.EVT_GRID_CELL_LEFT_DCLICK
wx.grid.EVT_GRID_CELL_RIGHT_DCLICK
wx.grid.EVT_GRID_LABEL_LEFT_CLICK
wx.grid.EVT_GRID_LABEL_RIGHT_CLICK
wx.grid.EVT_GRID_LABEL_LEFT_DCLICK
wx.grid.EVT_GRID_LABEL_RIGHT_DCLICK
wx.grid.EVT_GRID_ROW_SIZE
wx.grid.EVT_GRID_COL_SIZE
wx.grid.EVT_GRID_RANGE_SELECT
wx.grid.EVT_GRID_CELL_CHANGING
wx.grid.EVT_GRID_CELL_CHANGED
wx.grid.EVT_GRID_SELECT_CELL
wx.grid.EVT_GRID_EDITOR_SHOWN
wx.grid.EVT_GRID_EDITOR_HIDDEN
wx.grid.EVT_GRID_EDITOR_CREATED
wx.grid.EVT_GRID_CELL_BEGIN_DRAG
wx.grid.EVT_GRID_COL_MOVE
wx.grid.EVT_GRID_COL_SORT
wx.grid.EVT_GRID_TABBING
wx.grid.EVT_GRID_CMD_CELL_LEFT_CLICK
wx.grid.EVT_GRID_CMD_CELL_RIGHT_CLICK
wx.grid.EVT_GRID_CMD_CELL_LEFT_DCLICK
wx.grid.EVT_GRID_CMD_CELL_RIGHT_DCLICK
wx.grid.EVT_GRID_CMD_LABEL_LEFT_CLICK
wx.grid.EVT_GRID_CMD_LABEL_RIGHT_CLICK
wx.grid.EVT_GRID_CMD_LABEL_LEFT_DCLICK
wx.grid.EVT_GRID_CMD_LABEL_RIGHT_DCLICK
wx.grid.EVT_GRID_CMD_ROW_SIZE
wx.grid.EVT_GRID_CMD_COL_SIZE
wx.grid.EVT_GRID_CMD_RANGE_SELECT
wx.grid.EVT_GRID_CMD_CELL_CHANGING
wx.grid.EVT_GRID_CMD_CELL_CHANGED
wx.grid.EVT_GRID_CMD_SELECT_CELL
wx.grid.EVT_GRID_CMD_EDITOR_SHOWN
wx.grid.EVT_GRID_CMD_EDITOR_HIDDEN
wx.grid.EVT_GRID_CMD_EDITOR_CREATED
wx.grid.EVT_GRID_CMD_CELL_BEGIN_DRAG
wx.grid.EVT_GRID_CMD_COL_MOVE
wx.grid.EVT_GRID_CMD_COL_SORT
wx.grid.EVT_GRID_CMD_TABBING
def test_grid41(self):
wx.grid.Grid.SetCellHighlightPenWidth # Does it exist
def test_grid42(self):
# old names
wx.grid.Grid.wxGridSelectCells
wx.grid.Grid.wxGridSelectRows
wx.grid.Grid.wxGridSelectColumns
wx.grid.Grid.wxGridSelectRowsOrColumns
def test_grid43(self):
# new names
wx.grid.Grid.SelectCells
wx.grid.Grid.SelectRows
wx.grid.Grid.SelectColumns
wx.grid.Grid.SelectRowsOrColumns
def test_GetIM(self):
# Test the immutable version returned by GetIM
obj = wx.grid.GridCellCoords(1,2)
im = obj.GetIM()
assert isinstance(im, tuple)
assert im.Row == obj.Row
assert im.Col == obj.Col
obj2 = wx.grid.GridCellCoords(im)
assert obj == obj2
def test_grid44(self):
g = wx.grid.Grid(self.frame)
g.CreateGrid(10,10)
g.SelectBlock((1,1), (5,5))
tl = g.GetSelectionBlockTopLeft()
br = g.GetSelectionBlockBottomRight()
assert tl[0].Get() == (1,1)
assert br[0].Get() == (5,5)
def test_grid45(self):
# See issue #297
g = wx.grid.Grid(self.frame)
g.CreateGrid(10,10)
g.SelectBlock((1,1), (5,5))
tl = g.GetSelectionBlockTopLeft()[0]
br = g.GetSelectionBlockBottomRight()[0]
assert tl.Get() == (1,1)
assert br.Get() == (5,5)
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()