blob: c9d18948894b072f4bc620bec168a58c796125dd [file] [log] [blame]
/*
* Copyright 2001-2009 OFFIS, Tammo Freese
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.easymock;
/**
* Allows setting expectations for an associated expected invocation.
* Implementations of this interface are returned by
* {@link EasyMock#expect(Object)}, and by {@link EasyMock#expectLastCall()}.
*
* @param <T> type of what should be returned by this expected call
*/
public interface IExpectationSetters<T> {
/**
* Sets a return value that will be returned for the expected invocation.
*
* @param value
* the value to return.
* @return this object to allow method call chaining.
*/
IExpectationSetters<T> andReturn(T value);
/**
* Sets a throwable that will be thrown for the expected invocation.
*
* @param throwable
* the throwable to throw.
* @return this object to allow method call chaining.
*/
IExpectationSetters<T> andThrow(Throwable throwable);
/**
* Sets an object that will be used to calculate the answer for the expected
* invocation (either return a value, or throw an exception).
*
* @param answer
* the object used to answer the invocation.
* @return this object to allow method call chaining.
*/
IExpectationSetters<T> andAnswer(IAnswer<? extends T> answer);
/**
* Sets an object implementing the same interface as the mock. The expected
* method call will be delegated to it with the actual arguments. The answer
* returned by this call will then be the answer returned by the mock
* (either return a value, or throw an exception).
*
* @param delegateTo
* the object the call is delegated to.
* @return the value returned by the delegated call.
*/
IExpectationSetters<T> andDelegateTo(Object delegateTo);
/**
* Sets a stub return value that will be returned for the expected
* invocation.
*
* @param value
* the value to return.
*/
void andStubReturn(T value);
/**
* Sets a stub throwable that will be thrown for the expected invocation.
*
* @param throwable
* the throwable to throw.
*/
void andStubThrow(Throwable throwable);
/**
* Sets a stub object that will be used to calculate the answer for the
* expected invocation (either return a value, or throw an exception).
*
* @param answer
* the object used to answer the invocation.
*/
void andStubAnswer(IAnswer<? extends T> answer);
/**
* Sets a stub object implementing the same interface as the mock. The
* expected method call will be delegated to it with the actual arguments.
* The answer returned by this call will then be the answer returned by the
* mock (either return a value, or throw an exception).
*
* @param delegateTo
* the object the call is delegated to.
*/
void andStubDelegateTo(Object delegateTo);
/**
* Sets stub behavior for the expected invocation (this is needed for void
* methods).
*/
void asStub();
/**
* Expect the last invocation <code>count</code> times.
*
* @param count
* the number of invocations expected.
* @return this object to allow method call chaining.
*/
IExpectationSetters<T> times(int count);
/**
* Expect the last invocation between <code>min</code> and
* <code>max</code> times.
*
* @param min
* the minimum number of invocations expected.
* @param max
* the maximum number of invocations expected.
* @return this object to allow method call chaining.
*/
IExpectationSetters<T> times(int min, int max);
/**
* Expect the last invocation once. This is default in EasyMock.
*
* @return this object to allow method call chaining.
*/
IExpectationSetters<T> once();
/**
* Expect the last invocation at least once.
*
* @return this object to allow method call chaining.
*/
IExpectationSetters<T> atLeastOnce();
/**
* Expect the last invocation any times.
*
* @return this object to allow method call chaining.
*/
IExpectationSetters<T> anyTimes();
}