using inetsoftware.Pdfc; using inetsoftware.Pdfc.Generator.Message; using inetsoftware.Pdfc.Generator.Model; using inetsoftware.Pdfc.Results; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; namespace inetsoftware.PdfcSamples { /// /// A sample for writing JUnit test cases using PDFC /// [TestClass] public class CompareTest { static CompareTest() { // Activate the license once from environment if required. string key = Environment.GetEnvironmentVariable("PDFC_KEY"); if (!string.IsNullOrEmpty(key)) { PDFC.ActivateLicense(key); } } private static PDFComparer pdfComparer; /// /// Checks for an valid, active license and request a trial license, if there is none. /// /// Will also initialize the PDFCComparer. /// /// [ClassInitialize] public static void Before() { pdfComparer = new PDFComparer(); } /// /// Checks two PDF files for differences. /// [TestMethod] public void TestDifferencesCount() { string example1 = "samples/resources/Example1.pdf"; string example2 = "samples/resources/Example2.pdf"; using (ResultModel result = pdfComparer.Compare(example1, example2)) { InfoData comparisonParameters = result.GetComparisonParameters(); Assert.AreEqual(11, result.GetDifferencesCount(false)); Assert.AreEqual(11, result.GetDifferencesCount(true)); Assert.AreEqual(3, comparisonParameters.FirstPageCount); Assert.AreEqual(3, comparisonParameters.SecondPageCount); } } /// /// Compares two PDF files and checks the DiffGroups. /// [TestMethod] public void TestDifferenceGroupsList() { string example1 = "samples/resources/Example1.pdf"; string example2 = "samples/resources/Example2.pdf"; using (ResultModel result = pdfComparer.Compare(example1, example2)) { List diffsFileA = result.GetDifferenceGroupsList(true); List diffsFileB = result.GetDifferenceGroupsList(false); Assert.AreEqual(9, diffsFileA.Count); Assert.AreEqual(9, diffsFileB.Count); DiffGroups groupForCheck = null; foreach(DiffGroups group in diffsFileA) { if(group.Message.StartsWith("AddedOrRemoved")) { groupForCheck = group; break; } } Assert.IsNotNull(groupForCheck); // if a group was added or removed, the bounds must be different Assert.AreNotEqual(groupForCheck.BoundsFirst, groupForCheck.BoundsSecond); } } /// /// Compares two PDF files and checks a single difference. /// [TestMethod] public void TestDifferences() { string example1 = "samples/resources/Example1.pdf"; string example2 = "samples/resources/Example2.pdf"; using (ResultModel result = pdfComparer.Compare(example1, example2)) { List diffsFileA = result.GetDifferences(true); List diffsFileB = result.GetDifferences(false); Diff diffToCheck = null; foreach (Diff diff in diffsFileA) { if(diff.Type == "Modified") { diffToCheck = diff; break; } } Assert.IsNotNull(diffToCheck); // the element should be in the modified message Assert.IsTrue(diffToCheck.Message.Contains("'" + diffToCheck.Element + "'")); } } } }