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