public void FailureIncludesOptionalMessageWhenProvided() { AssertionFailure failure = AssertionConditionEvaluator.Eval(() => true, false, "Expected {0}", "true"); Assert.IsNotNull(failure); Assert.AreEqual("Expected true", failure.Message); }
public void FailureExcludesOptionalMessageWhenOmitted() { AssertionFailure failure = AssertionConditionEvaluator.Eval(() => true, false, null); Assert.IsNotNull(failure); Assert.IsNull(failure.Message); }
public void FailureIncludesStackTrace() { AssertionFailure failure = AssertionConditionEvaluator.Eval(() => true, false, null); Assert.IsNotNull(failure); Assert.Contains(failure.StackTrace.ToString(), "FailureIncludesStackTrace"); }
/// <summary> /// Verifies that a particular condition holds true. /// </summary> /// <remarks> /// <para> /// If the condition evaluates to false, the assertion failure message will /// describe in detail the intermediate value of relevant sub-expressions within /// the condition. Consequently the assertion failure will include more diagnostic /// information than if <see cref="Assert.IsTrue(bool, string, object[])" /> were used instead. /// </para> /// </remarks> /// <param name="condition">The conditional expression to evaluate.</param> /// <param name="messageFormat">The custom assertion message format, or null if none.</param> /// <param name="messageArgs">The custom assertion message arguments, or null if none.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="condition"/> is null.</exception> /// <exception cref="AssertionException">Thrown if the verification failed unless the current <see cref="AssertionContext.AssertionFailureBehavior" /> indicates otherwise.</exception> public static void That(Expression <System.Func <bool> > condition, string messageFormat, params object[] messageArgs) { if (condition == null) { throw new ArgumentNullException("condition"); } AssertionFailure failure = AssertionConditionEvaluator.Eval(condition, true, messageFormat, messageArgs); AssertionHelper.Fail(failure); }
public void FailureDescribesExpectedResultAndConditionAndParameters(bool expectedResult) { AssertionFailure failure = AssertionConditionEvaluator.Eval(() => !expectedResult, expectedResult, null); Assert.IsNotNull(failure); Assert.AreEqual(String.Format("Expected the condition to evaluate to {0}.", expectedResult.ToString().ToLowerInvariant()), failure.Description); Assert.AreElementsEqual(new[] { new AssertionFailure.LabeledValue("Condition", "! expectedResult"), new AssertionFailure.LabeledValue("expectedResult", Formatter.Instance.Format(expectedResult)), }, failure.LabeledValues); }
public void FailureMessageIgnoresValueOfTopLevelNotExpression() { int x = 42; AssertionFailure failure = AssertionConditionEvaluator.Eval(() => !(x.ToString() == "42"), true, null); Assert.IsNotNull(failure); Assert.AreElementsEqual(new[] { new AssertionFailure.LabeledValue("Condition", "! (x.ToString() == \"42\")"), new AssertionFailure.LabeledValue("x.ToString()", "\"42\""), new AssertionFailure.LabeledValue("x", "42"), }, failure.LabeledValues); }
public void FailureDescribesException() { object x = null; AssertionFailure failure = AssertionConditionEvaluator.Eval(() => x.Equals(null), true, null); Assert.IsNotNull(failure); Assert.AreEqual("Expected the condition to evaluate to true but it threw an exception.", failure.Description); Assert.AreElementsEqual(new[] { new AssertionFailure.LabeledValue("Condition", "x.Equals(null)"), new AssertionFailure.LabeledValue("x", "null"), }, failure.LabeledValues); Assert.Count(1, failure.Exceptions); Assert.Contains(failure.Exceptions[0].ToString(), "NullReferenceException"); }
public void FailureMessageIgnoresRepeatedOccurrencesOfAVariable() { int x = 42; AssertionFailure failure = AssertionConditionEvaluator.Eval(() => x * 2 == x + 1, true, null); Assert.IsNotNull(failure); Assert.AreElementsEqual(new[] { new AssertionFailure.LabeledValue("Condition", "x * 2 == x + 1"), new AssertionFailure.LabeledValue("x * 2", "84"), new AssertionFailure.LabeledValue("x + 1", "43"), new AssertionFailure.LabeledValue("x", "42") }, failure.LabeledValues); }
public void ReturnsNullIfTheConditionEvaluatesAsExpected(bool expectedResult) { Assert.IsNull(AssertionConditionEvaluator.Eval(() => expectedResult, expectedResult, null)); }
public void EvalThrowsIfConditionIsNull() { AssertionConditionEvaluator.Eval(null, true, "abc"); }