using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Annulus.CSG.StraightSkeletonUtilities; using Annulus.CSG; using Azimuth; namespace Annulus.UnitTests { public class BuildSVGTests : UnitTestSharp.TestFixture { public void Basic() { var Vertices = new List<StraightSkeleton.ExportVertex> { new StraightSkeleton.ExportVertex { Position = new Vector(-1, 1), Edges = new List<StraightSkeleton.ExportEdge>(), }, new StraightSkeleton.ExportVertex { Position = new Vector( 1, 1), Edges = new List<StraightSkeleton.ExportEdge>(), }, new StraightSkeleton.ExportVertex { Position = new Vector( 1,-1), Edges = new List<StraightSkeleton.ExportEdge>(), }, new StraightSkeleton.ExportVertex { Position = new Vector(-1,-1), Edges = new List<StraightSkeleton.ExportEdge>(), }, }; var straightSkeleton = new StraightSkeleton { Edges = new List<StraightSkeleton.ExportEdge> { new StraightSkeleton.ExportEdge { Vertices = Vertices, Vertex1Index = 0, Vertex2Index = 1, }, new StraightSkeleton.ExportEdge { Vertices = Vertices, Vertex1Index = 1, Vertex2Index = 2, }, new StraightSkeleton.ExportEdge { Vertices = Vertices, Vertex1Index = 2, Vertex2Index = 3, }, new StraightSkeleton.ExportEdge { Vertices = Vertices, Vertex1Index = 3, Vertex2Index = 0, }, }, Vertices = Vertices, }; straightSkeleton.Edges.ForEach(edge => { edge.Vertex1.Edges.Add(edge); edge.Vertex2.Edges.Add(edge); }); var expected = @"<path d = "" M -1 1 L 1 1 M 1 1 L 1 -1 M 1 -1 L -1 -1 M -1 -1 L -1 1 "" STYLE2 /> <g class='non-scaling'> <circle transform='translate(-1,1)' r = '1.5' STYLE1 /> <circle transform='translate(1,1)' r = '1.5' STYLE1 /> <circle transform='translate(1,-1)' r = '1.5' STYLE1 /> <circle transform='translate(-1,-1)' r = '1.5' STYLE1 /> <text transform='translate(0,1)' font-size='20' xml:space='preserve' dy='-.25em' dx='.25em' STYLE4 >0</text> <text transform='translate(1,0)' font-size='20' xml:space='preserve' dy='-.25em' dx='.25em' STYLE4 >1</text> <text transform='translate(0,-1)' font-size='20' xml:space='preserve' dy='-.25em' dx='.25em' STYLE4 >2</text> <text transform='translate(-1,0)' font-size='20' xml:space='preserve' dy='-.25em' dx='.25em' STYLE4 >3</text> <text transform='translate(-1,1)' font-size='20' xml:space='preserve' dy='-.25em' dx='.25em' STYLE3 >0</text> <text transform='translate(1,1)' font-size='20' xml:space='preserve' dy='-.25em' dx='.25em' STYLE3 >1</text> <text transform='translate(1,-1)' font-size='20' xml:space='preserve' dy='-.25em' dx='.25em' STYLE3 >2</text> <text transform='translate(-1,-1)' font-size='20' xml:space='preserve' dy='-.25em' dx='.25em' STYLE3 >3</text> </g> "; var actual = straightSkeleton.BuildSVG("STYLE1", "STYLE2", "STYLE3", "STYLE4"); CheckEqual(expected, actual); } } }