28 lines
1.8 KiB
C#
28 lines
1.8 KiB
C#
namespace Just.PreciseMath.Tests.SanityChecks;
|
|
|
|
public class DoubleDoubleAdditionChecks
|
|
{
|
|
public static IEnumerable<TheoryDataRow<DoubleDouble, DoubleDouble, DoubleDouble>> ReferenceCases =>
|
|
[
|
|
(new DoubleDouble(1.0), new DoubleDouble(1.0), new DoubleDouble(2.0)),
|
|
(new DoubleDouble(1.0), new DoubleDouble(2.0), new DoubleDouble(3.0)),
|
|
(new DoubleDouble(1.25), new DoubleDouble(2.5), new DoubleDouble(3.75)),
|
|
(new DoubleDouble(65535.0), new DoubleDouble(1.0), new DoubleDouble(65536.0)),
|
|
(DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), DoubleDouble.Parse("-812563124576179134504", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(42.0)),
|
|
(DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(127.0), DoubleDouble.Parse("812563124576179134673", System.Globalization.CultureInfo.InvariantCulture)),
|
|
(DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(27.0), DoubleDouble.Parse("812563124576179134573", System.Globalization.CultureInfo.InvariantCulture)),
|
|
(DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(2.70), DoubleDouble.Parse("812563124576179134548.7", System.Globalization.CultureInfo.InvariantCulture)),
|
|
];
|
|
|
|
[Theory]
|
|
[MemberData(nameof(ReferenceCases))]
|
|
public void AdditionShouldProduceExpectedResults(DoubleDouble left, DoubleDouble right, DoubleDouble expected)
|
|
{
|
|
DoubleDouble result = left + right;
|
|
|
|
result.High.ShouldBe(expected.High);
|
|
result.Low.ShouldBe(expected.Low);
|
|
result.ShouldBe(expected);
|
|
}
|
|
}
|