-
Couldn't load subscription status.
- Fork 287
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