public void OverridesObjectEquals() { var equals = ClosedMonadType.GetMethodsWithParameters() .Where(x => x.Method.Name == "Equals") .Single(x => x.Parameters.Count == 1 && x.Parameters[0].ParameterType == typeof(object)); Assert.IsTrue(equals.Method.DeclaringType == ClosedMonadType); }
public void NoMethods_OnMonadType_ContainOptionalArguments() { var methods = ClosedMonadType.GetMethodsWithParameters().ToArray(); Assert.IsTrue(methods.Length > 0); var outcome = methods.SelectMany(x => x.Parameters.Select(y => Outcome.FailIf(y.IsDefined(typeof(OptionalAttribute), true), String.Format("{0}.{1}.{2} is optional.", ClosedMonadType.Name, x.Method.Name, y.Name)))) .Combine(); Assert.IsTrue(outcome.WasSuccessful, outcome.Observations.Delimit("\r\n")); }
public void Constructor_ThrowsArgumentNullException_WhenConstructedWithNullComputationFunction() { var c = ClosedMonadType.GetConstructorsWithParameters() .Single(x => x.Parameters.Count == 1 && x.Parameters[0].ParameterType == typeof(Func <>).MakeGenericType(ClosedMonadType)) .Method; var ex = Assert.Throws <TargetInvocationException>(() => c.Invoke(new object[] { null })); var anex = ex.InnerException as ArgumentNullException; Assert.IsNotNull(anex); Assert.AreEqual("computation", anex.ParamName); }