From: Choy R. <ch...@us...> - 2005-01-05 00:30:14
|
Update of /cvsroot/dotnetmock/dotnetmock/DotNetMock/Dynamic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25159/DotNetMock/Dynamic Modified Files: AbstractArgumentMutator.cs ExpectationMethod.cs Added Files: PredicateUtils.cs Log Message: Make the AndRequire a bit more consistent by allowing it to automatically convert object -> IPredicate. Index: ExpectationMethod.cs =================================================================== RCS file: /cvsroot/dotnetmock/dotnetmock/DotNetMock/Dynamic/ExpectationMethod.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ExpectationMethod.cs 1 Jan 2005 22:58:07 -0000 1.9 --- ExpectationMethod.cs 5 Jan 2005 00:29:36 -0000 1.10 *************** *** 136,160 **** for (int i = 0; i < _expectedMethodArguments.Length; i++) { ! object expectedArg = _expectedMethodArguments[i]; object actualArg = _methodArguments[i]; ! ! IPredicate predicate = expectedArg as IPredicate; ! ! // if expectedArg is not an IPredicate, use default ! // behavior of IsEqual or IsAnything ! if (predicate == null) ! { ! if (expectedArg == null) ! { ! predicate = new IsAnything(); ! } ! else ! { ! predicate = new IsEqual(expectedArg); ! } ! } Assertion.Assert(predicate.Eval(actualArg)); ! // then handle mutators if any ! IArgumentMutator mutator = expectedArg as IArgumentMutator; if ( mutator!=null ) { --- 136,149 ---- for (int i = 0; i < _expectedMethodArguments.Length; i++) { ! object argumentExpectation = _expectedMethodArguments[i]; object actualArg = _methodArguments[i]; ! ! // evaluate whether input expectations have been met ! IPredicate predicate = ! PredicateUtils.ConvertFrom(argumentExpectation); Assertion.Assert(predicate.Eval(actualArg)); ! // return output expectations if specified ! IArgumentMutator mutator = ! argumentExpectation as IArgumentMutator; if ( mutator!=null ) { Index: AbstractArgumentMutator.cs =================================================================== RCS file: /cvsroot/dotnetmock/dotnetmock/DotNetMock/Dynamic/AbstractArgumentMutator.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AbstractArgumentMutator.cs 1 Jan 2005 22:58:07 -0000 1.2 --- AbstractArgumentMutator.cs 5 Jan 2005 00:29:34 -0000 1.3 *************** *** 3,7 **** #endregion #region Imports ! #endregion --- 3,7 ---- #endregion #region Imports ! using DotNetMock.Dynamic.Predicates; #endregion *************** *** 15,19 **** public abstract class AbstractArgumentMutator : IArgumentMutator, IPredicate { ! private IPredicate _predicate = null; /// <summary> /// Abstract method representing the exchanging of parameters --- 15,20 ---- public abstract class AbstractArgumentMutator : IArgumentMutator, IPredicate { ! private static IPredicate DEFAULT_PREDICATE = new IsAnything(); ! private IPredicate _predicate = DEFAULT_PREDICATE; /// <summary> /// Abstract method representing the exchanging of parameters *************** *** 22,46 **** public abstract void Mutate(ref object argument); /// <summary> ! /// Chains the current instance to another predicate to evaluate when exchanging parameters /// </summary> ! /// <param name="predicate"><see cref="IPredicate"/> to use for evaluation</param> /// <returns>reference to this instance</returns> ! public object AndRequire(IPredicate predicate) { ! _predicate = predicate; return this; } /// <summary> ! /// If there is no predicate associate with this mutator, returns true. Otherwise, evaluates the ! /// input value according to the predicate. /// </summary> /// <param name="inputValue">Value to evaluate</param> ! /// <returns>The Result of the predicate evaluation, or true if no predicate is assigned to this instance.</returns> public virtual bool Eval(object inputValue) { - if ( _predicate==null ) - { - return true; - } return _predicate.Eval(inputValue); } --- 23,44 ---- public abstract void Mutate(ref object argument); /// <summary> ! /// Chains the current instance to another predicate to evaluate when ! /// exchanging parameters /// </summary> ! /// <param name="requirement">object requirement that can be converted ! /// to a <see cref="IPredicate"/></param> /// <returns>reference to this instance</returns> ! public object AndRequire(object requirement) { ! _predicate = PredicateUtils.ConvertFrom(requirement); return this; } /// <summary> ! /// Evaluates the input value according to the contained predicate. /// </summary> /// <param name="inputValue">Value to evaluate</param> ! /// <returns>Result of the predicate evaluation</returns> public virtual bool Eval(object inputValue) { return _predicate.Eval(inputValue); } --- NEW FILE: PredicateUtils.cs --- #region License // Copyright (c) 2004 Griffin Caprio & Choy Rim. All rights reserved. #endregion #region Imports using DotNetMock.Dynamic.Predicates; #endregion namespace DotNetMock.Dynamic { /// <summary> /// Utilities that for working with predicates. /// </summary> public class PredicateUtils { /// <summary> /// Create an appropriate <see cref="IPredicate"/> given an /// abitrary object. /// </summary> /// <param name="expectation">argument expectation</param> /// <returns><see cref="IPredicate"/> that is appropriate for /// the specified object</returns> public static IPredicate ConvertFrom(object expectation) { IPredicate predicate = expectation as IPredicate; if ( predicate==null ) { if ( expectation==null ) { predicate = new IsAnything(); } else { predicate = new IsEqual(expectation); } } return predicate; } } } |