// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; using System.Text; using Moq; using Microsoft.VisualStudio.TestTools.UnitTesting; using Common.ComInterlop; using SvgThumbnailProvider; namespace SvgThumbnailProviderUnitTests { [TestClass] public class SvgThumbnailProviderTests { [TestMethod] public void LoadSimpleSVG_ShouldReturnNonNullBitmap() { var svgBuilder = new StringBuilder(); svgBuilder.AppendLine(""); Bitmap thumbnail = SvgThumbnailProvider.SvgThumbnailProvider.GetThumbnail(svgBuilder.ToString(), 256); Assert.IsTrue(thumbnail != null); } [TestMethod] public void CheckBlockedElements_ShouldReturnNonNullBitmap_IfBlockedElementsIsPresentInNestedLevel() { var svgBuilder = new StringBuilder(); svgBuilder.AppendLine(""); Bitmap thumbnail = SvgThumbnailProvider.SvgThumbnailProvider.GetThumbnail(svgBuilder.ToString(), 256); Assert.IsTrue(thumbnail != null); } [TestMethod] public void CheckNoSvg_ShouldReturnNullBitmap() { var svgBuilder = new StringBuilder(); svgBuilder.AppendLine("
foo
"); Bitmap thumbnail = SvgThumbnailProvider.SvgThumbnailProvider.GetThumbnail(svgBuilder.ToString(), 256); Assert.IsTrue(thumbnail == null); } [TestMethod] public void CheckNoSvgEmptyString_ShouldReturnNullBitmap() { Bitmap thumbnail = SvgThumbnailProvider.SvgThumbnailProvider.GetThumbnail("", 256); Assert.IsTrue(thumbnail == null); } [TestMethod] public void CheckNoSvgNullString_ShouldReturnNullBitmap() { Bitmap thumbnail = SvgThumbnailProvider.SvgThumbnailProvider.GetThumbnail(null, 256); Assert.IsTrue(thumbnail == null); } [TestMethod] public void CheckZeroSizedThumbnail_ShouldReturnNullBitmap() { string content = ""; Bitmap thumbnail = SvgThumbnailProvider.SvgThumbnailProvider.GetThumbnail(content, 0); Assert.IsTrue(thumbnail == null); } [TestMethod] public void CheckBlockedElements_ShouldReturnBitmap_HTMLWrapped() { var svgBuilder = new StringBuilder(); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); Bitmap thumbnail = SvgThumbnailProvider.SvgThumbnailProvider.GetThumbnail(svgBuilder.ToString(), 256); Assert.IsTrue(thumbnail != null); } [TestMethod] public void GetThumbnail_ValidStreamSVG() { var svgBuilder = new StringBuilder(); svgBuilder.AppendLine(""); SvgThumbnailProvider.SvgThumbnailProvider provider = new SvgThumbnailProvider.SvgThumbnailProvider(); provider.Initialize(GetMockStream(svgBuilder.ToString()), 0); IntPtr bitmap; WTS_ALPHATYPE alphaType; provider.GetThumbnail(256, out bitmap, out alphaType); Assert.IsTrue(bitmap != IntPtr.Zero); Assert.IsTrue(alphaType == WTS_ALPHATYPE.WTSAT_RGB); } [TestMethod] public void GetThumbnail_ValidStreamHTML() { var svgBuilder = new StringBuilder(); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); svgBuilder.AppendLine(""); SvgThumbnailProvider.SvgThumbnailProvider provider = new SvgThumbnailProvider.SvgThumbnailProvider(); provider.Initialize(GetMockStream(svgBuilder.ToString()), 0); IntPtr bitmap; WTS_ALPHATYPE alphaType; provider.GetThumbnail(256, out bitmap, out alphaType); Assert.IsTrue(bitmap != IntPtr.Zero); Assert.IsTrue(alphaType == WTS_ALPHATYPE.WTSAT_RGB); } private IStream GetMockStream(string streamData) { var mockStream = new Mock