| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import os
- import sys
- import io
- import pprint
- import tempfile
- import unittest
- from drawio2py import parser, abstract_syntax, generator, shapelib, util
- DATADIR = os.path.join(os.path.dirname(__file__), "data")
- class DummyOutput:
- def write(self, text: str):
- pass
- def run_test(filename):
- # Parse (1st time):
- asyntax = parser.Parser.parse(os.path.join(DATADIR,filename))
- # Generate .drawio (1st time):
- csyntax = io.BytesIO()
- generator.generate(asyntax, csyntax)
- csyntax.seek(0)
- # Parse (2nd time):
- asyntax2 = parser.Parser.parse(csyntax)
- # Generate .drawio (2nd time):
- csyntax2 = io.BytesIO()
- generator.generate(asyntax2, csyntax2)
- csyntax2.seek(0)
- if (csyntax.getvalue() != csyntax2.getvalue()):
- # print("csyntax:", csyntax.getvalue())
- # print("csyntax2:", csyntax2.getvalue())
- raise Exception("Files differ after round-trip!")
- def parse_shapelib(filename):
- return shapelib.parse_library(os.path.join(DATADIR,filename))
- class Tests(unittest.TestCase):
- def test_1(self):
- run_test("test.drawio")
- def test_2(self):
- run_test("overview.drawio") # we eat our own dog food :)
- def test_3(self):
- run_test("TrivialPM.drawio")
- def test_label_offset(self):
- run_test("labelOffset.drawio")
- # asyntax = parser.Parser.parse(os.path.join(DATADIR, "labelOffset.drawio"))
- # with open(os.path.join(DATADIR, "labelOffset-1.drawio"), 'wb') as f:
- # generator.generate(asyntax, f)
- def test_edge_label(self):
- run_test("edgeLabel.drawio")
- def test_shapelib(self):
- common_lib = parse_shapelib("shapelibs/common.xml")
- pm_lib = parse_shapelib("shapelibs/pm.xml")
- id_gen = util.DrawioIDGenerator()
- page = util.generate_empty_page(id_gen, "MyFancyPage")
- cloner = shapelib.ShapeCloner(id_gen)
- initial = cloner.clone_vertex(pm_lib["(PM) Initial"], page.root, 100, 100)
- final = cloner.clone_vertex(pm_lib["(PM) Final"], page.root, 300, 300)
- cloner.clone_edge(common_lib["Control Flow"], page.root, initial, final)
- def parse_shapelib1(self):
- parse_shapelib("shapelibs/ftg.xml")
- def parse_shapelib2(self):
- parse_shapelib("shapelibs/pt.xml")
- def parse_shapelib3(self):
- parse_shapelib("shapelibs/ss.xml")
|