Pass lambda to parameterized NUnit test
You cannot immediately apply the TestCase attribute containing a lambda expression, i.e. the following test would be invalid:
[TestCase((a, b) => a + b)]
public void WillNotCompileTest(Func<double, double, double> func)
{
Assert.GreaterOrEqual(func(1.0, 1.0), 1.0);
}
What you can do, however, is to use the TestCaseSource attribute together with an IEnumerable of your lambda expressions, like this:
[TestFixture]
public class TestClass
{
private IEnumerable<Func<double, double, double>> testCases
{
get
{
yield return (a, b) => a + b;
yield return (a, b) => a * b;
yield return (a, b) => a / b;
}
}
[TestCaseSource(nameof(testCases))]
public void Test(Func<double, double, double> func)
{
Assert.GreaterOrEqual(func(1.0, 1.0), 1.0);
}
}
You can pass exactly that:
MatrixOperatorOperandIsNullThrows((l,r) => l + r);