mirror of
https://github.com/oliverbooth/X10D
synced 2024-11-10 04:05:40 +00:00
test: 100% coverage on EnumerableExtensions
This commit is contained in:
parent
9bb9c9692a
commit
121c3a388a
@ -13,6 +13,11 @@ public class EnumerableTests
|
|||||||
(int minimum, int maximum) = source.MinMax();
|
(int minimum, int maximum) = source.MinMax();
|
||||||
Assert.AreEqual(1, minimum);
|
Assert.AreEqual(1, minimum);
|
||||||
Assert.AreEqual(10, maximum);
|
Assert.AreEqual(10, maximum);
|
||||||
|
|
||||||
|
source = Enumerable.Range(1, 10).ToArray();
|
||||||
|
(minimum, maximum) = source.MinMax();
|
||||||
|
Assert.AreEqual(1, minimum);
|
||||||
|
Assert.AreEqual(10, maximum);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -22,6 +27,11 @@ public class EnumerableTests
|
|||||||
(int minimum, int maximum) = source.MinMax(p => p.Age);
|
(int minimum, int maximum) = source.MinMax(p => p.Age);
|
||||||
Assert.AreEqual(1, minimum);
|
Assert.AreEqual(1, minimum);
|
||||||
Assert.AreEqual(10, maximum);
|
Assert.AreEqual(10, maximum);
|
||||||
|
|
||||||
|
source = Enumerable.Range(1, 10).Select(i => new Person {Age = i}).ToArray();
|
||||||
|
(minimum, maximum) = source.MinMax(p => p.Age);
|
||||||
|
Assert.AreEqual(1, minimum);
|
||||||
|
Assert.AreEqual(10, maximum);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -31,13 +41,21 @@ public class EnumerableTests
|
|||||||
(int minimum, int maximum) = source.MinMax(p => p.Age, new InverseComparer<int>());
|
(int minimum, int maximum) = source.MinMax(p => p.Age, new InverseComparer<int>());
|
||||||
Assert.AreEqual(10, minimum);
|
Assert.AreEqual(10, minimum);
|
||||||
Assert.AreEqual(1, maximum);
|
Assert.AreEqual(1, maximum);
|
||||||
|
|
||||||
|
source = Enumerable.Range(1, 10).Select(i => new Person {Age = i}).ToArray();
|
||||||
|
(minimum, maximum) = source.MinMax(p => p.Age, new InverseComparer<int>());
|
||||||
|
Assert.AreEqual(10, minimum);
|
||||||
|
Assert.AreEqual(1, maximum);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void MinMax_ShouldReturnOppositeValues_UsingInverseComparer()
|
public void MinMax_ShouldReturnOppositeValues_UsingInverseComparer()
|
||||||
{
|
{
|
||||||
IEnumerable<int> source = Enumerable.Range(1, 10);
|
(int minimum, int maximum) = Enumerable.Range(1, 10).MinMax(new InverseComparer<int>());
|
||||||
(int minimum, int maximum) = source.MinMax(new InverseComparer<int>());
|
Assert.AreEqual(10, minimum);
|
||||||
|
Assert.AreEqual(1, maximum);
|
||||||
|
|
||||||
|
(minimum, maximum) = Enumerable.Range(1, 10).ToArray().MinMax(new InverseComparer<int>());
|
||||||
Assert.AreEqual(10, minimum);
|
Assert.AreEqual(10, minimum);
|
||||||
Assert.AreEqual(1, maximum);
|
Assert.AreEqual(1, maximum);
|
||||||
}
|
}
|
||||||
@ -45,8 +63,8 @@ public class EnumerableTests
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void MinMax_ShouldThrowArgumentNullException_GivenNullSelector()
|
public void MinMax_ShouldThrowArgumentNullException_GivenNullSelector()
|
||||||
{
|
{
|
||||||
IEnumerable<int> source = Enumerable.Range(1, 10);
|
Assert.ThrowsException<ArgumentNullException>(() => Enumerable.Range(1, 10).MinMax((Func<int, int>?)null!));
|
||||||
Assert.ThrowsException<ArgumentNullException>(() => source.MinMax((Func<int, int>?)null!));
|
Assert.ThrowsException<ArgumentNullException>(() => Enumerable.Range(1, 10).ToArray().MinMax((Func<int, int>?)null!));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -59,8 +77,13 @@ public class EnumerableTests
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void MinMax_ShouldThrowInvalidOperationException_GivenEmptySource()
|
public void MinMax_ShouldThrowInvalidOperationException_GivenEmptySource()
|
||||||
{
|
{
|
||||||
IEnumerable<int> source = ArraySegment<int>.Empty;
|
Assert.ThrowsException<InvalidOperationException>(() => Enumerable.Empty<int>().MinMax());
|
||||||
Assert.ThrowsException<InvalidOperationException>(() => source.MinMax());
|
Assert.ThrowsException<InvalidOperationException>(() => Array.Empty<int>().MinMax());
|
||||||
|
Assert.ThrowsException<InvalidOperationException>(() => new List<int>().MinMax());
|
||||||
|
|
||||||
|
Assert.ThrowsException<InvalidOperationException>(() => Enumerable.Empty<int>().MinMax(i => i * 2));
|
||||||
|
Assert.ThrowsException<InvalidOperationException>(() => Array.Empty<int>().MinMax(i => i * 2));
|
||||||
|
Assert.ThrowsException<InvalidOperationException>(() => new List<int>().MinMax(i => i * 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -70,6 +93,11 @@ public class EnumerableTests
|
|||||||
(Person minimum, Person maximum) = source.MinMaxBy(p => p.Age);
|
(Person minimum, Person maximum) = source.MinMaxBy(p => p.Age);
|
||||||
Assert.AreEqual(1, minimum.Age);
|
Assert.AreEqual(1, minimum.Age);
|
||||||
Assert.AreEqual(10, maximum.Age);
|
Assert.AreEqual(10, maximum.Age);
|
||||||
|
|
||||||
|
source = Enumerable.Range(1, 10).Select(i => new Person {Age = i}).ToArray();
|
||||||
|
(minimum, maximum) = source.MinMaxBy(p => p.Age);
|
||||||
|
Assert.AreEqual(1, minimum.Age);
|
||||||
|
Assert.AreEqual(10, maximum.Age);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -79,13 +107,27 @@ public class EnumerableTests
|
|||||||
(Person minimum, Person maximum) = source.MinMaxBy(p => p.Age, new InverseComparer<int>());
|
(Person minimum, Person maximum) = source.MinMaxBy(p => p.Age, new InverseComparer<int>());
|
||||||
Assert.AreEqual(10, minimum.Age);
|
Assert.AreEqual(10, minimum.Age);
|
||||||
Assert.AreEqual(1, maximum.Age);
|
Assert.AreEqual(1, maximum.Age);
|
||||||
|
|
||||||
|
source = Enumerable.Range(1, 10).Select(i => new Person {Age = i}).ToArray();
|
||||||
|
(minimum, maximum) = source.MinMaxBy(p => p.Age, new InverseComparer<int>());
|
||||||
|
Assert.AreEqual(10, minimum.Age);
|
||||||
|
Assert.AreEqual(1, maximum.Age);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void MinMaxBy_ShouldThrowArgumentNullException_GivenNullSelector()
|
public void MinMaxBy_ShouldThrowArgumentNullException_GivenNullSelector()
|
||||||
|
{
|
||||||
|
Assert.ThrowsException<ArgumentNullException>(() =>
|
||||||
{
|
{
|
||||||
IEnumerable<Person> source = Enumerable.Range(1, 10).Select(i => new Person {Age = i});
|
IEnumerable<Person> source = Enumerable.Range(1, 10).Select(i => new Person {Age = i});
|
||||||
Assert.ThrowsException<ArgumentNullException>(() => source.MinMaxBy((Func<Person, int>?)null!));
|
return source.MinMaxBy((Func<Person, int>?)null!);
|
||||||
|
});
|
||||||
|
|
||||||
|
Assert.ThrowsException<ArgumentNullException>(() =>
|
||||||
|
{
|
||||||
|
Person[] source = Enumerable.Range(1, 10).Select(i => new Person {Age = i}).ToArray();
|
||||||
|
return source.MinMaxBy((Func<Person, int>?)null!);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -98,8 +140,17 @@ public class EnumerableTests
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void MinMaxBy_ShouldThrowInvalidOperationException_GivenEmptySource()
|
public void MinMaxBy_ShouldThrowInvalidOperationException_GivenEmptySource()
|
||||||
{
|
{
|
||||||
IEnumerable<Person> source = ArraySegment<Person>.Empty;
|
Assert.ThrowsException<InvalidOperationException>(() =>
|
||||||
Assert.ThrowsException<InvalidOperationException>(() => source.MinMaxBy(p => p.Age));
|
{
|
||||||
|
IEnumerable<Person> source = Enumerable.Empty<Person>();
|
||||||
|
return source.MinMaxBy(p => p.Age);
|
||||||
|
});
|
||||||
|
|
||||||
|
Assert.ThrowsException<InvalidOperationException>(() =>
|
||||||
|
{
|
||||||
|
Person[] source = Array.Empty<Person>();
|
||||||
|
return source.MinMaxBy(p => p.Age);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private struct InverseComparer<T> : IComparer<T> where T : IComparable<T>
|
private struct InverseComparer<T> : IComparer<T> where T : IComparable<T>
|
||||||
|
Loading…
Reference in New Issue
Block a user