Files
Phoenix/unittests/test_dcbuffer.py
2016-12-05 16:19:11 -06:00

105 lines
3.2 KiB
Python

import unittest
from unittests import wtc
import wx
import sys
#---------------------------------------------------------------------------
class BufferedDCTests(wtc.WidgetTestCase):
def test_0_CheckKeepReference(self):
# We're using the KeepReference annotation for the dc and bitmap args
# to ensure that they will live as long as the DC does. This test will
# try to verify that it works the way I think it does, that the extra
# reference is made, and also released when the DC goes away.
cdc = wx.ClientDC(self.frame)
bmp = wx.Bitmap(1,1)
cdc_cnt1 = sys.getrefcount(cdc)
bmp_cnt1 = sys.getrefcount(bmp)
dc = wx.BufferedDC(cdc, bmp)
cdc_cnt2 = sys.getrefcount(cdc)
bmp_cnt2 = sys.getrefcount(bmp)
del dc
cdc_cnt3 = sys.getrefcount(cdc)
bmp_cnt3 = sys.getrefcount(bmp)
self.assertTrue(cdc_cnt2 == cdc_cnt1 + 1)
self.assertTrue(cdc_cnt3 == cdc_cnt1)
self.assertTrue(bmp_cnt2 == bmp_cnt1 + 1)
self.assertTrue(bmp_cnt3 == bmp_cnt1)
def test_BufferedDCDefaultCtor(self):
dc = wx.BufferedDC()
dc.Init(None, wx.Bitmap(25,25))
dc.DrawLine(0,0, 50,50)
def test_BufferedDCCtors(self):
dc = wx.BufferedDC(wx.ClientDC(self.frame), wx.Size(100,100))
dc.DrawLine(0,0, 50,50)
dc = wx.BufferedDC(wx.ClientDC(self.frame))
dc.DrawLine(0,0, 50,50)
dc = wx.BufferedDC(None, wx.Bitmap(100,100))
dc.DrawLine(0,0, 50,50)
def test_BufferedPaintDC(self):
class TestPanel(wx.Panel):
def __init__(self, *args, **kw):
wx.Panel.__init__(self, *args, **kw)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.Bind(wx.EVT_PAINT, self.onPaint)
self.bmp = wx.Bitmap(100,100)
self.onPaintCalled = False
def onPaint(self, evt):
dc = wx.BufferedPaintDC(self, self.bmp)
dc.DrawLine(0,0, 50,50)
self.onPaintCalled = True
panel = TestPanel(self.frame)
self.frame.SendSizeEvent()
panel.Refresh()
self.myUpdate(panel)
self.waitFor(200)
self.assertTrue(panel.onPaintCalled == True)
def test_AutoBufferedPaintDC(self):
class TestPanel(wx.Panel):
def __init__(self, *args, **kw):
wx.Panel.__init__(self, *args, **kw)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.Bind(wx.EVT_PAINT, self.onPaint)
self.onPaintCalled = False
def onPaint(self, evt):
dc = wx.AutoBufferedPaintDC(self)
dc.DrawLine(0,0, 50,50)
self.onPaintCalled = True
panel = TestPanel(self.frame)
self.frame.SendSizeEvent()
panel.Refresh()
self.myUpdate(panel)
self.waitFor(200)
self.assertTrue(panel.onPaintCalled == True)
def test_BufferedDCConstantsExist(self):
wx.BUFFER_VIRTUAL_AREA
wx.BUFFER_CLIENT_AREA
wx.BUFFER_USES_SHARED_BUFFER
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()