Skip to content

Commit 6a3092a

Browse files
Add test and fix code for (Value)Tuples with less than 2 elements. (nunit#4809)
1 parent 116802d commit 6a3092a

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

src/NUnitFramework/framework/Constraints/Comparers/TupleComparerBase.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ public static EqualMethodResult Equal(object x, object y, ref Tolerance toleranc
2525

2626
ComparisonState comparisonState = state.PushComparison(x, y);
2727

28+
if (numberOfGenericArgs == 0) // Nothing to compare
29+
return EqualMethodResult.ComparedEqual;
30+
2831
uint redoWithoutTolerance = 0x0;
2932
for (int i = 0; i < numberOfGenericArgs; i++)
3033
{

src/NUnitFramework/tests/Constraints/TupleEqualityTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,22 @@ public void SucceedsWhenTuplesAreTheSame()
1616
Assert.That(tuple1, Is.EqualTo(tuple2));
1717
}
1818

19+
[Test]
20+
public void SucceedsWhenTuplesAreTheSameWithinTolerance()
21+
{
22+
var tuple1 = Tuple.Create("Hello", 3);
23+
var tuple2 = Tuple.Create("Hello", 4);
24+
Assert.That(tuple1, Is.EqualTo(tuple2).Within(1));
25+
}
26+
27+
[Test]
28+
public void SucceedsWhenSingleTuplesAreTheSame()
29+
{
30+
var tuple1 = Tuple.Create(3);
31+
var tuple2 = Tuple.Create(3);
32+
Assert.That(tuple1, Is.EqualTo(tuple2));
33+
}
34+
1935
[Test]
2036
public void SucceedsWhenContentOfTuplesAreEquivalent()
2137
{

src/NUnitFramework/tests/Constraints/ValueTupleEqualityTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,22 @@ namespace NUnit.Framework.Tests.Constraints
88
[TestFixture]
99
public class ValueTupleEqualityTests
1010
{
11+
[Test]
12+
public void SucceedsWhenTuplesAreEmpty()
13+
{
14+
ValueTuple tuple1 = ValueTuple.Create();
15+
ValueTuple tuple2 = ValueTuple.Create();
16+
Assert.That(tuple1, Is.EqualTo(tuple2));
17+
}
18+
19+
[Test]
20+
public void SucceedsWhenSingleTuplesAreTheSame()
21+
{
22+
ValueTuple<int> tuple1 = ValueTuple.Create(3);
23+
ValueTuple<int> tuple2 = ValueTuple.Create(3);
24+
Assert.That(tuple1, Is.EqualTo(tuple2));
25+
}
26+
1127
[Test]
1228
public void SucceedsWhenTuplesAreTheSame()
1329
{
@@ -16,6 +32,14 @@ public void SucceedsWhenTuplesAreTheSame()
1632
Assert.That(tuple1, Is.EqualTo(tuple2));
1733
}
1834

35+
[Test]
36+
public void SucceedsWhenTuplesAreTheSameWithinTolerance()
37+
{
38+
ValueTuple<string, int> tuple1 = ("Hello", 3);
39+
ValueTuple<string, int> tuple2 = ("Hello", 4);
40+
Assert.That(tuple1, Is.EqualTo(tuple2).Within(1));
41+
}
42+
1943
[Test]
2044
public void SucceedsWhenContentOfTuplesAreEquivalent()
2145
{

0 commit comments

Comments
 (0)