1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
import unittest
import io
from svgelements import *
class TestElementCopy(unittest.TestCase):
"""These tests test the validity of object copy."""
def test_copy_objects(self):
# CSS OBJECTS
length = Length('1in')
length_copy = copy(length)
self.assertEqual(length, length_copy)
color = Color('red')
color_copy = copy(color)
self.assertEqual(color, color_copy)
point = Point("2,4.58")
point_copy = copy(point)
self.assertEqual(point, point_copy)
angle = Angle.parse('1.2grad')
angle_copy = copy(angle)
self.assertEqual(angle, angle_copy)
matrix = Matrix("scale(4.5) translate(2,2.4) rotate(40grad)")
matrix_copy = copy(matrix)
self.assertEqual(matrix, matrix_copy)
# SVG OBJECTS
viewbox = Viewbox('0 0 103 109', preserveAspectRatio="xMaxyMin slice")
viewbox_copy = copy(viewbox)
# self.assertEqual(viewbox, viewbox_copy)
svgelement = SVGElement({'tag': "element", 'id': 'testelement1234'})
svgelement_copy = copy(svgelement)
self.assertIsNotNone(svgelement_copy.values)
# self.assertEqual(svgelement, svgelement_copy)
# PATH SEGMENTS
move = Move((8,8.78))
move_copy = copy(move)
self.assertEqual(move, move_copy)
close = Close()
close_copy = copy(close)
self.assertEqual(close, close_copy)
line = Line((8, 8.78))
line_copy = copy(line)
self.assertEqual(line, line_copy)
quad = QuadraticBezier((8, 8.78), (50, 50.78), (50, 5))
quad_copy = copy(quad)
self.assertEqual(quad, quad_copy)
cubic = CubicBezier((8, 8.78), (1, 6.78), (8, 9.78), (50, 5))
cubic_copy = copy(cubic)
self.assertEqual(cubic, cubic_copy)
arc = Arc(start=(0,0), end=(25,0), control=(10,10))
arc_copy = copy(arc)
self.assertEqual(arc, arc_copy)
# SHAPES
path = Path("M5,5V10Z")
path_copy = copy(path)
self.assertEqual(path, path_copy)
self.assertIsNotNone(path_copy.values)
rect = Rect(0, 0, 1000, 1000, ry=20)
rect_copy = copy(rect)
self.assertEqual(rect, rect_copy)
self.assertIsNotNone(rect_copy.values)
ellipse = Ellipse(0, 0, 1000, 1000)
ellipse_copy = copy(ellipse)
self.assertEqual(ellipse, ellipse_copy)
self.assertIsNotNone(ellipse_copy.values)
circle = Circle(x=0, y=0, r=1000)
circle_copy = copy(circle)
self.assertEqual(circle, circle_copy)
self.assertIsNotNone(circle_copy.values)
sline = SimpleLine((0, 0), (1000, 1000))
sline_copy = copy(sline)
self.assertEqual(sline, sline_copy)
self.assertIsNotNone(sline_copy.values)
rect = Rect(0, 0, 1000, 1000, ry=20)
rect_copy = copy(rect)
self.assertEqual(rect, rect_copy)
self.assertIsNotNone(rect_copy.values)
pline = Polyline((0, 0), (1000, 1000), (0,1000), (0,0))
pline_copy = copy(pline)
self.assertEqual(pline, pline_copy)
self.assertIsNotNone(pline_copy.values)
pgon = Polygon((0, 0), (1000, 1000), (0,1000))
pgon_copy = copy(pgon)
self.assertEqual(pgon, pgon_copy)
self.assertIsNotNone(pgon_copy.values)
group = Group(stroke="cornflower")
group_copy = copy(group)
self.assertEqual(group, group_copy)
self.assertIsNotNone(group_copy.values)
cpath = ClipPath(stroke="blue")
cpath_copy = copy(cpath)
self.assertEqual(cpath, cpath_copy)
self.assertIsNotNone(cpath_copy.values)
text = SVGText("HelloWorld")
text_copy = copy(text)
# self.assertEqual(text,text_copy)
self.assertIsNotNone(text_copy.values)
image = SVGImage(viewbox=viewbox)
image_copy = copy(image)
# self.assertEqual(image,image_copy)
self.assertIsNotNone(image_copy.values)
desc = Desc({"apple": 7}, desc="Some description")
desc_copy = copy(desc)
# self.assertEqual(desc, desc_copy)
self.assertIsNotNone(desc_copy.values)
title = Title({"apple": 3}, title="Some Title")
title_copy = copy(title)
# self.assertEqual(title, title_copy)
self.assertIsNotNone(title_copy.values)
q = io.StringIO(u'''<?xml version="1.0" encoding="utf-8" ?>
<svg>
<path d="M0 36c0 128.082 96 214 251 214c153.639 0 293 -37 293 -264c0 -220 -158.05 -325.976 -254 -391c-121 -82 -200.248 -117.634 -339 -171c-5.93907 -2.28437 -11.3166 -3.27496 -15.9795 -3.27496c-11.9348 0 -19.1871 6.48977 -19.1871 14.3854 c0 7.04844 5.77949 15.2172 19.1666 20.8896c118 50 225 86 316 200c91 113 125 205.913 125 350c0 135 -33 224 -145 224c-46.615 0 -77.452 -12.593 -112 -44c-8.09234 -7.35667 -11.3121 -13.0296 -11.3121 -17.4022c0 -13.4585 30.5027 -14.5978 43.3121 -14.5978 c69 0 123 -64.8867 123 -136c0 -75 -48 -132 -139 -132c-79.1582 0 -135 74 -135 150zM572 128c0 35 29 64 64 64s63 -29 63 -64s-28 -63 -63 -63s-64 28 -64 63zM572 -131c0 35 29 64 64 64s63 -29 63 -64s-28 -63 -63 -63s-64 28 -64 63z" transform="rotate(45deg)"/>
</svg>''')
svg = SVG.parse(q)
svg_copy = copy(svg)
self.assertEqual(svg, svg_copy)
self.assertIsNotNone(svg_copy.values)
|