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 + "'"));
}
}
}
}