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("H", h.Value);
|
||||||
Assert.Equal("Andada-Regular", h.FontName);
|
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++)
|
for (int i = 0; i < page1.Letters.Count; i++)
|
||||||
{
|
{
|
||||||
var readerLetter = page1.Letters[i];
|
var readerLetter = page1.Letters[i];
|
||||||
var writerLetter = letters[i];
|
var writerLetter = letters[i];
|
||||||
|
|
||||||
Assert.Equal(readerLetter.Value, writerLetter.Value);
|
Assert.Equal(readerLetter.Value, writerLetter.Value);
|
||||||
Assert.Equal(readerLetter.Location, writerLetter.Location);
|
Assert.Equal(readerLetter.Location, writerLetter.Location, pointComparer);
|
||||||
Assert.Equal(readerLetter.FontSize, writerLetter.FontSize);
|
Assert.Equal(readerLetter.FontSize, writerLetter.FontSize, comparer);
|
||||||
Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width);
|
Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width, comparer);
|
||||||
Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height);
|
Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height, comparer);
|
||||||
Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft);
|
Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft, pointComparer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,17 +196,20 @@
|
|||||||
Assert.Equal("H", h.Value);
|
Assert.Equal("H", h.Value);
|
||||||
Assert.Equal("BaskOldFace", h.FontName);
|
Assert.Equal("BaskOldFace", h.FontName);
|
||||||
|
|
||||||
|
var comparer = new DoubleComparer(0.01);
|
||||||
|
var pointComparer = new PointComparer(comparer);
|
||||||
|
|
||||||
for (int i = 0; i < letters.Count; i++)
|
for (int i = 0; i < letters.Count; i++)
|
||||||
{
|
{
|
||||||
var readerLetter = page1.Letters[i];
|
var readerLetter = page1.Letters[i];
|
||||||
var writerLetter = letters[i];
|
var writerLetter = letters[i];
|
||||||
|
|
||||||
Assert.Equal(readerLetter.Value, writerLetter.Value);
|
Assert.Equal(readerLetter.Value, writerLetter.Value);
|
||||||
Assert.Equal(readerLetter.Location, writerLetter.Location);
|
Assert.Equal(readerLetter.Location, writerLetter.Location, pointComparer);
|
||||||
Assert.Equal(readerLetter.FontSize, writerLetter.FontSize);
|
Assert.Equal(readerLetter.FontSize, writerLetter.FontSize, comparer);
|
||||||
Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width);
|
Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width, comparer);
|
||||||
Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height);
|
Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height, comparer);
|
||||||
Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft);
|
Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft, pointComparer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user