diff options
| author | pinky <> | 2007-01-07 21:41:39 +0000 |
|---|---|---|
| committer | pinky <> | 2007-01-07 21:41:39 +0000 |
| commit | 05bb5d58295cd959c34f1fbcd5b605cd6dafaacc (patch) | |
| tree | 3b3651037037c1617a54ef3d216e8c11ea8cdddf /bin/reportlab/test/test_renderSVG.py | |
| parent | 62524af2f41454a2302efb21f15a95318d257a76 (diff) | |
Repotrlab 2.0
bzr revid: pinky-b8333ccaab5dad8ff965b6c380fadadf30d5212a
Diffstat (limited to 'bin/reportlab/test/test_renderSVG.py')
| -rwxr-xr-x | bin/reportlab/test/test_renderSVG.py | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/bin/reportlab/test/test_renderSVG.py b/bin/reportlab/test/test_renderSVG.py new file mode 100755 index 00000000000..a2d5c1cd77e --- /dev/null +++ b/bin/reportlab/test/test_renderSVG.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python + +import sys, string +from xml.dom import minidom +from xml.sax._exceptions import SAXReaderNotAvailable + +from reportlab.test import unittest +from reportlab.test.utils import makeSuiteForClasses, outputfile, printLocation + +from reportlab.graphics.shapes import * +from reportlab.graphics import renderSVG + + + + +def warnIgnoredRestofTest(): + "Raise a warning (if possible) about a not fully completed test." + + version = sys.version_info[:2] + msg = "XML parser not found - consider installing expat! Rest of test(s) ignored!" + if version >= (2, 1): + import warnings + warnings.warn(msg) + else: + # should better also be printed only once... + print msg + + + + +# Check if we have a default XML parser available or not. + +try: + import xml + from xml.sax import make_parser + p = xml.sax.make_parser() + HAVE_XML_PARSER = 1 +except SAXReaderNotAvailable: + HAVE_XML_PARSER = 0 + + + + +def load(path): + "Helper function to read the generated SVG again." + + doc = minidom.parse(path) + doc.normalize() + return doc.documentElement + + + + +class RenderSvgSimpleTestCase(unittest.TestCase): + "Testing renderSVG module." + + def test0(self): + "Test two strings in drawing." + + path = outputfile("test_renderSVG_simple_test0.svg") + + d = Drawing(200, 100) + d.add(String(0, 0, "foo")) + d.add(String(100, 0, "bar")) + renderSVG.drawToFile(d, path) + + if not HAVE_XML_PARSER: + warnIgnoredRestofTest() + return + + svg = load(path) + fg = svg.getElementsByTagName('g')[0] # flipping group + dg = fg.getElementsByTagName('g')[0] # diagram group + textChildren = dg.getElementsByTagName('text') # text nodes + t0 = string.strip(textChildren[0].childNodes[0].nodeValue) + t1 = string.strip(textChildren[1].childNodes[0].nodeValue) + assert t0 == 'foo' + assert t1 == 'bar' + + + def test1(self): + "Test two strings in group in drawing." + + path = outputfile("test_renderSVG_simple_test1.svg") + + d = Drawing(200, 100) + g = Group() + g.add(String(0, 0, "foo")) + g.add(String(100, 0, "bar")) + d.add(g) + renderSVG.drawToFile(d, path) + + if not HAVE_XML_PARSER: + warnIgnoredRestofTest() + return + + svg = load(path) + fg = svg.getElementsByTagName('g')[0] # flipping group + dg = fg.getElementsByTagName('g')[0] # diagram group + g = dg.getElementsByTagName('g')[0] # custom group + textChildren = g.getElementsByTagName('text') # text nodes + t0 = string.strip(textChildren[0].childNodes[0].nodeValue) + t1 = string.strip(textChildren[1].childNodes[0].nodeValue) + + assert t0 == 'foo' + assert t1 == 'bar' + + + def test2(self): + "Test two strings in transformed group in drawing." + + path = outputfile("test_renderSVG_simple_test2.svg") + + d = Drawing(200, 100) + g = Group() + g.add(String(0, 0, "foo")) + g.add(String(100, 0, "bar")) + g.scale(1.5, 1.2) + g.translate(50, 0) + d.add(g) + renderSVG.drawToFile(d, path) + + if not HAVE_XML_PARSER: + warnIgnoredRestofTest() + return + + svg = load(path) + fg = svg.getElementsByTagName('g')[0] # flipping group + dg = fg.getElementsByTagName('g')[0] # diagram group + g = dg.getElementsByTagName('g')[0] # custom group + textChildren = g.getElementsByTagName('text') # text nodes + t0 = string.strip(textChildren[0].childNodes[0].nodeValue) + t1 = string.strip(textChildren[1].childNodes[0].nodeValue) + + assert t0 == 'foo' + assert t1 == 'bar' + + + + +class RenderSvgAxesTestCase(unittest.TestCase): + "Testing renderSVG module on Axes widgets." + + def test0(self): + "Test two strings in drawing." + + path = outputfile("axestest0.svg") + from reportlab.graphics.charts.axes import XCategoryAxis + + d = XCategoryAxis().demo() + renderSVG.drawToFile(d, path) + + + + +def makeSuite(): + return makeSuiteForClasses(RenderSvgSimpleTestCase, RenderSvgAxesTestCase) + + + + +#noruntests +if __name__ == "__main__": + unittest.TextTestRunner().run(makeSuite()) + printLocation() |
