def parse(self): file = self.args[-1] Effect.parse(self, file) # we don't want to record the output of the enableTrace extension self.recording = False if Conf()['enableRecording'] == True: # create in svg file TestsCreator().addInSvg(file) TestsCreator().addTestArgvModule(self.options, self) self.recording = True
class TestSvg_image_unit_test(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_image2.svg") root = self.effect.document.getroot() self.node = self.findTag(root, "g") self.node = self.findTag(self.node, "image") self.canvas = Canvas(0, 0) self.image = Image(None, self.node, self.canvas, None); def findTag(self, root, no): for node in root: tag = node.tag.split("}")[1] if tag == no: return node return "" def testGetData(self): x, y, weight, height, href = self.image.get_data() href = href[-12:] array = [x ,y, weight, height, href] imageArray = [97.285713, 255.6479, 554, 422, "5_images.jpg"] self.assertEqual(array, imageArray)
class TestSvgEllipse(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_ellipse.svg") root = self.effect.document.getroot() self.node = self.findTag(root, "ellipse") self.canvas = Canvas(0, 0) self.ellipse = Ellipse(None, self.node, self.canvas, None) def findTag(self, root, no): for node in root: tag = node.tag.split("}")[1] if tag == no: return node return "" def testGetData(self): x, y, z, w = self.ellipse.getData() self.assertEqual(x, 60) self.assertEqual(y, 70) self.assertEqual(z, 250) self.assertEqual(w, 100) def testDraw(self): self.ellipse.draw(False) self.assertEqual(self.ellipse.canvasContext.code, ["\tctx.fillStyle = 'rgb(255, 0, 0)';\n", '\tctx.beginPath();\n', '\tctx.transform(0.866025, -0.500000, 0.500000, 0.866025, 900.000000, 200.000000);\n', '\tctx.moveTo(60.000000, -30.000000);\n', '\tctx.bezierCurveTo(198.071187, -30.000000, 310.000000, 14.771525, 310.000000, 70.000000);\n', '\tctx.bezierCurveTo(310.000000, 125.228475, 198.071187, 170.000000, 60.000000, 170.000000);\n', '\tctx.bezierCurveTo(-78.071187, 170.000000, -190.000000, 125.228475, -190.000000, 70.000000);\n', '\tctx.bezierCurveTo(-190.000000, 14.771525, -78.071187, -30.000000, 60.000000, -30.000000);\n', '\tctx.fill();\n'])
class TestSvgCircle(unittest.TestCase): def setUp(self): self.circle = Circle(12, 12, 12, None) self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_circle.svg") root = self.effect.document.getroot() for node in root: tag = node.tag.split("}")[1] if (tag == 'circle'): self.node = node break def testGetDataCx(self): self.circle.node = self.node data = self.circle.getData() self.assertEqual(data[0], 600) def testGetDataCy(self): self.circle.node = self.node data = self.circle.getData() self.assertEqual(data[1], 200) def testGetDataR(self): self.circle.node = self.node data = self.circle.getData() self.assertEqual(data[2], 100)
class TestSvgCircle(unittest.TestCase): def setUp(self): self.circle = Circle(12, 12, 12, None) self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_circle.svg") root = self.effect.document.getroot() for node in root: tag = node.tag.split("}")[1] if(tag == 'circle'): self.node = node break def testGetDataCx(self): self.circle.node = self.node data = self.circle.getData() self.assertEqual(data[0], 600) def testGetDataCy(self): self.circle.node = self.node data = self.circle.getData() self.assertEqual(data[1], 200) def testGetDataR(self): self.circle.node = self.node data = self.circle.getData() self.assertEqual(data[2], 100)
class TestRect(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = None self.effect.parse("TestFiles/unit_test_svg_Rect_WithRxRy.svg") self.node = None self.canvas = Canvas(0, 0) def findNodeInG(self, root, tag): for node in root: nodeTag = node.tag.split("}")[1] if (nodeTag == 'g'): root = node break for node in root: nodeTag = node.tag.split("}")[1] if (nodeTag == tag): return node def testExitWithoutRxRy(self): self.document = self.effect.parse( "TestFiles/unit_test_svg_Rect_WithoutRxRy.svg") root = self.effect.document.getroot() self.rect = Rect(None, self.node, self.canvas, None) self.rect.node = self.findNodeInG(root, 'rect') x, y, w, h, rx, ry = self.rect.getData() self.assertEqual(x, 40.0) self.assertEqual(y, 30.0) self.assertEqual(w, 100.0) self.assertEqual(h, 150.0) self.assertEqual(rx, 0) self.assertEqual(ry, 0) def testExitWithRxRy(self): self.document = self.effect.parse( "TestFiles/unit_test_svg_Rect_WithRxRy.svg") root = self.effect.document.getroot() self.rect = Rect(None, self.node, self.canvas, None) self.rect.node = self.findNodeInG(root, 'rect') x, y, w, h, rx, ry = self.rect.getData() self.assertEqual(x, 40.0) self.assertEqual(y, 30.0) self.assertEqual(w, 100.0) self.assertEqual(h, 150.0) self.assertEqual(rx, 5.0) self.assertEqual(ry, 10.0)
class TestRect(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = None self.effect.parse("TestFiles/unit_test_svg_Rect_WithRxRy.svg") self.node = None self.canvas = Canvas(0, 0) def findNodeInG(self, root, tag): for node in root: nodeTag = node.tag.split("}")[1] if(nodeTag == 'g'): root = node break for node in root: nodeTag = node.tag.split("}")[1] if(nodeTag == tag): return node def testExitWithoutRxRy(self): self.document = self.effect.parse("TestFiles/unit_test_svg_Rect_WithoutRxRy.svg") root = self.effect.document.getroot() self.rect = Rect(None, self.node, self.canvas, None) self.rect.node = self.findNodeInG(root, 'rect') x, y, w, h, rx, ry = self.rect.getData() self.assertEqual(x, 40.0) self.assertEqual(y, 30.0) self.assertEqual(w, 100.0) self.assertEqual(h, 150.0) self.assertEqual(rx, 0) self.assertEqual(ry, 0) def testExitWithRxRy(self): self.document = self.effect.parse("TestFiles/unit_test_svg_Rect_WithRxRy.svg") root = self.effect.document.getroot() self.rect = Rect(None, self.node, self.canvas, None) self.rect.node = self.findNodeInG(root, 'rect') x, y, w, h, rx, ry = self.rect.getData() self.assertEqual(x, 40.0) self.assertEqual(y, 30.0) self.assertEqual(w, 100.0) self.assertEqual(h, 150.0) self.assertEqual(rx, 5.0) self.assertEqual(ry, 10.0)
class TestSvgPath(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_path.svg") root = self.effect.document.getroot() self.node = self.findTag(root, "g") self.node = self.findTag(self.node, "path") self.canvas = Canvas(0, 0) '''Fictional data used in methods such as pathlineto, pathcurveto, pathmoveto, patharcto. we made it so that the 5th parameters (600) is larger then the others, guaranteeing this way that the sqrt value is not a negative value in patharcto.''' self.data =[1.0, 2.0, 3.0, 4.0, 5.0, 600.0, 7.0] self.path = Path(None, self.node, self.canvas, None) def findTag(self, root, no): for node in root: tag = node.tag.split("}")[1] if tag == no: return node return "" def testGetData(self): vetor = self.path.getData() vetorDaElipse = [['M', [447.49757, 166.4584]], ['A', [197.48482, 67.680222, 0.0, 1, 1, 52.527939, 166.4584]], ['A', [197.48482, 67.680222, 0.0, 1, 1, 447.49757, 166.4584]], ['Z', []]] self.assertEqual(vetor, vetorDaElipse) def testPathMoveTo(self): self.path.pathMoveTo(self.data) self.assertEqual(self.path.canvasContext.code, ['\tctx.moveTo(1.000000, 2.000000);\n']) def testPathLineTo(self): self.path.pathLineTo(self.data) self.assertEqual(self.path.canvasContext.code, ['\tctx.lineTo(1.000000, 2.000000);\n']) def testPathCurveTo(self): self.path.pathCurveTo(self.data) self.assertEqual(self.path.canvasContext.code, ['\tctx.bezierCurveTo(1.000000, 2.000000, 3.000000, 4.000000, 5.000000, 600.000000);\n']) def testPathArcTo(self): self.path.currentPosition = [600.0, 7.0] self.path.pathArcTo(self.data) self.assertEqual(self.path.canvasContext.code, []) self.path.currentPosition = [0.25, 0.25] self.path.pathArcTo(self.data) self.assertEqual(self.path.canvasContext.code, ['\tctx.translate(300.125000, 3.625000);\n', '\tctx.rotate(0.052360);\n', '\tctx.scale(0.500000, 1.000000);\n', '\tctx.arc(0.000000, 0.000000, 599.408034, 3.121031, 6.26262379, -4);\n', '\tctx.scale(2.000000, 1.000000);\n', '\tctx.rotate(-0.052360);\n', '\tctx.translate(-300.125000, -3.625000);\n']) def testDraw(self): self.maxDiff = None self.path.draw(False) self.assertEqual(self.path.canvasContext.code, ["\tctx.lineJoin = 'miter';\n", "\tctx.strokeStyle = 'rgb(0, 0, 0)';\n", "\tctx.lineCap = 'butt';\n", '\tctx.lineWidth = 1.000000;\n', "\tctx.fillStyle = 'rgb(255, 0, 0)';\n", '\tctx.beginPath();\n', '\tctx.transform(0.707107, -0.707107, 0.707107, 0.707107, -44.476826, 225.540250);\n', '\tctx.moveTo(447.497570, 166.458400);\n', '\tctx.translate(250.012754, 166.472848);\n', '\tctx.rotate(0.000000);\n', '\tctx.scale(1.000000, 0.342711);\n', '\tctx.arc(0.000000, 0.000000, 197.484820, -0.000213, 3.14180613, 0);\n', '\tctx.scale(1.000000, 2.917910);\n', '\tctx.rotate(-0.000000);\n', '\tctx.translate(-250.012754, -166.472848);\n', '\tctx.translate(250.012754, 166.443952);\n', '\tctx.rotate(0.000000);\n', '\tctx.scale(1.000000, 0.342711);\n', '\tctx.arc(0.000000, 0.000000, 197.484820, 3.141379, 6.28339879, 0);\n', '\tctx.scale(1.000000, 2.917910);\n', '\tctx.rotate(-0.000000);\n', '\tctx.translate(-250.012754, -166.443952);\n', '\tctx.closePath();\n', '\tctx.fill();\n', '\tctx.stroke();\n'])
class TestSvgElement(unittest.TestCase): def setUp(self): self.element = Element() self.effect = Effect() self.document = self.effect.parse( "TestFiles/unit_test_svg_element.svg") self.node = self.effect.document.getroot() def testAttrWithNs(self): self.element.node = self.node returnValue = self.element.attr("width", "ns") self.assertEqual(returnValue, "12cm") def testAttrWithoutNs(self): self.element.node = self.node returnValue = self.element.attr("width") self.assertEqual(returnValue, "12cm")
class TestSvgElement(unittest.TestCase): def setUp(self): self.element = Element() self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_element.svg") self.node = self.effect.document.getroot() def testAttrWithNs(self): self.element.node = self.node returnValue = self.element.attr("width", "ns") self.assertEqual(returnValue, "12cm") def testAttrWithoutNs(self): self.element.node = self.node returnValue = self.element.attr("width") self.assertEqual(returnValue, "12cm")
class TestSvgLine(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_line.svg") root = self.effect.document.getroot() self.node = self.findTag(root, "line") self.canvas = Canvas(0, 0) self.line = Line(None, self.node, self.canvas, None) def findTag(self, root, no): for node in root: tag = node.tag.split("}")[1] if tag == no: return node return "" def testGetData(self): x, y = self.line.getData() self.assertEqual(x, ('M', (100.0, 300.0)) ) self.assertEqual(y, ('L', (300.0, 100.0)) )
class TestSvgG(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_g.svg") root = self.effect.document.getroot() self.node = self.findTag(root, "g") self.canvas = Canvas(0, 0) self.g = G(None, self.node, self.canvas, None) def findTag(self, root, no): for node in root: tag = node.tag.split("}")[1] if tag == no: return node return "" def testDraw(self): self.g.draw(False); self.assertEqual(self.g.canvasContext.code, ['\tctx.transform(-0.866025, 0.500000, -0.500000, -0.866025, 0.000000, 0.000000);\n'])
class TestText(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_text.svg") self.root = self.effect.document.getroot() self.canvas = Canvas(0,0) self.node = self.findNodeInG(self.root,"text") self.text = Text( None,self.node,self.canvas, None) def findNodeInG(self, root, tag): for node in root: nodeTag = node.tag.split("}")[1] if(nodeTag == 'g'): root = node break for node in root: nodeTag = node.tag.split("}")[1] if(nodeTag == tag): return node def testGetData(self): x, y = self.text.getData() self.assertEqual(x, 188.89853) self.assertEqual(y, 117.97108) def testTextHelper(self): stringRetornada = self.text.textHelper(self.node) self.assertEqual(stringRetornada, "TESTE\n ") def testSetTextStyle(self): self.text.setTextStyle(self.text.getStyle()) self.assertEqual(self.text.canvasContext.code, ['\tctx.font = "normal normal 40px Sans";\n']) def testDraw(self): self.text.draw(False) self.assertEqual(self.text.canvasContext.code, ['\tctx.transform(0.707107, -0.707107, 0.707107, 0.707107, -44.476826, 225.540250);\n', "\tctx.fillStyle = 'rgb(0, 0, 0)';\n", '\tctx.font = "normal normal 40px Sans";\n', '\tctx.fillText("TESTE", 188.898530, 117.971080);\n'])
class TestSvg_image_unit_test(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_image2.svg") root = self.effect.document.getroot() self.node = self.findTag(root, "g") self.node = self.findTag(self.node, "image") self.canvas = Canvas(0, 0) self.image = Image(None, self.node, self.canvas, None) def findTag(self, root, no): for node in root: tag = node.tag.split("}")[1] if tag == no: return node return "" def testGetData(self): x, y, weight, height, href = self.image.get_data() href = href[-12:] array = [x, y, weight, height, href] imageArray = [97.285713, 255.6479, 554, 422, "5_images.jpg"] self.assertEqual(array, imageArray)
class TestSvgPath(unittest.TestCase): def setUp(self): self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_path.svg") root = self.effect.document.getroot() self.node = self.findTag(root, "g") self.node = self.findTag(self.node, "path") self.canvas = Canvas(0, 0) '''Fictional data used in methods such as pathlineto, pathcurveto, pathmoveto, patharcto. we made it so that the 5th parameters (600) is larger then the others, guaranteeing this way that the sqrt value is not a negative value in patharcto.''' self.data = [1.0, 2.0, 3.0, 4.0, 5.0, 600.0, 7.0] self.path = Path(None, self.node, self.canvas, None) def findTag(self, root, no): for node in root: tag = node.tag.split("}")[1] if tag == no: return node return "" def testGetData(self): vetor = self.path.getData() vetorDaElipse = [ ['M', [447.49757, 166.4584]], ['A', [197.48482, 67.680222, 0.0, 1, 1, 52.527939, 166.4584]], ['A', [197.48482, 67.680222, 0.0, 1, 1, 447.49757, 166.4584]], ['Z', []] ] self.assertEqual(vetor, vetorDaElipse) def testPathMoveTo(self): self.path.pathMoveTo(self.data) self.assertEqual(self.path.canvasContext.code, ['\tctx.moveTo(1.000000, 2.000000);\n']) def testPathLineTo(self): self.path.pathLineTo(self.data) self.assertEqual(self.path.canvasContext.code, ['\tctx.lineTo(1.000000, 2.000000);\n']) def testPathCurveTo(self): self.path.pathCurveTo(self.data) self.assertEqual(self.path.canvasContext.code, [ '\tctx.bezierCurveTo(1.000000, 2.000000, 3.000000, 4.000000, 5.000000, 600.000000);\n' ]) def testPathArcTo(self): self.path.currentPosition = [600.0, 7.0] self.path.pathArcTo(self.data) self.assertEqual(self.path.canvasContext.code, []) self.path.currentPosition = [0.25, 0.25] self.path.pathArcTo(self.data) self.assertEqual(self.path.canvasContext.code, [ '\tctx.translate(300.125000, 3.625000);\n', '\tctx.rotate(0.052360);\n', '\tctx.scale(0.500000, 1.000000);\n', '\tctx.arc(0.000000, 0.000000, 599.408034, 3.121031, 6.26262379, -4);\n', '\tctx.scale(2.000000, 1.000000);\n', '\tctx.rotate(-0.052360);\n', '\tctx.translate(-300.125000, -3.625000);\n' ]) def testDraw(self): self.maxDiff = None self.path.draw(False) self.assertEqual(self.path.canvasContext.code, [ "\tctx.lineJoin = 'miter';\n", "\tctx.strokeStyle = 'rgb(0, 0, 0)';\n", "\tctx.lineCap = 'butt';\n", '\tctx.lineWidth = 1.000000;\n', "\tctx.fillStyle = 'rgb(255, 0, 0)';\n", '\tctx.beginPath();\n', '\tctx.transform(0.707107, -0.707107, 0.707107, 0.707107, -44.476826, 225.540250);\n', '\tctx.moveTo(447.497570, 166.458400);\n', '\tctx.translate(250.012754, 166.472848);\n', '\tctx.rotate(0.000000);\n', '\tctx.scale(1.000000, 0.342711);\n', '\tctx.arc(0.000000, 0.000000, 197.484820, -0.000213, 3.14180613, 0);\n', '\tctx.scale(1.000000, 2.917910);\n', '\tctx.rotate(-0.000000);\n', '\tctx.translate(-250.012754, -166.472848);\n', '\tctx.translate(250.012754, 166.443952);\n', '\tctx.rotate(0.000000);\n', '\tctx.scale(1.000000, 0.342711);\n', '\tctx.arc(0.000000, 0.000000, 197.484820, 3.141379, 6.28339879, 0);\n', '\tctx.scale(1.000000, 2.917910);\n', '\tctx.rotate(-0.000000);\n', '\tctx.translate(-250.012754, -166.443952);\n', '\tctx.closePath();\n', '\tctx.fill();\n', '\tctx.stroke();\n' ])
class TestSvgAbstractShape(unittest.TestCase): def returnsGnode(self, root, tag): for node in root: nodeTag = node.tag.split("}")[1] if(nodeTag == 'g'): root = node break for node in root: nodeTag = node.tag.split("}")[1] if(nodeTag == tag): return node def setUp(self): self.canvas = Canvas(0,0) self.effect = Effect() self.document = self.effect.parse("TestFiles/unit_test_svg_abstractShape.svg") self.root = self.effect.document.getroot() self.node = self.returnsGnode(self.root,"path") self.abstractShape = AbstractShape( None,self.node,self.canvas, None) def testGetStyle(self): style = self.abstractShape.getStyle() strStyle = "fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" hashStyle = dict([i.split(":") for i in strStyle.split(";") if len(i)]) self.assertEqual(hashStyle,style) strStyle = "fill:ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" hashStyle = dict([i.split(":") for i in strStyle.split(";") if len(i)]) self.assertNotEqual(hashStyle,style) def testSetStyle(self): canvas = Canvas(0,0) canvas.setStrokeLinejoin("miter") canvas.setStroke("#000000") canvas.setStrokeLinecap("butt") canvas.setStrokeWidth("1px") canvas.setFill("#ff0000") stringStyle =self.abstractShape.getStyle() self.abstractShape.setStyle(stringStyle) self.assertEqual(canvas.code, self.abstractShape.canvasContext.code) self.assertEqual(self.abstractShape.canvasContext.style,stringStyle) def testHasTransform(self): self.assertNotEqual(True, self.abstractShape.hasTransform()) canvas = Canvas(0,1) canvas.effect = Effect() canvas.document = canvas.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root,"rect") canvas.abstractShape = AbstractShape( None,canvas.node,self.canvas, None) self.assertEqual(True, canvas.abstractShape.hasTransform()) def testGetTransform(self): m11 = (float(1),float(0),float(0.3802532),float(0.92488243),0.0,0.0) canvas = Canvas(0,1) canvas.effect = Effect() canvas.document = canvas.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root,"rect") canvas.abstractShape = AbstractShape( None,canvas.node,self.canvas, None) vetor = canvas.abstractShape.getTransform() self.assertEqual(m11, vetor) def testHasGradient(self): canvas = Canvas(0,1) canvas.effect = Effect() canvas.document = canvas.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado_GradienteLinear.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root,"path") canvas.abstractShape = AbstractShape( None,canvas.node,self.canvas, None) self.assertEqual(canvas.abstractShape.gradientHelper.hasGradient("fill"), "linear") canvas.document = canvas.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado_GradienteRadial.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root,"path") canvas.abstractShape = AbstractShape( None,canvas.node,self.canvas, None) self.assertEqual(canvas.abstractShape.gradientHelper.hasGradient("fill"), "radial") self.assertNotEqual(self.abstractShape.gradientHelper.hasGradient("fill"),"linear") def testGetGradientHref(self): returnValue ="linearGradient3022" canvas = Canvas(0,1) canvas.effect = Effect() canvas.document = canvas.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado_GradienteLinear.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root,"path") canvas.abstractShape = AbstractShape( None,canvas.node,self.canvas, None) self.assertEqual(returnValue,canvas.abstractShape.gradientHelper.getGradientHref("fill")) returnValue ="ovalGradient3022" self.assertNotEqual(returnValue,canvas.abstractShape.gradientHelper.getGradientHref("fill")) def testHasClip(self): canvas = Canvas(0,1) canvas.effect = Effect() canvas.document = canvas.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado_Clip.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root,"path") canvas.abstractShape = AbstractShape( None,canvas.node,self.canvas, None) self.assertTrue(canvas.abstractShape.hasClip()) self.assertFalse(self.abstractShape.hasClip()) def testGetClipHref(self): returnValue = "clipPath3191" canvas = Canvas(0,1) canvas.effect = Effect() canvas.document = canvas.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado_Clip.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root,"path") canvas.abstractShape = AbstractShape( None,canvas.node,self.canvas, None) self.assertEqual(canvas.abstractShape.getClipId(),returnValue) def testStart(self): canvas2 = Canvas(0,2) canvas2.write("\n// #path3033") self.abstractShape.initDraw() self.assertEqual(self.abstractShape.canvasContext.code,canvas2.code) canvas3 = Canvas(0,3) canvas3.effect = Effect() canvas3.document = canvas3.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado_Clip.svg") canvas3.root = canvas3.effect.document.getroot() canvas3.node = self.returnsGnode(canvas3.root,"path") canvas3.abstractShape = AbstractShape( None,canvas3.node,canvas3, None) canvas4 = Canvas(0,4) canvas4.write("\n// #path2987") canvas4.save() canvas3.abstractShape.initDraw() self.assertEqual(canvas3.abstractShape.canvasContext.code,canvas4.code) def testDraw(self): canvas = Canvas(0,1) canvas.effect = Effect() canvas.document = canvas.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root,"rect") rect = Rect("rect",canvas.node,canvas, None) rect.draw() self.assertEqual(rect.canvasContext.code,['\tctx.transform(1.000000, 0.000000, 0.380253, 0.924882, 0.000000, 0.000000);\n', "\tctx.lineJoin = 'miter';\n", "\tctx.strokeStyle = 'rgb(0, 0, 0)';\n", "\tctx.lineCap = 'butt';\n", '\tctx.lineWidth = 1.012632;\n', "\tctx.fillStyle = 'rgb(0, 0, 255)';\n", '\tctx.beginPath();\n', '\tctx.moveTo(-60.184902, 299.915122);\n', '\tctx.lineTo(-60.184902, 677.860048);\n', '\tctx.quadraticCurveTo(-60.184902, 683.719660, -60.184902, 683.719660);\n', '\tctx.lineTo(431.239998, 683.719660);\n', '\tctx.quadraticCurveTo(431.239998, 683.719660, 431.239998, 677.860048);\n', '\tctx.lineTo(431.239998, 299.915122);\n', '\tctx.quadraticCurveTo(431.239998, 294.055510, 431.239998, 294.055510);\n', '\tctx.lineTo(-60.184902, 294.055510);\n', '\tctx.quadraticCurveTo(-60.184902, 294.055510, -60.184902, 299.915122);\n', '\tctx.fill();\n', '\tctx.stroke();\n']) def testEnd(self): self.abstractShape.endDraw() self.assertEqual(self.abstractShape.canvasContext.code, []) canvas1 = Canvas(0,3) canvas1.effect = Effect() canvas1.document = canvas1.effect.parse("TestFiles/unit_test_svg_abstractShape_transformado.svg") canvas1.root = canvas1.effect.document.getroot() canvas1.node = self.returnsGnode(canvas1.root,"rect") canvas1.abstractShape = AbstractShape( None,canvas1.node,canvas1, None) canvas1.abstractShape.endDraw() canvas2 = Canvas(0,2) canvas2.restore() self.assertEqual(canvas1.abstractShape.canvasContext.code, canvas2.code)
class TestSvgAbstractShape(unittest.TestCase): def returnsGnode(self, root, tag): for node in root: nodeTag = node.tag.split("}")[1] if (nodeTag == 'g'): root = node break for node in root: nodeTag = node.tag.split("}")[1] if (nodeTag == tag): return node def setUp(self): self.canvas = Canvas(0, 0) self.effect = Effect() self.document = self.effect.parse( "TestFiles/unit_test_svg_abstractShape.svg") self.root = self.effect.document.getroot() self.node = self.returnsGnode(self.root, "path") self.abstractShape = AbstractShape(None, self.node, self.canvas, None) def testGetStyle(self): style = self.abstractShape.getStyle() strStyle = "fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" hashStyle = dict([i.split(":") for i in strStyle.split(";") if len(i)]) self.assertEqual(hashStyle, style) strStyle = "fill:ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" hashStyle = dict([i.split(":") for i in strStyle.split(";") if len(i)]) self.assertNotEqual(hashStyle, style) def testSetStyle(self): canvas = Canvas(0, 0) canvas.setStrokeLinejoin("miter") canvas.setStroke("#000000") canvas.setStrokeLinecap("butt") canvas.setStrokeWidth("1px") canvas.setFill("#ff0000") stringStyle = self.abstractShape.getStyle() self.abstractShape.setStyle(stringStyle) self.assertEqual(canvas.code, self.abstractShape.canvasContext.code) self.assertEqual(self.abstractShape.canvasContext.style, stringStyle) def testHasTransform(self): self.assertNotEqual(True, self.abstractShape.hasTransform()) canvas = Canvas(0, 1) canvas.effect = Effect() canvas.document = canvas.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root, "rect") canvas.abstractShape = AbstractShape(None, canvas.node, self.canvas, None) self.assertEqual(True, canvas.abstractShape.hasTransform()) def testGetTransform(self): m11 = (float(1), float(0), float(0.3802532), float(0.92488243), 0.0, 0.0) canvas = Canvas(0, 1) canvas.effect = Effect() canvas.document = canvas.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root, "rect") canvas.abstractShape = AbstractShape(None, canvas.node, self.canvas, None) vetor = canvas.abstractShape.getTransform() self.assertEqual(m11, vetor) def testHasGradient(self): canvas = Canvas(0, 1) canvas.effect = Effect() canvas.document = canvas.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado_GradienteLinear.svg" ) canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root, "path") canvas.abstractShape = AbstractShape(None, canvas.node, self.canvas, None) self.assertEqual( canvas.abstractShape.gradientHelper.hasGradient("fill"), "linear") canvas.document = canvas.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado_GradienteRadial.svg" ) canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root, "path") canvas.abstractShape = AbstractShape(None, canvas.node, self.canvas, None) self.assertEqual( canvas.abstractShape.gradientHelper.hasGradient("fill"), "radial") self.assertNotEqual( self.abstractShape.gradientHelper.hasGradient("fill"), "linear") def testGetGradientHref(self): returnValue = "linearGradient3022" canvas = Canvas(0, 1) canvas.effect = Effect() canvas.document = canvas.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado_GradienteLinear.svg" ) canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root, "path") canvas.abstractShape = AbstractShape(None, canvas.node, self.canvas, None) self.assertEqual( returnValue, canvas.abstractShape.gradientHelper.getGradientHref("fill")) returnValue = "ovalGradient3022" self.assertNotEqual( returnValue, canvas.abstractShape.gradientHelper.getGradientHref("fill")) def testHasClip(self): canvas = Canvas(0, 1) canvas.effect = Effect() canvas.document = canvas.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado_Clip.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root, "path") canvas.abstractShape = AbstractShape(None, canvas.node, self.canvas, None) self.assertTrue(canvas.abstractShape.hasClip()) self.assertFalse(self.abstractShape.hasClip()) def testGetClipHref(self): returnValue = "clipPath3191" canvas = Canvas(0, 1) canvas.effect = Effect() canvas.document = canvas.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado_Clip.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root, "path") canvas.abstractShape = AbstractShape(None, canvas.node, self.canvas, None) self.assertEqual(canvas.abstractShape.getClipId(), returnValue) def testStart(self): canvas2 = Canvas(0, 2) canvas2.write("\n// #path3033") self.abstractShape.initDraw() self.assertEqual(self.abstractShape.canvasContext.code, canvas2.code) canvas3 = Canvas(0, 3) canvas3.effect = Effect() canvas3.document = canvas3.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado_Clip.svg") canvas3.root = canvas3.effect.document.getroot() canvas3.node = self.returnsGnode(canvas3.root, "path") canvas3.abstractShape = AbstractShape(None, canvas3.node, canvas3, None) canvas4 = Canvas(0, 4) canvas4.write("\n// #path2987") canvas4.save() canvas3.abstractShape.initDraw() self.assertEqual(canvas3.abstractShape.canvasContext.code, canvas4.code) def testDraw(self): canvas = Canvas(0, 1) canvas.effect = Effect() canvas.document = canvas.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado.svg") canvas.root = canvas.effect.document.getroot() canvas.node = self.returnsGnode(canvas.root, "rect") rect = Rect("rect", canvas.node, canvas, None) rect.draw() self.assertEqual(rect.canvasContext.code, [ '\tctx.transform(1.000000, 0.000000, 0.380253, 0.924882, 0.000000, 0.000000);\n', "\tctx.lineJoin = 'miter';\n", "\tctx.strokeStyle = 'rgb(0, 0, 0)';\n", "\tctx.lineCap = 'butt';\n", '\tctx.lineWidth = 1.012632;\n', "\tctx.fillStyle = 'rgb(0, 0, 255)';\n", '\tctx.beginPath();\n', '\tctx.moveTo(-60.184902, 299.915122);\n', '\tctx.lineTo(-60.184902, 677.860048);\n', '\tctx.quadraticCurveTo(-60.184902, 683.719660, -60.184902, 683.719660);\n', '\tctx.lineTo(431.239998, 683.719660);\n', '\tctx.quadraticCurveTo(431.239998, 683.719660, 431.239998, 677.860048);\n', '\tctx.lineTo(431.239998, 299.915122);\n', '\tctx.quadraticCurveTo(431.239998, 294.055510, 431.239998, 294.055510);\n', '\tctx.lineTo(-60.184902, 294.055510);\n', '\tctx.quadraticCurveTo(-60.184902, 294.055510, -60.184902, 299.915122);\n', '\tctx.fill();\n', '\tctx.stroke();\n' ]) def testEnd(self): self.abstractShape.endDraw() self.assertEqual(self.abstractShape.canvasContext.code, []) canvas1 = Canvas(0, 3) canvas1.effect = Effect() canvas1.document = canvas1.effect.parse( "TestFiles/unit_test_svg_abstractShape_transformado.svg") canvas1.root = canvas1.effect.document.getroot() canvas1.node = self.returnsGnode(canvas1.root, "rect") canvas1.abstractShape = AbstractShape(None, canvas1.node, canvas1, None) canvas1.abstractShape.endDraw() canvas2 = Canvas(0, 2) canvas2.restore() self.assertEqual(canvas1.abstractShape.canvasContext.code, canvas2.code)