001 package groovy.mock;
002
003 import groovy.lang.Closure;
004 import groovy.lang.ParameterArray;
005
006 import com.mockobjects.constraint.Constraint;
007
008 /**
009 *
010 * @author Joe Walnes
011 * @author Chris Stevenson
012 * @version $Revision: 1.2 $
013 */
014 public class ClosureConstraintMatcher implements Constraint {
015 private Closure closure;
016 private String message = "closure";
017
018 public ClosureConstraintMatcher(Closure closure) {
019 this.closure = closure;
020 }
021
022 public boolean eval(Object object) {
023 try {
024 closure.call(new ParameterArray(object));
025 return true;
026 }
027 catch (AssertionError e) {
028 message = e.getMessage();
029 return false;
030 }
031 }
032
033 public String toString() {
034 return message;
035 }
036
037 }