Commit 18d4a960 authored by HeinrichAD's avatar HeinrichAD
Browse files

Add: Unit Test metafile rendering

Create metafile rendering Unit Test based on Issue #210 from master.
parent dd436504
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
namespace Svg.UnitTests
{
/// <summary>
/// Test Class of rendering SVGs as meterfile.
/// Based on Issue 210.
/// </summary>
/// <remarks>
/// Test use the following embedded resources:
/// - Issue210_Metafile\3DSceneSnapshotBIG.svg
/// </remarks>
[TestClass]
public class MetafileRenderingTest : SvgTestHelper
{
protected override string TestResource { get { return GetFullResourceString("Issue210_Metafile.3DSceneSnapshotBIG.svg"); } }
protected override int ExpectedSize { get { return 12896; } }
[TestMethod]
[TestProperty(name: "speed", value: "slow")]
public void TestMetafileRendering()
{
LoadSvg(GetXMLDocFromResource());
}
protected override Image DrawSvg(SvgDocument svgDoc)
{
// GDI+
Metafile metafile;
using (var stream = new MemoryStream())
using (var img = new Bitmap((int)svgDoc.Width.Value, (int)svgDoc.Height.Value)) // Not necessary if you use Control.CreateGraphics().
using (Graphics ctrlGraphics = Graphics.FromImage(img)) // Control.CreateGraphics()
{
IntPtr handle = ctrlGraphics.GetHdc();
var rect = new RectangleF(0, 0, svgDoc.Width, svgDoc.Height);
metafile = new Metafile(stream,
handle,
rect,
MetafileFrameUnit.Pixel,
EmfType.EmfPlusOnly);
using (Graphics ig = Graphics.FromImage(metafile))
{
svgDoc.Draw(ig);
}
ctrlGraphics.ReleaseHdc(handle);
}
return metafile;
}
}
}
......@@ -55,6 +55,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="CssQueryTest.cs" />
<Compile Include="MetafileRenderingTest.cs" />
<Compile Include="MultiThreadingTest.cs" />
<Compile Include="PrivateFontsTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
......@@ -73,6 +74,9 @@
<ItemGroup>
<EmbeddedResource Include="Resources\Issue204_PrivateFont\Text.svg" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\Issue210_Metafile\3DSceneSnapshotBIG.svg" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
......
......@@ -184,23 +184,45 @@ namespace Svg.UnitTests
protected virtual void LoadSvg(XmlDocument xml)
{
Trace.WriteLine("SvgDocument open xml.");
var svgDoc = SvgDocument.Open(xml);
var svgDoc = OpenSvg(xml);
Trace.WriteLine("Done SvgDocument open xml.");
Trace.WriteLine("Draw svg.");
var img = svgDoc.Draw();
var img = DrawSvg(svgDoc);
Trace.WriteLine("Done drawing.");
CheckSvg(svgDoc, img);
}
/// <summary>
/// Open SVG document from XML document.
/// </summary>
/// <param name="xml">XML document.</param>
/// <returns>Open SVG document.</returns>
protected virtual SvgDocument OpenSvg(XmlDocument xml)
{
return SvgDocument.Open(xml);
}
/// <summary>
/// Draw SVG.
/// </summary>
/// <param name="svgDoc">SVG document to draw.</param>
/// <returns>SVG as image.</returns>
protected virtual Image DrawSvg(SvgDocument svgDoc)
{
return svgDoc.Draw();
}
/// <summary>
/// Check svg file data.
/// </summary>
/// <param name="svgDoc">Svg document.</param>
/// <param name="img">Image of svg file from <paramref name="svgDoc"/>.</param>
protected virtual void CheckSvg(SvgDocument svgDoc, Bitmap img)
protected virtual void CheckSvg(SvgDocument svgDoc, Image img)
{
using (var ms = new MemoryStream())
{
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment