// ****************************************************************
// Copyright 2007, Charlie Poole
// This is free software licensed under the NUnit license. You may
// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
// ****************************************************************
using System;
using NUnit.Framework.Constraints;
namespace NUnit.Framework.SyntaxHelpers
{
///
/// Summary description for HasNoPrefixB.
///
public class Has
{
///
/// Nested class that allows us to restrict the number
/// of key words that may appear after Has.No.
///
public class HasNoPrefixBuilder
{
///
/// Return a ConstraintBuilder conditioned to apply
/// the following constraint to a property.
///
/// The property name
/// A ConstraintBuilder
public ConstraintBuilder Property(string name)
{
return new ConstraintBuilder().Not.Property(name);
}
///
/// Return a Constraint that succeeds if the expected object is
/// not contained in a collection.
///
/// The expected object
/// A Constraint
public Constraint Member(object expected)
{
return new NotConstraint( new CollectionContainsConstraint(expected) ) ;
}
}
#region Prefix Operators
///
/// Has.No returns a ConstraintBuilder that negates
/// the constraint that follows it.
///
public static HasNoPrefixBuilder No
{
get { return new HasNoPrefixBuilder(); }
}
///
/// Has.AllItems returns a ConstraintBuilder, which will apply
/// the following constraint to all members of a collection,
/// succeeding if all of them succeed.
///
public static ConstraintBuilder All
{
get { return new ConstraintBuilder().All; }
}
///
/// Has.Some returns a ConstraintBuilder, which will apply
/// the following constraint to all members of a collection,
/// succeeding if any of them succeed. It is a synonym
/// for Has.Item.
///
public static ConstraintBuilder Some
{
get { return new ConstraintBuilder().Some; }
}
///
/// Has.None returns a ConstraintBuilder, which will apply
/// the following constraint to all members of a collection,
/// succeeding only if none of them succeed.
///
public static ConstraintBuilder None
{
get { return new ConstraintBuilder().None; }
}
///
/// Returns a new ConstraintBuilder, which will apply the
/// following constraint to a named property of the object
/// being tested.
///
/// The name of the property
public static ConstraintBuilder Property( string name )
{
return new ConstraintBuilder().Property(name);
}
#endregion
#region Property Constraints
///
/// Returns a new PropertyConstraint checking for the
/// existence of a particular property value.
///
/// The name of the property to look for
/// The expected value of the property
public static Constraint Property( string name, object expected )
{
return new PropertyConstraint( name, new EqualConstraint( expected ) );
}
///
/// Returns a new PropertyConstraint for the Length property
///
///
///
public static Constraint Length( int length )
{
return Property( "Length", length );
}
///
/// Returns a new PropertyConstraint or the Count property
///
///
///
public static Constraint Count( int count )
{
return Property( "Count", count );
}
#endregion
#region Member Constraint
///
/// Returns a new CollectionContainsConstraint checking for the
/// presence of a particular object in the collection.
///
/// The expected object
public static Constraint Member( object expected )
{
return new CollectionContainsConstraint( expected );
}
#endregion
}
}