1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
#!/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
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())
|