Warn
Provides static methods to express conditions
that must be met for the test to succeed. If
any test fails, a warning is issued.
using NUnit.Framework.Constraints;
using NUnit.Framework.Internal;
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace NUnit.Framework
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public abstract class Warn
{
[EditorBrowsable(EditorBrowsableState.Never)]
public new static bool Equals(object a, object b)
{
throw new InvalidOperationException("Warn.Equals should not be used.");
}
[EditorBrowsable(EditorBrowsableState.Never)]
public new static void ReferenceEquals(object a, object b)
{
throw new InvalidOperationException("Warn.ReferenceEquals should not be used.");
}
public static void Unless<[System.Runtime.CompilerServices.Nullable(2)] TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, NUnitString message = default(NUnitString), [CallerArgumentExpression("del")] string actualExpression = "", [CallerArgumentExpression("expr")] string constraintExpression = "")
{
IConstraint constraint = expr.Resolve();
IncrementAssertCount();
ConstraintResult constraintResult = constraint.ApplyTo(del);
if (!constraintResult.IsSuccess)
IssueWarning(constraintResult, "Unless", message.ToString(), actualExpression, constraintExpression);
}
public static void Unless<[System.Runtime.CompilerServices.Nullable(2)] TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, FormattableString message, [CallerArgumentExpression("del")] string actualExpression = "", [CallerArgumentExpression("expr")] string constraintExpression = "")
{
IConstraint constraint = expr.Resolve();
IncrementAssertCount();
ConstraintResult constraintResult = constraint.ApplyTo(del);
if (!constraintResult.IsSuccess)
IssueWarning(constraintResult, "Unless", message.ToString(), actualExpression, constraintExpression);
}
public static void Unless<[System.Runtime.CompilerServices.Nullable(2)] TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, Func<string> getExceptionMessage, [CallerArgumentExpression("del")] string actualExpression = "", [CallerArgumentExpression("expr")] string constraintExpression = "")
{
IConstraint constraint = expr.Resolve();
IncrementAssertCount();
ConstraintResult constraintResult = constraint.ApplyTo(del);
if (!constraintResult.IsSuccess)
IssueWarning(constraintResult, "Unless", getExceptionMessage(), actualExpression, constraintExpression);
}
public static void Unless(bool condition, NUnitString message = default(NUnitString), [CallerArgumentExpression("condition")] string actualExpression = "")
{
Unless(condition, Is.True, () => message.ToString(), actualExpression, "Is.True");
}
public static void Unless(bool condition, FormattableString message, [CallerArgumentExpression("condition")] string actualExpression = "")
{
Unless(condition, Is.True, () => message.ToString(), actualExpression, "Is.True");
}
public static void Unless(bool condition, Func<string> getExceptionMessage, [CallerArgumentExpression("condition")] string actualExpression = "")
{
Unless(condition, Is.True, getExceptionMessage, actualExpression, "Is.True");
}
public static void Unless(Func<bool> condition, NUnitString message = default(NUnitString), [CallerArgumentExpression("condition")] string actualExpression = "")
{
Unless(condition(), Is.True, message, actualExpression, "Is.True");
}
public static void Unless(Func<bool> condition, FormattableString message, [CallerArgumentExpression("condition")] string actualExpression = "")
{
Unless(condition(), Is.True, message, actualExpression, "Is.True");
}
public static void Unless(Func<bool> condition, Func<string> getExceptionMessage, [CallerArgumentExpression("condition")] string actualExpression = "")
{
Unless(condition(), Is.True, getExceptionMessage, actualExpression, "Is.True");
}
public static void Unless<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual, IResolveConstraint expression, NUnitString message = default(NUnitString), [CallerArgumentExpression("actual")] string actualExpression = "", [CallerArgumentExpression("expression")] string constraintExpression = "")
{
Unless(actual, expression, () => message.ToString(), actualExpression, constraintExpression);
}
public static void Unless<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual, IResolveConstraint expression, FormattableString message, [CallerArgumentExpression("actual")] string actualExpression = "", [CallerArgumentExpression("expression")] string constraintExpression = "")
{
Unless(actual, expression, () => message.ToString(), actualExpression, constraintExpression);
}
public static void Unless<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual, IResolveConstraint expression, Func<string> getExceptionMessage, [CallerArgumentExpression("actual")] string actualExpression = "", [CallerArgumentExpression("expression")] string constraintExpression = "")
{
IConstraint constraint = expression.Resolve();
IncrementAssertCount();
ConstraintResult constraintResult = constraint.ApplyTo(actual);
if (!constraintResult.IsSuccess)
IssueWarning(constraintResult, "Unless", getExceptionMessage(), actualExpression, constraintExpression);
}
public static void If<[System.Runtime.CompilerServices.Nullable(2)] TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, NUnitString message = default(NUnitString), [CallerArgumentExpression("del")] string actualExpression = "", [CallerArgumentExpression("expr")] string constraintExpression = "")
{
NotConstraint notConstraint = new NotConstraint(expr.Resolve());
IncrementAssertCount();
ConstraintResult constraintResult = notConstraint.ApplyTo(del);
if (!constraintResult.IsSuccess)
IssueWarning(constraintResult, "If", message.ToString(), actualExpression, constraintExpression);
}
public static void If<[System.Runtime.CompilerServices.Nullable(2)] TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, FormattableString message, [CallerArgumentExpression("del")] string actualExpression = "", [CallerArgumentExpression("expr")] string constraintExpression = "")
{
NotConstraint notConstraint = new NotConstraint(expr.Resolve());
IncrementAssertCount();
ConstraintResult constraintResult = notConstraint.ApplyTo(del);
if (!constraintResult.IsSuccess)
IssueWarning(constraintResult, "If", message.ToString(), actualExpression, constraintExpression);
}
public static void If<[System.Runtime.CompilerServices.Nullable(2)] TActual>(ActualValueDelegate<TActual> del, IResolveConstraint expr, Func<string> getExceptionMessage, [CallerArgumentExpression("del")] string actualExpression = "", [CallerArgumentExpression("expr")] string constraintExpression = "")
{
NotConstraint notConstraint = new NotConstraint(expr.Resolve());
IncrementAssertCount();
ConstraintResult constraintResult = notConstraint.ApplyTo(del);
if (!constraintResult.IsSuccess)
IssueWarning(constraintResult, "If", getExceptionMessage(), actualExpression, constraintExpression);
}
public static void If(bool condition, NUnitString message = default(NUnitString), [CallerArgumentExpression("condition")] string actualExpression = "")
{
If(condition, Is.True, () => message.ToString(), actualExpression, "Is.True");
}
public static void If(bool condition, FormattableString message, [CallerArgumentExpression("condition")] string actualExpression = "")
{
If(condition, Is.True, () => message.ToString(), actualExpression, "Is.True");
}
public static void If(bool condition, Func<string> getExceptionMessage, [CallerArgumentExpression("condition")] string actualExpression = "")
{
If(condition, Is.True, getExceptionMessage, actualExpression, "Is.True");
}
public static void If(Func<bool> condition, NUnitString message = default(NUnitString), [CallerArgumentExpression("condition")] string actualExpression = "")
{
If(condition(), Is.True, () => message.ToString(), actualExpression, "Is.True");
}
public static void If(Func<bool> condition, FormattableString message, [CallerArgumentExpression("condition")] string actualExpression = "")
{
If(condition(), Is.True, () => message.ToString(), actualExpression, "Is.True");
}
public static void If(Func<bool> condition, Func<string> getExceptionMessage, [CallerArgumentExpression("condition")] string actualExpression = "")
{
If(condition(), Is.True, getExceptionMessage, actualExpression, "Is.True");
}
public static void If<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual, IResolveConstraint expression, NUnitString message = default(NUnitString), [CallerArgumentExpression("actual")] string actualExpression = "", [CallerArgumentExpression("expression")] string constraintExpression = "")
{
If(actual, expression, () => message.ToString(), actualExpression, constraintExpression);
}
public static void If<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual, IResolveConstraint expression, FormattableString message, [CallerArgumentExpression("actual")] string actualExpression = "", [CallerArgumentExpression("expression")] string constraintExpression = "")
{
If(actual, expression, () => message.ToString(), actualExpression, constraintExpression);
}
public static void If<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual, IResolveConstraint expression, Func<string> getExceptionMessage, [CallerArgumentExpression("actual")] string actualExpression = "", [CallerArgumentExpression("expression")] string constraintExpression = "")
{
NotConstraint notConstraint = new NotConstraint(expression.Resolve());
IncrementAssertCount();
ConstraintResult constraintResult = notConstraint.ApplyTo(actual);
if (!constraintResult.IsSuccess)
IssueWarning(constraintResult, "If", getExceptionMessage(), actualExpression, constraintExpression);
}
private static void IncrementAssertCount()
{
TestExecutionContext.CurrentContext.IncrementAssertCount();
}
private static void IssueWarning(ConstraintResult result, string method, string message, string actualExpression, string constraintExpression)
{
MessageWriter messageWriter = new TextMessageWriter(Assert.ExtendedMessage("Warn." + method, message, actualExpression, constraintExpression), Array.Empty<object>());
result.WriteMessageTo(messageWriter);
Assert.Warn(messageWriter.ToString());
}
}
}