コード例 #1
0
    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
コード例 #2
0
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)
コード例 #3
0
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'])
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
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)
コード例 #7
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)
コード例 #8
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'])
コード例 #9
0
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")
コード例 #10
0
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")
コード例 #11
0
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)) )
コード例 #12
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'])
コード例 #13
0
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'])
コード例 #14
0
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)
コード例 #15
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'
        ])
コード例 #16
0
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)
コード例 #17
0
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)