From 9fff879bd49b3d6b9b8d30c26287a43fc4d50a5a Mon Sep 17 00:00:00 2001 From: Eliot Jones Date: Tue, 31 Dec 2019 14:07:52 +0000 Subject: [PATCH] fix tests by using custom equality comparers since we now round glyph widths for truetype fonts in the widths array of the pdf some values are out by a very small amount from the expected value. since we don't care about such fractional inaccuracy we use a custom comparer for these tests. --- src/UglyToad.PdfPig.Tests/PointComparer.cs | 27 +++++++++++++++++++ .../Writer/PdfDocumentBuilderTests.cs | 26 +++++++++++------- 2 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 src/UglyToad.PdfPig.Tests/PointComparer.cs diff --git a/src/UglyToad.PdfPig.Tests/PointComparer.cs b/src/UglyToad.PdfPig.Tests/PointComparer.cs new file mode 100644 index 00000000..c318dba3 --- /dev/null +++ b/src/UglyToad.PdfPig.Tests/PointComparer.cs @@ -0,0 +1,27 @@ +namespace UglyToad.PdfPig.Tests +{ + using System; + using System.Collections.Generic; + using PdfPig.Geometry; + + internal class PointComparer : IEqualityComparer + { + private readonly IEqualityComparer doubleComparer; + + public PointComparer(IEqualityComparer doubleComparer) + { + this.doubleComparer = doubleComparer ?? throw new ArgumentNullException(nameof(doubleComparer)); + } + + public bool Equals(PdfPoint a, PdfPoint b) + { + return doubleComparer.Equals(a.X, b.X) + && doubleComparer.Equals(a.Y, b.Y); + } + + public int GetHashCode(PdfPoint obj) + { + return obj.GetHashCode(); + } + } +} \ No newline at end of file diff --git a/src/UglyToad.PdfPig.Tests/Writer/PdfDocumentBuilderTests.cs b/src/UglyToad.PdfPig.Tests/Writer/PdfDocumentBuilderTests.cs index d6a8f7a8..5e1d4802 100644 --- a/src/UglyToad.PdfPig.Tests/Writer/PdfDocumentBuilderTests.cs +++ b/src/UglyToad.PdfPig.Tests/Writer/PdfDocumentBuilderTests.cs @@ -128,17 +128,20 @@ Assert.Equal("H", h.Value); Assert.Equal("Andada-Regular", h.FontName); + var comparer = new DoubleComparer(0.01); + var pointComparer = new PointComparer(comparer); + for (int i = 0; i < page1.Letters.Count; i++) { var readerLetter = page1.Letters[i]; var writerLetter = letters[i]; Assert.Equal(readerLetter.Value, writerLetter.Value); - Assert.Equal(readerLetter.Location, writerLetter.Location); - Assert.Equal(readerLetter.FontSize, writerLetter.FontSize); - Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width); - Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height); - Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft); + Assert.Equal(readerLetter.Location, writerLetter.Location, pointComparer); + Assert.Equal(readerLetter.FontSize, writerLetter.FontSize, comparer); + Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width, comparer); + Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height, comparer); + Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft, pointComparer); } } } @@ -193,17 +196,20 @@ Assert.Equal("H", h.Value); Assert.Equal("BaskOldFace", h.FontName); + var comparer = new DoubleComparer(0.01); + var pointComparer = new PointComparer(comparer); + for (int i = 0; i < letters.Count; i++) { var readerLetter = page1.Letters[i]; var writerLetter = letters[i]; Assert.Equal(readerLetter.Value, writerLetter.Value); - Assert.Equal(readerLetter.Location, writerLetter.Location); - Assert.Equal(readerLetter.FontSize, writerLetter.FontSize); - Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width); - Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height); - Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft); + Assert.Equal(readerLetter.Location, writerLetter.Location, pointComparer); + Assert.Equal(readerLetter.FontSize, writerLetter.FontSize, comparer); + Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width, comparer); + Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height, comparer); + Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft, pointComparer); } } }