-
Notifications
You must be signed in to change notification settings - Fork 285
Description
Summary
It would be nice if the MSTEST0037 analyzer could suggest changing Linq statements with predicates that can be instead written with Assert.Contains
, Assert.DoesNotContain
or Assert.ContainsSingle
.
Background and Motivation
Cleaner code.
Proposed Feature
The MSTEST0037 analyzer (and code fix) should be extended to cover these cases:
[TestClass]
public sealed class Test1
{
private readonly IEnumerable<int> _enumerable = [];
[TestMethod]
public void ShouldSuggestContainsSingle()
{
// Expected analyzer suggestion:
//Assert.ContainsSingle(x => x == 1, _enumerable);
Assert.AreEqual(1, _enumerable.Where(x => x == 1).Count());
Assert.AreEqual(1, _enumerable.Count(x => x == 1));
}
[TestMethod]
public void ShouldSuggestContains()
{
// Expected analyzer suggestion:
//Assert.Contains(x => x == 1, _enumerable);
Assert.IsTrue(_enumerable.Where(x => x == 1).Any());
Assert.IsTrue(_enumerable.Any(x => x == 1));
Assert.AreNotEqual(0, _enumerable.Where(x => x == 1).Count());
Assert.AreNotEqual(0, _enumerable.Count(x => x == 1));
Assert.IsTrue(_enumerable.Where(x => x == 1).Count() > 0);
Assert.IsTrue(_enumerable.Count(x => x == 1) > 0);
// I added those only because the analyzer currently suggests them instead of the 'Assert.IsTrue' above.
Assert.IsGreaterThan(0, _enumerable.Where(x => x == 1).Count());
Assert.IsGreaterThan(0, _enumerable.Count(x => x == 1));
}
[TestMethod]
public void ShouldSuggestDoesNotContain()
{
// Expected analyzer suggestion:
//Assert.DoesNotContain(x => x == 1, _enumerable);
Assert.IsFalse(_enumerable.Where(x => x == 1).Any());
Assert.IsFalse(_enumerable.Any(x => x == 1));
Assert.AreEqual(0, _enumerable.Where(x => x == 1).Count());
Assert.AreEqual(0, _enumerable.Count(x => x == 1));
Assert.IsFalse(_enumerable.Where(x => x == 1).Count() > 0);
Assert.IsFalse(_enumerable.Count(x => x == 1) > 0);
// I added those only because the analyzer currently suggests them instead of the 'Assert.IsFalse' above.
Assert.IsLessThanOrEqualTo(0, _enumerable.Where(x => x == 1).Count());
Assert.IsLessThanOrEqualTo(0, _enumerable.Count(x => x == 1));
}
}
Evangelink