using System;
namespace NUnit.Framework
{
///
/// AbstractAsserter is the base class for all asserters.
/// Asserters encapsulate a condition test and generation
/// of an AssertionException with a tailored message. They
/// are used by the Assert class as helper objects.
///
/// User-defined asserters may be passed to the
/// Assert.DoAssert method in order to implement
/// extended asserts.
///
public abstract class AbstractAsserter : IAsserter
{
///
/// The user-defined message for this asserter.
///
protected readonly string userMessage;
///
/// Arguments to use in formatting the user-defined message.
///
protected readonly object[] args;
///
/// Our failure message object, initialized as needed
///
private AssertionFailureMessage failureMessage;
///
/// Constructs an AbstractAsserter
///
/// The message issued upon failure
/// Arguments to be used in formatting the message
public AbstractAsserter( string message, params object[] args )
{
this.userMessage = message;
this.args = args;
}
///
/// AssertionFailureMessage object used internally
///
protected AssertionFailureMessage FailureMessage
{
get
{
if ( failureMessage == null )
failureMessage = new AssertionFailureMessage( userMessage, args );
return failureMessage;
}
}
#region IAsserter Interface
///
/// Test method to be implemented by derived types.
/// Default always succeeds.
///
/// True if the test succeeds
public virtual bool Test()
{
return true;
}
///
/// Message related to a failure. If no failure has
/// occured, the result is unspecified.
///
public virtual string Message
{
get
{
return FailureMessage.ToString();
}
}
#endregion
}
}