public void Addition_LeftMultiplicationFunctionRightAdditionFunction_PointsAreEqual <T> ( T value1, T value2, T expectedResult, IRing <T> ring) { Func <T, T, T> func1 = ring.Addition; Func <T, T, T> func2 = ring.Multiplication; var calc = ring.Addition(func1, func2); Assert.NotNull(calc); Assert.AreEqual(expectedResult, calc(value1, value2)); }