import imp_unittest, unittest import wtc import wx import random try: import numpy as np haveNumpy = True except ImportError: haveNumpy = False #--------------------------------------------------------------------------- w = 600 h = 400 num = 500 colornames = ["BLACK", "BLUE", "BLUE VIOLET", "BROWN", "CYAN", "DARK GREY", "DARK GREEN", "GOLD", "GREY", "GREEN", "MAGENTA", "NAVY", "PINK", "RED", "SKY BLUE", "VIOLET", "YELLOW", ] pencache = {} brushcache = {} def makeRandomPoints(): pnts = [] for i in range(num): x = random.randint(0, w) y = random.randint(0, h) pnts.append( (x,y) ) return pnts def makeRandomLines(): lines = [] for i in range(num): x1 = random.randint(0, w) y1 = random.randint(0, h) x2 = random.randint(0, w) y2 = random.randint(0, h) lines.append( (x1,y1, x2,y2) ) return lines def makeRandomRectangles(): rects = [] for i in range(num): W = random.randint(10, w/2) H = random.randint(10, h/2) x = random.randint(0, w - W) y = random.randint(0, h - H) rects.append( (x, y, W, H) ) return rects def makeRandomPolygons(): Np = 8 # number of points per polygon polys = [] for i in range(num): poly = [] for i in range(Np): x = random.randint(0, w) y = random.randint(0, h) poly.append( (x,y) ) polys.append( poly ) return polys def makeRandomText(): Np = 8 # number of characters in text text = [] for i in range(num): word = [] for i in range(Np): c = chr( random.randint(48, 122) ) word.append( c ) text.append( "".join(word) ) return text def makeRandomColors(): colors = [] for i in range(num): c = random.choice(colornames) colors.append(wx.Colour(c)) return colors def makeRandomPens(): pens = [] for i in range(num): c = random.choice(colornames) t = random.randint(1, 4) if (c,t) not in pencache: pencache[(c, t)] = wx.Pen(c, t) pens.append( pencache[(c, t)] ) return pens def makeRandomBrushes(): brushes = [] for i in range(num): c = random.choice(colornames) if c not in brushcache: brushcache[c] = wx.Brush(c) brushes.append( brushcache[c] ) return brushes #--------------------------------------------------------------------------- class dcDrawLists_Tests(wtc.WidgetTestCase): def test_dcDrawPointLists(self): pnl = wx.Panel(self.frame) self.frame.SetSize((w,h)) dc = wx.ClientDC(pnl) dc.SetPen(wx.Pen("BLACK", 1)) pens = makeRandomPens() dc.DrawPointList(makeRandomPoints()) dc.DrawPointList(makeRandomPoints(), wx.Pen("RED", 1)) dc.DrawPointList(makeRandomPoints(), pens) del dc @unittest.skipIf(not haveNumpy, "Numpy required for this test") def test_dcDrawPointArray(self): pnl = wx.Panel(self.frame) self.frame.SetSize((w,h)) dc = wx.ClientDC(pnl) dc.SetPen(wx.Pen("BLACK", 1)) pens = makeRandomPens() dc.DrawPointList(np.array(makeRandomPoints())) dc.DrawPointList(np.array(makeRandomPoints()), wx.Pen("RED", 1)) dc.DrawPointList(np.array(makeRandomPoints()), pens) del dc def test_dcDrawLineLists(self): pnl = wx.Panel(self.frame) self.frame.SetSize((w,h)) dc = wx.ClientDC(pnl) dc.SetPen(wx.Pen("BLACK", 1)) pens = makeRandomPens() dc.DrawLineList(makeRandomLines()) dc.DrawLineList(makeRandomLines(), wx.Pen("RED", 2)) dc.DrawLineList(makeRandomLines(), pens) del dc def test_dcDrawRectangleLists(self): pnl = wx.Panel(self.frame) self.frame.SetSize((w,h)) dc = wx.ClientDC(pnl) dc.SetPen(wx.Pen("BLACK", 1)) dc.SetBrush( wx.Brush("RED") ) pens = makeRandomPens() brushes = makeRandomBrushes() dc.DrawRectangleList(makeRandomRectangles()) dc.DrawRectangleList(makeRandomRectangles(),pens) dc.DrawRectangleList(makeRandomRectangles(),pens[0],brushes) dc.DrawRectangleList(makeRandomRectangles(),pens,brushes[0]) dc.DrawRectangleList(makeRandomRectangles(),None,brushes) del dc @unittest.skipIf(not haveNumpy, "Numpy required for this test") def test_dcDrawRectangleArray(self): pnl = wx.Panel(self.frame) self.frame.SetSize((w,h)) dc = wx.ClientDC(pnl) dc.SetPen(wx.Pen("BLACK", 1)) dc.SetBrush( wx.Brush("RED") ) pens = makeRandomPens() brushes = makeRandomBrushes() dc.DrawRectangleList(np.array(makeRandomRectangles())) dc.DrawRectangleList(np.array(makeRandomRectangles()),pens) dc.DrawRectangleList(np.array(makeRandomRectangles()),pens[0],brushes) dc.DrawRectangleList(np.array(makeRandomRectangles()),pens,brushes[0]) dc.DrawRectangleList(np.array(makeRandomRectangles()),None,brushes) del dc def test_dcDrawElipseLists(self): pnl = wx.Panel(self.frame) self.frame.SetSize((w,h)) dc = wx.ClientDC(pnl) dc.SetPen(wx.Pen("BLACK", 1)) dc.SetBrush( wx.Brush("RED") ) pens = makeRandomPens() brushes = makeRandomBrushes() dc.DrawEllipseList(makeRandomRectangles()) dc.DrawEllipseList(makeRandomRectangles(),pens) dc.DrawEllipseList(makeRandomRectangles(),pens[0],brushes) dc.DrawEllipseList(makeRandomRectangles(),pens,brushes[0]) dc.DrawEllipseList(makeRandomRectangles(),None,brushes) del dc def test_dcDrawPloygonLists(self): pnl = wx.Panel(self.frame) self.frame.SetSize((w,h)) dc = wx.ClientDC(pnl) dc.SetPen(wx.Pen("BLACK", 1)) dc.SetBrush( wx.Brush("RED") ) pens = makeRandomPens() brushes = makeRandomBrushes() polygons = makeRandomPolygons() dc.DrawPolygonList(polygons) dc.DrawPolygonList(polygons, pens) dc.DrawPolygonList(polygons, pens[0],brushes) dc.DrawPolygonList(polygons, pens,brushes[0]) dc.DrawPolygonList(polygons, None,brushes) del dc def test_dcDrawTextLists(self): pnl = wx.Panel(self.frame) self.frame.SetSize((w,h)) dc = wx.ClientDC(pnl) dc.SetBackgroundMode(wx.SOLID) points = makeRandomPoints() fore = makeRandomColors() back = makeRandomColors() texts = makeRandomText() dc.DrawTextList(texts, points, fore, back) del dc #--------------------------------------------------------------------------- if __name__ == '__main__': unittest.main()