odoo/bin/reportlab/test/test_graphics_layout.py

83 lines
2.6 KiB
Python

#Copyright ReportLab Europe Ltd. 2000-2004
#see license.txt for license details
#history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/test/test_graphics_layout.py
"""
Tests for getBounds methods of various graphical widgets
"""
from reportlab.test import unittest
from reportlab.test.utils import makeSuiteForClasses, printLocation
from reportlab.graphics import shapes
##from reportlab.graphics.charts.barcharts import VerticalBarChart
##from reportlab.graphics.charts.linecharts import HorizontalLineChart
##from reportlab.graphics.charts.piecharts import Pie
##from reportlab.graphics.charts.legends import Legend
class BoundsTestCase(unittest.TestCase):
def testLine(self):
s = shapes.Line(10,20,30,40)
assert s.getBounds() == (10,20,30,40)
def testRect(self):
s = shapes.Rect(10,20,30,40) #width, height
assert s.getBounds() == (10,20,40,60)
def testCircle(self):
s = shapes.Circle(100, 50, 10)
assert s.getBounds() == (90,40,110,60)
def testEllipse(self):
s = shapes.Ellipse(100, 50, 10, 5)
assert s.getBounds() == (90,45,110,55)
def testWedge(self):
s = shapes.Wedge(0,0,10,0,90)
assert s.getBounds() == (0,0,10,10), 'expected (0,0,10,10) got %s' % repr(s.getBounds())
def testPolygon(self):
points = [0,0,10,30,25,15]
s = shapes.Polygon(points)
assert s.getBounds() == (0,0,25,30)
s = shapes.PolyLine(points)
assert s.getBounds() == (0,0,25,30)
def testString(self):
s = shapes.String(0,0,'Hello World', fontName='Courier',fontSize=10)
assert s.getBounds() == (0, -2.0, 66.0, 10)
def testGroup(self):
g = shapes.Group()
g.add(shapes.Rect(0,0,10,10))
g.add(shapes.Rect(50,50,10,10))
assert g.getBounds() == (0,0,60,60)
g.translate(40,40)
assert g.getBounds() == (40,40,100,100)
g.translate(-40,-40)
g.rotate(90)
#approx bounds needed, trig functions create an error of 3e-15
assert map(int, g.getBounds()) == [-60,0,0,60]
def testWidget(self):
from reportlab.graphics.charts.barcharts import VerticalBarChart
vbc = VerticalBarChart()
vbc.x = 50
vbc.y = 50
from reportlab.graphics.widgetbase import Sizer
siz = Sizer()
siz.add(vbc, 'vbc')
assert siz.getBounds()[0:2] <> (0,0)
def makeSuite():
return makeSuiteForClasses(BoundsTestCase)
#noruntests
if __name__ == "__main__":
unittest.TextTestRunner().run(makeSuite())
printLocation()