mirror of
https://github.com/UglyToad/PdfPig.git
synced 2026-03-10 00:23:29 +08:00
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.
This commit is contained in:
27
src/UglyToad.PdfPig.Tests/PointComparer.cs
Normal file
27
src/UglyToad.PdfPig.Tests/PointComparer.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
namespace UglyToad.PdfPig.Tests
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using PdfPig.Geometry;
|
||||
|
||||
internal class PointComparer : IEqualityComparer<PdfPoint>
|
||||
{
|
||||
private readonly IEqualityComparer<double> doubleComparer;
|
||||
|
||||
public PointComparer(IEqualityComparer<double> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user