class TestCanvas(unittest.TestCase): def setUp(self): self.canvas = Canvas(100.0, 200.0) self.canvasWithContext = Canvas(100.0, 200.0, "foo") self.canvas.code = [] self.string_rgb = "FFBBAA" self.rgb = [251, 186, 10] def testBeginPathIfWritesRight(self): self.canvas.beginPath() self.assertEqual(self.canvas.code, ["\tctx.beginPath();\n"]) def testBeginPathIfWritesRightWithNewCtx(self): self.canvasWithContext.beginPath() self.assertEqual(self.canvasWithContext.code, ["\tfoo.beginPath();\n"]) def testPutStyleinCacheFirstElement(self): self.canvas.putStyleInCache({'foo': "bar"}) self.assertEqual(self.canvas.styleCache, {'foo': "bar"}) def testPutStyleInCacheAddSecondElement(self): self.canvas.putStyleInCache({'foo': "bar"}) self.canvas.putStyleInCache({'fooo': "baar"}) self.assertEqual(self.canvas.styleCache, {'fooo': "baar", 'foo':"bar"}) def testPutStyleInCacheChangingValue(self): self.canvas.putStyleInCache({'foo': "bar"}) self.canvas.putStyleInCache({'foo': "baar"}) self.assertEqual(self.canvas.styleCache, {'foo': "baar"}) def testPutStyleInCacheWithNULLValue(self): self.canvas.putStyleInCache({'foo': "bar"}) self.canvas.putStyleInCache({'foo':""}) self.assertEqual(self.canvas.styleCache, {'foo': "bar"}) def testGetColorWithALowerThenOne(self): retorno = self.canvas.getColor(self.string_rgb, 0) self.assertEqual(retorno, "'rgba(%d, %d, %d, %.1f)'" % (251, 186, 10, 0)) def testGetColorWithAHigherThenOne(self): retorno = self.canvas.getColor(self.string_rgb, 2) self.assertEqual(retorno, "'rgb(%d, %d, %d)'" % (251, 186, 10)) def testGetColorWithAEqualToOne(self): retorno = self.canvas.getColor(self.string_rgb, 1) self.assertEqual(retorno, "'rgb(%d, %d, %d)'" % (251, 186, 10)) def testBezierCurveTo(self): self.canvas.bezierCurveTo(4, 6, 2.3, -4, 1, 2) self.assertEqual(self.canvas.code, ["\tctx.bezierCurveTo(%f, %f, %f, %f, %f, %f);\n" % (4, 6, 2.3, -4, 1, 2)]) def testBezierCurveToWithNewCtx(self): self.canvasWithContext.bezierCurveTo(4, 6, 2, 4, 1, 2) self.assertEqual(self.canvasWithContext.code, ["\tfoo.bezierCurveTo(%f, %f, %f, %f, %f, %f);\n" % (4, 6, 2, 4, 1, 2)]) def testRectWithRXAndRY(self): self.canvas.rect(4, 6, 2, 4, 1, 2) self.assertEqual(self.canvas.code, ['\tctx.moveTo(4.000000, 8.000000);\n', '\tctx.lineTo(4.000000, 8.000000);\n', '\tctx.quadraticCurveTo(4.000000, 10.000000, 5.000000, 10.000000);\n', '\tctx.lineTo(5.000000, 10.000000);\n', '\tctx.quadraticCurveTo(6.000000, 10.000000, 6.000000, 8.000000);\n', '\tctx.lineTo(6.000000, 8.000000);\n', '\tctx.quadraticCurveTo(6.000000, 6.000000, 5.000000, 6.000000);\n', '\tctx.lineTo(5.000000, 6.000000);\n', '\tctx.quadraticCurveTo(4.000000, 6.000000, 4.000000, 8.000000);\n']) def testRectWithRXAndRYCtx(self): self.canvasWithContext.rect(4, 6, 2, 4, 1, 2) self.assertEqual(self.canvasWithContext.code, ['\tfoo.moveTo(4.000000, 8.000000);\n', '\tfoo.lineTo(4.000000, 8.000000);\n', '\tfoo.quadraticCurveTo(4.000000, 10.000000, 5.000000, 10.000000);\n', '\tfoo.lineTo(5.000000, 10.000000);\n', '\tfoo.quadraticCurveTo(6.000000, 10.000000, 6.000000, 8.000000);\n', '\tfoo.lineTo(6.000000, 8.000000);\n', '\tfoo.quadraticCurveTo(6.000000, 6.000000, 5.000000, 6.000000);\n', '\tfoo.lineTo(5.000000, 6.000000);\n', '\tfoo.quadraticCurveTo(4.000000, 6.000000, 4.000000, 8.000000);\n']) def testRectWithoutRXAndRY(self): self.canvas.rect(4, 6, 2, 4) self.assertEqual(self.canvas.code, ["\tctx.rect(%f, %f, %f, %f);\n" % (4, 6, 2, 4)]) def testRectWithoutRXAndRYCtx(self): self.canvasWithContext.rect(4, 6, 2, 4) self.assertEqual(self.canvasWithContext.code, ["\tfoo.rect(%f, %f, %f, %f);\n" % (4, 6, 2, 4)]) def testRectWithRX(self): self.canvas.rect(4, 6, 2, 4, 1) self.assertEqual(self.canvas.code, ['\tctx.moveTo(4.000000, 6.000000);\n', '\tctx.lineTo(4.000000, 10.000000);\n', '\tctx.quadraticCurveTo(4.000000, 10.000000, 5.000000, 10.000000);\n', '\tctx.lineTo(5.000000, 10.000000);\n', '\tctx.quadraticCurveTo(6.000000, 10.000000, 6.000000, 10.000000);\n', '\tctx.lineTo(6.000000, 6.000000);\n', '\tctx.quadraticCurveTo(6.000000, 6.000000, 5.000000, 6.000000);\n', '\tctx.lineTo(5.000000, 6.000000);\n', '\tctx.quadraticCurveTo(4.000000, 6.000000, 4.000000, 6.000000);\n']) def testRectWithRXCtx(self): self.canvasWithContext.rect(4, 6, 2, 4, 1) self.assertEqual(self.canvasWithContext.code, ['\tfoo.moveTo(4.000000, 6.000000);\n', '\tfoo.lineTo(4.000000, 10.000000);\n', '\tfoo.quadraticCurveTo(4.000000, 10.000000, 5.000000, 10.000000);\n', '\tfoo.lineTo(5.000000, 10.000000);\n', '\tfoo.quadraticCurveTo(6.000000, 10.000000, 6.000000, 10.000000);\n', '\tfoo.lineTo(6.000000, 6.000000);\n', '\tfoo.quadraticCurveTo(6.000000, 6.000000, 5.000000, 6.000000);\n', '\tfoo.lineTo(5.000000, 6.000000);\n', '\tfoo.quadraticCurveTo(4.000000, 6.000000, 4.000000, 6.000000);\n']) def testLineTo(self): self.canvas.lineTo(4, 6) self.assertEqual(self.canvas.code, ["\tctx.lineTo(%f, %f);\n" % (4, 6)]) def testLineToWithNewCtx(self): self.canvasWithContext.lineTo(4, 6) self.assertEqual(self.canvasWithContext.code, ["\tfoo.lineTo(%f, %f);\n" % (4, 6)]) def testMoveTo(self): self.canvas.moveTo(4, 6) self.assertEqual(self.canvas.code, ["\tctx.moveTo(%f, %f);\n" % (4, 6)]) def testMoveToWithNewCtx(self): self.canvasWithContext.moveTo(4, 6) self.assertEqual(self.canvasWithContext.code, ["\tfoo.moveTo(%f, %f);\n" % (4, 6)]) def testSetStrokeMiterlimit(self): self.canvas.setStrokeMiterlimit("banana") self.assertEqual(self.canvas.code, ["\tctx.miterLimit = %s;\n" % "banana"]) def testSetStrokeMiterlimitNewCtx(self): self.canvasWithContext.setStrokeMiterlimit("banana") self.assertEqual(self.canvasWithContext.code, ["\tfoo.miterLimit = %s;\n" % "banana"]) def testSetStrokeLinejoin(self): self.canvas.setStrokeLinejoin("banana") self.assertEqual(self.canvas.code, ["\tctx.lineJoin = '%s';\n" % "banana"]) def testSetStrokeLinejoinNewCtx(self): self.canvasWithContext.setStrokeLinejoin("banana") self.assertEqual(self.canvasWithContext.code, ["\tfoo.lineJoin = '%s';\n" % "banana"]) def testSetStrokeLinecap(self): self.canvas.setStrokeLinecap("banana") self.assertEqual(self.canvas.code, ["\tctx.lineCap = '%s';\n" % "banana"]) def testSetStrokeLinecapNewCtx(self): self.canvasWithContext.setStrokeLinecap("banana") self.assertEqual(self.canvasWithContext.code, ["\tfoo.lineCap = '%s';\n" % "banana"]) def testSetStrokeWidth(self): self.canvas.setStrokeWidth("2px") self.assertEqual(self.canvas.code, ["\tctx.lineWidth = %f;\n" % 2]) def testSetStrokeWidthNewCtx(self): self.canvasWithContext.setStrokeWidth("2px") self.assertEqual(self.canvasWithContext.code, ["\tfoo.lineWidth = %f;\n" % 2]) def testQuadraticCurveTo(self): self.canvas.quadraticCurveTo(4, 6, 2.3, -4) self.assertEqual(self.canvas.code, ["\tctx.quadraticCurveTo(%f, %f, %f, %f);\n" % (4, 6, 2.3, -4)]) def testQuadraticCurveToWithNewCtx(self): self.canvasWithContext.quadraticCurveTo(4, 6, 2, 4) self.assertEqual(self.canvasWithContext.code, ["\tfoo.quadraticCurveTo(%f, %f, %f, %f);\n" % (4, 6, 2, 4)]) def testFillText(self): self.canvas.fillText("batata", 4, 6) self.assertEqual(self.canvas.code, ["\tctx.fillText(\"%s\", %f, %f);\n" % ("batata", 4, 6)]) def testFillTextWithNewCtx(self): self.canvasWithContext.fillText("batata", 4, 6) self.assertEqual(self.canvasWithContext.code, ["\tfoo.fillText(\"%s\", %f, %f);\n" % ("batata", 4, 6)]) def testSave(self): self.canvas.save() self.assertEqual(self.canvas.code, ["\tctx.save();\n"]) def testSaveWithNewCtx(self): self.canvasWithContext.save() self.assertEqual(self.canvasWithContext.code, ["\tfoo.save();\n"]) def testClip(self): self.canvas.clip() self.assertEqual(self.canvas.code, ["\tctx.clip();\n"]) def testClipWithNewCtx(self): self.canvasWithContext.clip() self.assertEqual(self.canvasWithContext.code, ["\tfoo.clip();\n"]) def testArc(self): self.canvas.arc(1, 2, 3, 4, 5, 1) self.assertEqual(self.canvas.code, ["\tctx.arc(%f, %f, %f, %f, %.8f, %d);\n" % (1, 2, 3, 4, 5, 1)]) def testArcWithNewCtx(self): self.canvasWithContext.arc(1, 2, 3, 4, 5, 1) self.assertEqual(self.canvasWithContext.code, ["\tfoo.arc(%f, %f, %f, %f, %.8f, %d);\n" % (1, 2, 3, 4, 5, 1)]) def testWriteCorrectInsertion(self): text = "ctx.Texto" self.canvas.write(text) self.assertEqual(self.canvas.code[0], "\t" + text + "\n") def testWriteCorrectInsertionWithNewCtx(self): text = "ctx.Texto" self.canvasWithContext.write(text) self.assertEqual(self.canvasWithContext.code[0], "\t" + text.replace("ctx", self.canvasWithContext.obj) + "\n") def testOutput(self): from textwrap import dedent output = self.canvas.output() expected_output = """ <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Inkscape Output</title> </head> <body> <canvas id='canvas' width='%d' height='%d'></canvas> <script> var %s = document.getElementById("canvas").getContext("2d"); %s </script> </body> </html> """ expected_output = dedent(expected_output) % (self.canvas.width, self.canvas.height, self.canvas.obj, "".join(self.canvas.code)) self.assertEqual(output, expected_output) def testCreateLinearGradient(self): href = "str" x1, y1, x2, y2 = 0.0 , 2.0 , 3.0, 4.0 data = (href, x1, y1, x2, y2) expectedList = ["\tvar %s = ctx.createLinearGradient(%f,%f,%f,%f);\n" % data] self.canvas.createLinearGradient(href,x1, y1, x2, y2) self.assertEqual(self.canvas.code, expectedList) def testCreateRadialGradient(self): href = "str" cx1, cy1, rx, cx2, cy2, ry = 0.0 , 2.0, 3.0, 4.0, 5.0, 6.0 data = (href, cx1, cy1, rx, cx2, cy2, ry) expectedList = ["\tvar %s = ctx.createRadialGradient(%f,%f,%f,%f,%f,%f);\n" % data] self.canvas.createRadialGradient(href, cx1, cy1, rx, cx2, cy2, ry) self.assertEqual(self.canvas.code, expectedList) def testAddColorStop(self): href, pos, color = "href" , 2.0, "color" data = (href, pos, color) expectedList = ["\t%s.addColorStop(%f, %s);\n" % data] self.canvas.addColorStop(href, pos, color) self.assertEqual(self.canvas.code, expectedList) def testSetOpacity(self): #Float Test value = 2.5 expectedReturn = "\tctx.globalAlpha = %.1f;\n" % float(value) self.canvas.setOpacity(value) self.assertEqual(self.canvas.code[0], expectedReturn) #Integer Test value = 2 expectedReturn = "\tctx.globalAlpha = %.1f;\n" % float(value) self.canvas.setOpacity(value) self.assertEqual(self.canvas.code[1], expectedReturn) def testSetFillNoOpacity(self): value = "url()" self.canvas.setFill(value) self.assertEqual(self.canvas.code, []) value = "0 0 255" fill = self.canvas.getColor(value, 1) self.canvas.setFill(value) self.assertEqual(self.canvas.code[0], "\tctx.fillStyle = %s;\n" % fill) value = "0 0 254" fill = self.canvas.getColor(value, 1) self.assertNotEqual(self.canvas.code[0], "\tctx.fillStyle = %s;\n" % fill) def testSetFillWithOpacity(self): self.canvas.style["fill-opacity"] = 0.5 value = "url()" self.canvas.setFill(value) self.assertEqual(self.canvas.code, []) value = "0 0 255" fill = self.canvas.getColor(value, 0.5) self.canvas.setFill(value) self.assertEqual(self.canvas.code[0], "\tctx.fillStyle = %s;\n" % fill) value = "0 0 254" fill = self.canvas.getColor(value, 0.5) self.assertNotEqual(self.canvas.code[0], "\tctx.fillStyle = %s;\n" % fill) def testSetStroke(self): value = "0 0 255" self.canvas.setStroke(value) self.assertEqual(self.canvas.code[0], "\tctx.strokeStyle = %s;\n" % self.canvas.getColor(value, 1)) value = "0 0 254" self.assertNotEqual(self.canvas.code[0], "\tctx.strokeStyle = %s;\n" % self.canvas.getColor(value, 1)) self.canvas.style["stroke-opacity"] = 0.5 value = "0 0 255" self.canvas.setStroke(value) self.assertEqual(self.canvas.code[1], "\tctx.strokeStyle = %s;\n" % self.canvas.getColor(value, 0.5)) value = "0 0 254" self.assertNotEqual(self.canvas.code[0], "\tctx.strokeStyle = %s;\n" % self.canvas.getColor(value, 0.5)) def testSetFont(self): value = "Fonte" self.canvas.setFont(value) self.assertEqual(self.canvas.code[0],"\tctx.font = \"%s\";\n" % value) def testTranslate(self): cx = cy = 1.0 self.canvas.translate(cx, cy) self.assertEqual(self.canvas.code[0],"\tctx.translate(%f, %f);\n" % (cx, cy)) def testRotate(self): angle = 1.0 self.canvas.rotate(angle) self.assertEqual(self.canvas.code[0],"\tctx.rotate(%f);\n" % angle) def testsScale(self): rx, ry = 1.0, 2.0 self.canvas.scale(rx, ry) self.assertEqual(self.canvas.code[0],"\tctx.scale(%f, %f);\n" % (rx, ry)) def testsTransform(self): m11, m12, m21, m22, dx, dy = 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 self.canvas.transform(m11, m12, m21, m22, dx, dy) self.assertEqual(self.canvas.code[0],"\tctx.transform(%f, %f, %f, %f, %f, %f);\n" % (m11, m12, m21, m22, dx, dy)) def testRestore(self): self.canvas.restore() self.assertEqual(self.canvas.code[0],"\tctx.restore();\n") def testClosePath(self): text = "ctx.closePath();" self.canvas.closePath(False) self.assertEquals(self.canvas.code, []) self.canvas.closePath(True) self.assertEqual(self.canvas.code[0],"\t"+text+"\n") def testFillWithValue(self): text = "ctx.fill();" self.canvas.style["fill"] = "fill" self.canvas.fill() self.assertEqual(self.canvas.code[0],"\t"+text+"\n") def testFillWithoutValue(self): self.canvas.style["fill"] = "none" self.canvas.fill() self.assertEqual(self.canvas.code,[]) def testStrokeWithValue(self): text = "ctx.stroke();" self.canvas.style["stroke"] = "stroke" self.canvas.stroke() self.assertEqual(self.canvas.code[0],"\t"+text+"\n") def testStrokeWithoutValue(self): self.canvas.style["stroke"] = "none" self.canvas.stroke() self.assertEqual(self.canvas.code,[])
class TestCanvas(unittest.TestCase): def setUp(self): self.canvas = Canvas(100.0, 200.0) self.canvasWithContext = Canvas(100.0, 200.0, "foo") self.canvas.code = [] self.string_rgb = "FFBBAA" self.rgb = [251, 186, 10] def testBeginPathIfWritesRight(self): self.canvas.beginPath() self.assertEqual(self.canvas.code, ["\tctx.beginPath();\n"]) def testBeginPathIfWritesRightWithNewCtx(self): self.canvasWithContext.beginPath() self.assertEqual(self.canvasWithContext.code, ["\tfoo.beginPath();\n"]) def testPutStyleinCacheFirstElement(self): self.canvas.putStyleInCache({'foo': "bar"}) self.assertEqual(self.canvas.styleCache, {'foo': "bar"}) def testPutStyleInCacheAddSecondElement(self): self.canvas.putStyleInCache({'foo': "bar"}) self.canvas.putStyleInCache({'fooo': "baar"}) self.assertEqual(self.canvas.styleCache, { 'fooo': "baar", 'foo': "bar" }) def testPutStyleInCacheChangingValue(self): self.canvas.putStyleInCache({'foo': "bar"}) self.canvas.putStyleInCache({'foo': "baar"}) self.assertEqual(self.canvas.styleCache, {'foo': "baar"}) def testPutStyleInCacheWithNULLValue(self): self.canvas.putStyleInCache({'foo': "bar"}) self.canvas.putStyleInCache({'foo': ""}) self.assertEqual(self.canvas.styleCache, {'foo': "bar"}) def testGetColorWithALowerThenOne(self): retorno = self.canvas.getColor(self.string_rgb, 0) self.assertEqual(retorno, "'rgba(%d, %d, %d, %.1f)'" % (251, 186, 10, 0)) def testGetColorWithAHigherThenOne(self): retorno = self.canvas.getColor(self.string_rgb, 2) self.assertEqual(retorno, "'rgb(%d, %d, %d)'" % (251, 186, 10)) def testGetColorWithAEqualToOne(self): retorno = self.canvas.getColor(self.string_rgb, 1) self.assertEqual(retorno, "'rgb(%d, %d, %d)'" % (251, 186, 10)) def testBezierCurveTo(self): self.canvas.bezierCurveTo(4, 6, 2.3, -4, 1, 2) self.assertEqual(self.canvas.code, [ "\tctx.bezierCurveTo(%f, %f, %f, %f, %f, %f);\n" % (4, 6, 2.3, -4, 1, 2) ]) def testBezierCurveToWithNewCtx(self): self.canvasWithContext.bezierCurveTo(4, 6, 2, 4, 1, 2) self.assertEqual(self.canvasWithContext.code, [ "\tfoo.bezierCurveTo(%f, %f, %f, %f, %f, %f);\n" % (4, 6, 2, 4, 1, 2) ]) def testRectWithRXAndRY(self): self.canvas.rect(4, 6, 2, 4, 1, 2) self.assertEqual(self.canvas.code, [ '\tctx.moveTo(4.000000, 8.000000);\n', '\tctx.lineTo(4.000000, 8.000000);\n', '\tctx.quadraticCurveTo(4.000000, 10.000000, 5.000000, 10.000000);\n', '\tctx.lineTo(5.000000, 10.000000);\n', '\tctx.quadraticCurveTo(6.000000, 10.000000, 6.000000, 8.000000);\n', '\tctx.lineTo(6.000000, 8.000000);\n', '\tctx.quadraticCurveTo(6.000000, 6.000000, 5.000000, 6.000000);\n', '\tctx.lineTo(5.000000, 6.000000);\n', '\tctx.quadraticCurveTo(4.000000, 6.000000, 4.000000, 8.000000);\n' ]) def testRectWithRXAndRYCtx(self): self.canvasWithContext.rect(4, 6, 2, 4, 1, 2) self.assertEqual(self.canvasWithContext.code, [ '\tfoo.moveTo(4.000000, 8.000000);\n', '\tfoo.lineTo(4.000000, 8.000000);\n', '\tfoo.quadraticCurveTo(4.000000, 10.000000, 5.000000, 10.000000);\n', '\tfoo.lineTo(5.000000, 10.000000);\n', '\tfoo.quadraticCurveTo(6.000000, 10.000000, 6.000000, 8.000000);\n', '\tfoo.lineTo(6.000000, 8.000000);\n', '\tfoo.quadraticCurveTo(6.000000, 6.000000, 5.000000, 6.000000);\n', '\tfoo.lineTo(5.000000, 6.000000);\n', '\tfoo.quadraticCurveTo(4.000000, 6.000000, 4.000000, 8.000000);\n' ]) def testRectWithoutRXAndRY(self): self.canvas.rect(4, 6, 2, 4) self.assertEqual(self.canvas.code, ["\tctx.rect(%f, %f, %f, %f);\n" % (4, 6, 2, 4)]) def testRectWithoutRXAndRYCtx(self): self.canvasWithContext.rect(4, 6, 2, 4) self.assertEqual(self.canvasWithContext.code, ["\tfoo.rect(%f, %f, %f, %f);\n" % (4, 6, 2, 4)]) def testRectWithRX(self): self.canvas.rect(4, 6, 2, 4, 1) self.assertEqual(self.canvas.code, [ '\tctx.moveTo(4.000000, 6.000000);\n', '\tctx.lineTo(4.000000, 10.000000);\n', '\tctx.quadraticCurveTo(4.000000, 10.000000, 5.000000, 10.000000);\n', '\tctx.lineTo(5.000000, 10.000000);\n', '\tctx.quadraticCurveTo(6.000000, 10.000000, 6.000000, 10.000000);\n', '\tctx.lineTo(6.000000, 6.000000);\n', '\tctx.quadraticCurveTo(6.000000, 6.000000, 5.000000, 6.000000);\n', '\tctx.lineTo(5.000000, 6.000000);\n', '\tctx.quadraticCurveTo(4.000000, 6.000000, 4.000000, 6.000000);\n' ]) def testRectWithRXCtx(self): self.canvasWithContext.rect(4, 6, 2, 4, 1) self.assertEqual(self.canvasWithContext.code, [ '\tfoo.moveTo(4.000000, 6.000000);\n', '\tfoo.lineTo(4.000000, 10.000000);\n', '\tfoo.quadraticCurveTo(4.000000, 10.000000, 5.000000, 10.000000);\n', '\tfoo.lineTo(5.000000, 10.000000);\n', '\tfoo.quadraticCurveTo(6.000000, 10.000000, 6.000000, 10.000000);\n', '\tfoo.lineTo(6.000000, 6.000000);\n', '\tfoo.quadraticCurveTo(6.000000, 6.000000, 5.000000, 6.000000);\n', '\tfoo.lineTo(5.000000, 6.000000);\n', '\tfoo.quadraticCurveTo(4.000000, 6.000000, 4.000000, 6.000000);\n' ]) def testLineTo(self): self.canvas.lineTo(4, 6) self.assertEqual(self.canvas.code, ["\tctx.lineTo(%f, %f);\n" % (4, 6)]) def testLineToWithNewCtx(self): self.canvasWithContext.lineTo(4, 6) self.assertEqual(self.canvasWithContext.code, ["\tfoo.lineTo(%f, %f);\n" % (4, 6)]) def testMoveTo(self): self.canvas.moveTo(4, 6) self.assertEqual(self.canvas.code, ["\tctx.moveTo(%f, %f);\n" % (4, 6)]) def testMoveToWithNewCtx(self): self.canvasWithContext.moveTo(4, 6) self.assertEqual(self.canvasWithContext.code, ["\tfoo.moveTo(%f, %f);\n" % (4, 6)]) def testSetStrokeMiterlimit(self): self.canvas.setStrokeMiterlimit("banana") self.assertEqual(self.canvas.code, ["\tctx.miterLimit = %s;\n" % "banana"]) def testSetStrokeMiterlimitNewCtx(self): self.canvasWithContext.setStrokeMiterlimit("banana") self.assertEqual(self.canvasWithContext.code, ["\tfoo.miterLimit = %s;\n" % "banana"]) def testSetStrokeLinejoin(self): self.canvas.setStrokeLinejoin("banana") self.assertEqual(self.canvas.code, ["\tctx.lineJoin = '%s';\n" % "banana"]) def testSetStrokeLinejoinNewCtx(self): self.canvasWithContext.setStrokeLinejoin("banana") self.assertEqual(self.canvasWithContext.code, ["\tfoo.lineJoin = '%s';\n" % "banana"]) def testSetStrokeLinecap(self): self.canvas.setStrokeLinecap("banana") self.assertEqual(self.canvas.code, ["\tctx.lineCap = '%s';\n" % "banana"]) def testSetStrokeLinecapNewCtx(self): self.canvasWithContext.setStrokeLinecap("banana") self.assertEqual(self.canvasWithContext.code, ["\tfoo.lineCap = '%s';\n" % "banana"]) def testSetStrokeWidth(self): self.canvas.setStrokeWidth("2px") self.assertEqual(self.canvas.code, ["\tctx.lineWidth = %f;\n" % 2]) def testSetStrokeWidthNewCtx(self): self.canvasWithContext.setStrokeWidth("2px") self.assertEqual(self.canvasWithContext.code, ["\tfoo.lineWidth = %f;\n" % 2]) def testQuadraticCurveTo(self): self.canvas.quadraticCurveTo(4, 6, 2.3, -4) self.assertEqual( self.canvas.code, ["\tctx.quadraticCurveTo(%f, %f, %f, %f);\n" % (4, 6, 2.3, -4)]) def testQuadraticCurveToWithNewCtx(self): self.canvasWithContext.quadraticCurveTo(4, 6, 2, 4) self.assertEqual( self.canvasWithContext.code, ["\tfoo.quadraticCurveTo(%f, %f, %f, %f);\n" % (4, 6, 2, 4)]) def testFillText(self): self.canvas.fillText("batata", 4, 6) self.assertEqual( self.canvas.code, ["\tctx.fillText(\"%s\", %f, %f);\n" % ("batata", 4, 6)]) def testFillTextWithNewCtx(self): self.canvasWithContext.fillText("batata", 4, 6) self.assertEqual( self.canvasWithContext.code, ["\tfoo.fillText(\"%s\", %f, %f);\n" % ("batata", 4, 6)]) def testSave(self): self.canvas.save() self.assertEqual(self.canvas.code, ["\tctx.save();\n"]) def testSaveWithNewCtx(self): self.canvasWithContext.save() self.assertEqual(self.canvasWithContext.code, ["\tfoo.save();\n"]) def testClip(self): self.canvas.clip() self.assertEqual(self.canvas.code, ["\tctx.clip();\n"]) def testClipWithNewCtx(self): self.canvasWithContext.clip() self.assertEqual(self.canvasWithContext.code, ["\tfoo.clip();\n"]) def testArc(self): self.canvas.arc(1, 2, 3, 4, 5, 1) self.assertEqual( self.canvas.code, ["\tctx.arc(%f, %f, %f, %f, %.8f, %d);\n" % (1, 2, 3, 4, 5, 1)]) def testArcWithNewCtx(self): self.canvasWithContext.arc(1, 2, 3, 4, 5, 1) self.assertEqual( self.canvasWithContext.code, ["\tfoo.arc(%f, %f, %f, %f, %.8f, %d);\n" % (1, 2, 3, 4, 5, 1)]) def testWriteCorrectInsertion(self): text = "ctx.Texto" self.canvas.write(text) self.assertEqual(self.canvas.code[0], "\t" + text + "\n") def testWriteCorrectInsertionWithNewCtx(self): text = "ctx.Texto" self.canvasWithContext.write(text) self.assertEqual( self.canvasWithContext.code[0], "\t" + text.replace("ctx", self.canvasWithContext.obj) + "\n") def testOutput(self): from textwrap import dedent output = self.canvas.output() expected_output = """ <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Inkscape Output</title> </head> <body> <canvas id='canvas' width='%d' height='%d'></canvas> <script> var %s = document.getElementById("canvas").getContext("2d"); %s </script> </body> </html> """ expected_output = dedent(expected_output) % ( self.canvas.width, self.canvas.height, self.canvas.obj, "".join( self.canvas.code)) self.assertEqual(output, expected_output) def testCreateLinearGradient(self): href = "str" x1, y1, x2, y2 = 0.0, 2.0, 3.0, 4.0 data = (href, x1, y1, x2, y2) expectedList = [ "\tvar %s = ctx.createLinearGradient(%f,%f,%f,%f);\n" % data ] self.canvas.createLinearGradient(href, x1, y1, x2, y2) self.assertEqual(self.canvas.code, expectedList) def testCreateRadialGradient(self): href = "str" cx1, cy1, rx, cx2, cy2, ry = 0.0, 2.0, 3.0, 4.0, 5.0, 6.0 data = (href, cx1, cy1, rx, cx2, cy2, ry) expectedList = [ "\tvar %s = ctx.createRadialGradient(%f,%f,%f,%f,%f,%f);\n" % data ] self.canvas.createRadialGradient(href, cx1, cy1, rx, cx2, cy2, ry) self.assertEqual(self.canvas.code, expectedList) def testAddColorStop(self): href, pos, color = "href", 2.0, "color" data = (href, pos, color) expectedList = ["\t%s.addColorStop(%f, %s);\n" % data] self.canvas.addColorStop(href, pos, color) self.assertEqual(self.canvas.code, expectedList) def testSetOpacity(self): #Float Test value = 2.5 expectedReturn = "\tctx.globalAlpha = %.1f;\n" % float(value) self.canvas.setOpacity(value) self.assertEqual(self.canvas.code[0], expectedReturn) #Integer Test value = 2 expectedReturn = "\tctx.globalAlpha = %.1f;\n" % float(value) self.canvas.setOpacity(value) self.assertEqual(self.canvas.code[1], expectedReturn) def testSetFillNoOpacity(self): value = "url()" self.canvas.setFill(value) self.assertEqual(self.canvas.code, []) value = "0 0 255" fill = self.canvas.getColor(value, 1) self.canvas.setFill(value) self.assertEqual(self.canvas.code[0], "\tctx.fillStyle = %s;\n" % fill) value = "0 0 254" fill = self.canvas.getColor(value, 1) self.assertNotEqual(self.canvas.code[0], "\tctx.fillStyle = %s;\n" % fill) def testSetFillWithOpacity(self): self.canvas.style["fill-opacity"] = 0.5 value = "url()" self.canvas.setFill(value) self.assertEqual(self.canvas.code, []) value = "0 0 255" fill = self.canvas.getColor(value, 0.5) self.canvas.setFill(value) self.assertEqual(self.canvas.code[0], "\tctx.fillStyle = %s;\n" % fill) value = "0 0 254" fill = self.canvas.getColor(value, 0.5) self.assertNotEqual(self.canvas.code[0], "\tctx.fillStyle = %s;\n" % fill) def testSetStroke(self): value = "0 0 255" self.canvas.setStroke(value) self.assertEqual( self.canvas.code[0], "\tctx.strokeStyle = %s;\n" % self.canvas.getColor(value, 1)) value = "0 0 254" self.assertNotEqual( self.canvas.code[0], "\tctx.strokeStyle = %s;\n" % self.canvas.getColor(value, 1)) self.canvas.style["stroke-opacity"] = 0.5 value = "0 0 255" self.canvas.setStroke(value) self.assertEqual( self.canvas.code[1], "\tctx.strokeStyle = %s;\n" % self.canvas.getColor(value, 0.5)) value = "0 0 254" self.assertNotEqual( self.canvas.code[0], "\tctx.strokeStyle = %s;\n" % self.canvas.getColor(value, 0.5)) def testSetFont(self): value = "Fonte" self.canvas.setFont(value) self.assertEqual(self.canvas.code[0], "\tctx.font = \"%s\";\n" % value) def testTranslate(self): cx = cy = 1.0 self.canvas.translate(cx, cy) self.assertEqual(self.canvas.code[0], "\tctx.translate(%f, %f);\n" % (cx, cy)) def testRotate(self): angle = 1.0 self.canvas.rotate(angle) self.assertEqual(self.canvas.code[0], "\tctx.rotate(%f);\n" % angle) def testsScale(self): rx, ry = 1.0, 2.0 self.canvas.scale(rx, ry) self.assertEqual(self.canvas.code[0], "\tctx.scale(%f, %f);\n" % (rx, ry)) def testsTransform(self): m11, m12, m21, m22, dx, dy = 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 self.canvas.transform(m11, m12, m21, m22, dx, dy) self.assertEqual( self.canvas.code[0], "\tctx.transform(%f, %f, %f, %f, %f, %f);\n" % (m11, m12, m21, m22, dx, dy)) def testRestore(self): self.canvas.restore() self.assertEqual(self.canvas.code[0], "\tctx.restore();\n") def testClosePath(self): text = "ctx.closePath();" self.canvas.closePath(False) self.assertEquals(self.canvas.code, []) self.canvas.closePath(True) self.assertEqual(self.canvas.code[0], "\t" + text + "\n") def testFillWithValue(self): text = "ctx.fill();" self.canvas.style["fill"] = "fill" self.canvas.fill() self.assertEqual(self.canvas.code[0], "\t" + text + "\n") def testFillWithoutValue(self): self.canvas.style["fill"] = "none" self.canvas.fill() self.assertEqual(self.canvas.code, []) def testStrokeWithValue(self): text = "ctx.stroke();" self.canvas.style["stroke"] = "stroke" self.canvas.stroke() self.assertEqual(self.canvas.code[0], "\t" + text + "\n") def testStrokeWithoutValue(self): self.canvas.style["stroke"] = "none" self.canvas.stroke() self.assertEqual(self.canvas.code, [])