summaryrefslogtreecommitdiff
path: root/bin/reportlab/test/test_renderSVG.py
diff options
context:
space:
mode:
authorpinky <>2007-01-07 21:41:39 +0000
committerpinky <>2007-01-07 21:41:39 +0000
commit05bb5d58295cd959c34f1fbcd5b605cd6dafaacc (patch)
tree3b3651037037c1617a54ef3d216e8c11ea8cdddf /bin/reportlab/test/test_renderSVG.py
parent62524af2f41454a2302efb21f15a95318d257a76 (diff)
Repotrlab 2.0
bzr revid: pinky-b8333ccaab5dad8ff965b6c380fadadf30d5212a
Diffstat (limited to 'bin/reportlab/test/test_renderSVG.py')
-rwxr-xr-xbin/reportlab/test/test_renderSVG.py165
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()