18da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal/*
28da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *  Copyright 2010 Google Inc.
38da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
48da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Licensed under the Apache License, Version 2.0 (the "License");
58da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * you may not use this file except in compliance with the License.
68da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * You may obtain a copy of the License at
78da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
88da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *     http://www.apache.org/licenses/LICENSE-2.0
98da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Unless required by applicable law or agreed to in writing, software
118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * distributed under the License is distributed on an "AS IS" BASIS,
128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * See the License for the specific language governing permissions and
148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * limitations under the License.
158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal */
168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalpackage com.google.android.testing.mocking;
178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.Capture;
198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.EasyMock;
208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.IArgumentMatcher;
218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.IExpectationSetters;
228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.LogicalOperator;
238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.lang.reflect.Constructor;
258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.lang.reflect.InvocationTargetException;
268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.lang.reflect.Method;
278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.ArrayList;
288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.Comparator;
298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.List;
308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal/**
328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Android Mock is a wrapper for EasyMock (2.4) which allows for real Class mocking on
338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * an Android (Dalvik) VM.
348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * All methods on Android Mock are syntactically equivalent to EasyMock method
368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * calls, and will delegate calls to EasyMock, while performing the required
378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * transformations to avoid Dalvik VM troubles.
388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Calls directly to EasyMock will work correctly only if the Class being mocked
408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * is in fact an Interface. Calls to Android Mock will work correctly for both
418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Interfaces and concrete Classes.
428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Android Mock requires that the code being mocked be instrumented prior to
448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * loading to the Dalvik VM by having called the MockGenerator.jar file. Try
458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * running {@code java -jar MockGenerator.jar --help} for more information.
468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * An example usage pattern is:
488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * {@code @UsesMocks(MyClass.class) public void testFoo() { MyClass
508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * mockObject = AndroidMock.createMock(MyClass.class);
518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * AndroidMock.expect(mockObject.foo(0)).andReturn(42);
528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * AndroidMock.replay(mockObject); assertEquals(42, mockObject.foo(0));
538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * AndroidMock.verify(mockObject); } * }
548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * <b>A note about parameter and return types for the <i>expects</i> style of methods.</b>
578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * The various expectation methods such as {@link #eq(boolean)}, {@link #and(boolean, boolean)},
588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * and {@link #leq(byte)} all have nonsense return values. Each of the expectation methods may only
598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * be executed under strict conditions (in order to set expectations of incoming method parameters
608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * during record mode) and thus their return types are in fact never used. The return types are set
618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * only to satisfy the compile-time parameter requirements of the methods being mocked in order to
628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * allow code such as: {@code mockObject.doFoo(anyInt());}. If {@link #anyInt()} did not return
638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * {@code int} then the compiler would not accept the preceding code fragment.
648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Similarly, the complex expectation methods ({@code #and}, {@code #or}, and {@code not}) take
668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * various parameter types, but will throw an {@link java.lang.IllegalStateException} if anything
678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * other than an expectation method is provided.  E.g. {@code mockObject.doFoo(and(gt(5), lt(10));}
688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * The benefit of this is to make it very easy to read the test code after it has been written.
708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Additionally, the test code is protected by type safety at compile time.
718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * The downside of this is that when writing the test code in the record phase, how to use the
738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * expectation APIs is not made clear by the method signatures of these expectation methods. In
748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * particular, it's not at all clear that {@link #and(byte, byte)} takes as parameters other
758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * expectation methods, and not just any random method that returns a {@literal byte} or even a
768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * {@literal byte} literal.
778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * @author swoodward@google.com (Stephen Woodward)
798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal */
808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalpublic class AndroidMock {
818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  private AndroidMock() {
828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Creates a mock object for the specified class, order checking
868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * is enabled by default. The difference between a strict mock and a normal mock is that a strict
878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock will not allow for invocations of the mock object to occur other than in the exact order
888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified during record mode.
898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The parameter {@literal args} allows the caller to choose which constructor on the Class
918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified by {@literal toMock} to be called when constructing the Mock object. If a constructor
928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * takes primitive values, Java Auto-boxing/unboxing will take care of it automatically, allowing
938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the caller to make calls such as {@literal createStrictMock(MyObject.class, 42, "hello!")},
948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * where {@literal MyObject} defines a constructor such as
958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal public MyObject(int answer, String greeting)}.
968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the class type to be mocked.
988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param toMock the class of the object to be mocked.
998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param args the arguments to pass to the constructor.
1008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return the mock object.
1018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
1028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T createStrictMock(Class<T> toMock, Object... args) {
1038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return createStrictMock(null, toMock, args);
1048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
1078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Creates a mock object for the specified class, order checking
1088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * is enabled by default. The difference between a strict mock and a normal mock is that a strict
1098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock will not allow for invocations of the mock object to occur other than in the exact order
1108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified during record mode.
1118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
1128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The parameter {@literal args} allows the caller to choose which constructor on the Class
1138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified by {@literal toMock} to be called when constructing the Mock object. If a constructor
1148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * takes primitive values, Java Auto-boxing/unboxing will take care of it automatically, allowing
1158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the caller to make calls such as
1168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal createStrictMock("NameMyMock", MyObject.class, 42, "hello!")},
1178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * where {@literal MyObject} defines a constructor such as
1188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal public MyObject(int answer, String greeting)}.
1198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
1208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the class type to be mocked.
1218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param name the name of the mock object. This must be a valid Java identifier. This value is
1228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * used as the return value from {@link #toString()} when invoked on the mock object.
1238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param toMock the class of the object to be mocked.
1248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param args the arguments to pass to the constructor.
1258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return the mock object.
1268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @throws IllegalArgumentException if the name is not a valid Java identifier.
1278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
1288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("cast")
1298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T createStrictMock(String name, Class<T> toMock, Object... args) {
1308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (toMock.isInterface()) {
1318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return EasyMock.createStrictMock(name, toMock);
1328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
1338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Object mockedInterface = EasyMock.createStrictMock(name, getInterfaceFor(toMock));
1348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return (T) getSubclassFor(toMock, getInterfaceFor(toMock), mockedInterface, args);
1358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
1388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Creates a mock object for the specified class, order checking
1398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * is disabled by default. A normal mock with order checking disabled will allow you to record
1408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the method invocations during record mode in any order. If order is important, use
1418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #createStrictMock(Class, Object...)} instead.
1428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
1438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The parameter {@literal args} allows the caller to choose which constructor on the Class
1448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified by {@literal toMock} to be called when constructing the Mock object. If a constructor
1458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * takes primitive values, Java Auto-boxing/unboxing will take care of it automatically, allowing
1468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the caller to make calls such as
1478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal createMock(MyObject.class, 42, "hello!")},
1488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * where {@literal MyObject} defines a constructor such as
1498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal public MyObject(int answer, String greeting)}.
1508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
1518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the type of the class to be mocked.
1528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param toMock the class object representing the class to be mocked.
1538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param args the arguments to pass to the constructor.
1548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return the mock object.
1558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
1568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T createMock(Class<T> toMock, Object... args) {
1578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return createMock(null, toMock, args);
1588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
1618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Creates a mock object for the specified class, order checking
1628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * is disabled by default. A normal mock with order checking disabled will allow you to record
1638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the method invocations during record mode in any order. If order is important, use
1648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #createStrictMock(Class, Object...)} instead.
1658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
1668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The parameter {@literal args} allows the caller to choose which constructor on the Class
1678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified by {@literal toMock} to be called when constructing the Mock object. If a constructor
1688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * takes primitive values, Java Auto-boxing/unboxing will take care of it automatically, allowing
1698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the caller to make calls such as
1708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal createMock("NameMyMock", MyObject.class, 42, "hello!")},
1718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * where {@literal MyObject} defines a constructor such as
1728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal public MyObject(int answer, String greeting)}.
1738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
1748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the type of the class to be mocked.
1758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param name the name of the mock object. This must be a valid Java identifier. This value is
1768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * used as the return value from {@link #toString()} when invoked on the mock object.
1778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param toMock the class object representing the class to be mocked.
1788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param args the arguments to pass to the constructor.
1798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return the mock object.
1808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @throws IllegalArgumentException if the name is not a valid Java identifier.
1818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
1828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("cast")
1838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T createMock(String name, Class<T> toMock, Object... args) {
1848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (toMock.isInterface()) {
1858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return EasyMock.createMock(name, toMock);
1868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
1878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Object mockedInterface = EasyMock.createMock(name, getInterfaceFor(toMock));
1888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return (T) getSubclassFor(toMock, getInterfaceFor(toMock), mockedInterface, args);
1898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
1928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Creates a mock object for the specified class, order checking
1938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * is disabled by default, and the mock object will return {@code 0},
1948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code null} or {@code false} for unexpected invocations.
1958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
1968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The parameter {@literal args} allows the caller to choose which constructor on the Class
1978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified by {@literal toMock} to be called when constructing the Mock object. If a constructor
1988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * takes primitive values, Java Auto-boxing/unboxing will take care of it automatically, allowing
1998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the caller to make calls such as
2008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal createNiceMock(MyObject.class, 42, "hello!")},
2018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * where {@literal MyObject} defines a constructor such as
2028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal public MyObject(int answer, String greeting)}.
2038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the type of the class to be mocked.
2058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param toMock the class object representing the class to be mocked.
2068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param args the arguments to pass to the constructor.
2078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return the mock object.
2088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
2098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T createNiceMock(Class<T> toMock, Object... args) {
2108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return createNiceMock(null, toMock, args);
2118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
2148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Creates a mock object for the specified class, order checking
2158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * is disabled by default, and the mock object will return {@code 0},
2168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code null} or {@code false} for unexpected invocations.
2178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The parameter {@literal args} allows the caller to choose which constructor on the Class
2198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified by {@literal toMock} to be called when constructing the Mock object. If a constructor
2208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * takes primitive values, Java Auto-boxing/unboxing will take care of it automatically, allowing
2218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the caller to make calls such as
2228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal createNiceMock("NameMyMock", MyObject.class, 42, "hello!")},
2238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * where {@literal MyObject} defines a constructor such as
2248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@literal public MyObject(int answer, String greeting)}.
2258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the type of the class to be mocked.
2278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param name the name of the mock object. This must be a valid Java identifier. This value is
2288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * used as the return value from {@link #toString()} when invoked on the mock object.
2298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param toMock the class object representing the class to be mocked.
2308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param args the arguments to pass to the constructor.
2318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @throws IllegalArgumentException if the name is not a valid Java identifier.
2328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
2338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("cast")
2348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T createNiceMock(String name, Class<T> toMock, Object... args) {
2358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (toMock.isInterface()) {
2368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return EasyMock.createNiceMock(name, toMock);
2378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
2388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Object mockedInterface = EasyMock.createNiceMock(name, getInterfaceFor(toMock));
2398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return (T) getSubclassFor(toMock, getInterfaceFor(toMock), mockedInterface, args);
2408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
2438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Returns the expectation setter for the last expected invocation in the current thread.
2448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expectation setters are used during the recording phase to specify what method calls
2458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * will be expected during the replay phase, and with which parameters. Parameters may be
2468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * specified as literal values (e.g. {@code expect(mock.foo(42));  expect(mock.foo("hello"));})
2478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * or according to parameter expectation criteria. Some examples of parameter expectation
2488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * criteria include {@link #anyObject()}, {@link #leq(int)}, {@link #contains(String)},
2498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #isA(Class)} and also the more complex {@link #and(char, char)},
2508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #or(boolean, boolean)}, and {@link #not(double)}.
2518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * An {@link org.easymock.IExpectationSetters} object has methods which allow you to define
2538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the expected behaviour of the mocked method and the expected number of invocations,
2548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * e.g. {@link org.easymock.IExpectationSetters#andReturn(Object)},
2558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.IExpectationSetters#andThrow(Throwable)}, and
2568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.IExpectationSetters#atLeastOnce()}.
2578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the parameter is used to transport the type to the ExpectationSetter.
2598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * It allows writing the expected call as an argument,
2608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * e.g. {@code expect(mock.getName()).andReturn("John Doe")}.
2618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return the expectation setter.
2628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
2638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> IExpectationSetters<T> expect(T expectedValue) {
2648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.expect(expectedValue);
2658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
2688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Returns the expectation setter for the last expected invocation in the
2698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * current thread. This method is used for expected invocations on void
2708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * methods. Use this for things such as
2718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.IExpectationSetters#andThrow(Throwable)}
2728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * on void methods.
2738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
2748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code mock.doFoo();
2758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * AndroidMock.expectLastCall().andThrow(new IllegalStateException());}
2768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @see #expect(Object) for more details about {@link org.easymock.IExpectationSetters}
2788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return the expectation setter.
2798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
2808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> IExpectationSetters<T> expectLastCall() {
2818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.expectLastCall();
2828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
2858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code boolean} argument as a parameter to a mocked method.
2868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
2878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
2898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
2908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
2928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyBoolean())).andReturn("hello world");}
2938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
2948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code false}. The return value is always ignored.
2958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
2968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static boolean anyBoolean() {
2978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.anyBoolean();
2988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
3018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code byte} argument as a parameter to a mocked method.
3028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
3038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
3058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
3068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
3088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyByte())).andReturn("hello world");}
3098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
3118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
3128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte anyByte() {
3138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.anyByte();
3148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
3178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code char} argument as a parameter to a mocked method.
3188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
3198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
3218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
3228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
3248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyChar())).andReturn("hello world");}
3258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
3278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
3288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static char anyChar() {
3298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.anyChar();
3308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
3338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code int} argument as a parameter to a mocked method.
3348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
3358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
3378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
3388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
3408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyInt())).andReturn("hello world");}
3418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
3438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
3448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int anyInt() {
3458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.anyInt();
3468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
3498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code long} argument as a parameter to a mocked method.
3508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
3518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
3538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
3548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
3568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyLong())).andReturn("hello world");}
3578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
3598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
3608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long anyLong() {
3618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.anyLong();
3628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
3658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code float} argument as a parameter to a mocked method.
3668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
3678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
3698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
3708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
3728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyFloat())).andReturn("hello world");}
3738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
3758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
3768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float anyFloat() {
3778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.anyFloat();
3788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
3818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code double} argument as a parameter to a mocked method.
3828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
3838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
3858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
3868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
3888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyDouble())).andReturn("hello world");}
3898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.   */
3918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double anyDouble() {
3928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.anyDouble();
3938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
3968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code short} argument as a parameter to a mocked method.
3978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
3988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
3998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
4008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
4018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
4038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyShort())).andReturn("hello world");}
4048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.   */
4068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short anyShort() {
4078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.anyShort();
4088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
4118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code java.lang.Object} (or subclass) argument as a parameter to a mocked method.
4128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Note that this includes Arrays (since an array {@literal is an Object})
4138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
4148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
4168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
4178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
4198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.anyLong())).andReturn("hello world");}
4208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
4228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
4238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("unchecked")
4248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T anyObject() {
4258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return (T) EasyMock.anyObject();
4268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
4298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code Comparable} argument greater than or equal to the given value as a parameter
4308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
4318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
4338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
4358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
4368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
4388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.geq("hi"))).andReturn("hello");}
4398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
4418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than or equal.
4428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
4438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
4448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T extends Comparable<T>> T geq(Comparable<T> expectedValue) {
4458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.geq(expectedValue);
4468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
4498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} argument greater than or equal to the given value as a parameter
4508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
4518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
4538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
4558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
4568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
4588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.geq((byte)42))).andReturn("hello");}
4598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
4618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than or equal.
4628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
4638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
4648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte geq(byte expectedValue) {
4658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.geq(expectedValue);
4668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
4698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} argument greater than or equal to the given value as a parameter
4708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
4718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
4738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
4758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
4768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
4788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.geq(42.0))).andReturn("hello");}
4798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
4818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than or equal.
4828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
4838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
4848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double geq(double expectedValue) {
4858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.geq(expectedValue);
4868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
4898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} argument greater than or equal to the given value as a parameter
4908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
4918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
4938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
4958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
4968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
4978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
4988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.geq(42.0f))).andReturn("hello");}
4998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
5018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than or equal.
5028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
5038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
5048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float geq(float expectedValue) {
5058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.geq(expectedValue);
5068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
5098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code int} argument greater than or equal to the given value as a parameter
5108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
5118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
5138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
5158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
5168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
5188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.geq(42))).andReturn("hello");}
5198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
5218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than or equal.
5228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
5238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
5248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int geq(int expectedValue) {
5258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.geq(expectedValue);
5268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
5298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} argument greater than or equal to the given value as a parameter
5308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
5318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
5338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
5358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
5368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
5388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.geq(42l))).andReturn("hello");}
5398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
5418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than or equal.
5428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
5438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
5448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long geq(long expectedValue) {
5458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.geq(expectedValue);
5468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
5498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} argument greater than or equal to the given value as a parameter
5508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
5518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
5538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
5558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
5568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
5588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.geq((short)42))).andReturn("hello");}
5598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
5618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than or equal.
5628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
5638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
5648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short geq(short expectedValue) {
5658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.geq(expectedValue);
5668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
5698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code Comparable} argument less than or equal to the given value as a parameter
5708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
5718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
5738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
5758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
5768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
5788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.leq("hi"))).andReturn("hello");}
5798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
5818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than or equal.
5828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
5838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
5848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T extends Comparable<T>> T leq(Comparable<T> expectedValue) {
5858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.leq(expectedValue);
5868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
5898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} argument less than or equal to the given value as a parameter
5908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
5918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
5938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
5958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
5968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
5978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
5988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.leq((byte)42))).andReturn("hello");}
5998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
6018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than or equal.
6028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
6038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
6048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte leq(byte expectedValue) {
6058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.leq(expectedValue);
6068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
6098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} argument less than or equal to the given value as a parameter
6108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
6118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
6138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
6158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
6168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
6188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.leq(42.0))).andReturn("hello");}
6198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
6218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than or equal.
6228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
6238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
6248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double leq(double expectedValue) {
6258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.leq(expectedValue);
6268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
6298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} argument less than or equal to the given value as a parameter
6308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
6318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
6338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
6358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
6368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
6388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.leq(42.0f))).andReturn("hello");}
6398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
6418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than or equal.
6428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
6438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
6448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float leq(float expectedValue) {
6458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.leq(expectedValue);
6468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
6498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code int} argument less than or equal to the given value as a parameter
6508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
6518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
6538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
6558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
6568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
6588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.leq(42))).andReturn("hello");}
6598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
6618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than or equal.
6628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
6638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
6648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int leq(int expectedValue) {
6658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.leq(expectedValue);
6668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
6698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} argument less than or equal to the given value as a parameter
6708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
6718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
6738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
6758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
6768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
6788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.leq(42l))).andReturn("hello");}
6798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
6818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than or equal.
6828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
6838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
6848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long leq(long expectedValue) {
6858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.leq(expectedValue);
6868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
6898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} argument less than or equal to the given value as a parameter
6908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
6918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
6938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
6958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
6968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
6978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
6988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.leq((short)42))).andReturn("hello");}
6998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
7018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than or equal.
7028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
7038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
7048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short leq(short expectedValue) {
7058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.leq(expectedValue);
7068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
7098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code Comparable} argument greater than the given value as a parameter
7108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
7118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
7138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
7158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
7168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
7188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.gt("hi"))).andReturn("hello");}
7198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
7218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than.
7228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
7238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
7248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T extends Comparable<T>> T gt(Comparable<T> expectedValue) {
7258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.gt(expectedValue);
7268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
7298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} argument greater than the given value as a parameter
7308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
7318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
7338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
7358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
7368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
7388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.gt((byte)42))).andReturn("hello");}
7398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
7418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than.
7428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
7438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
7448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte gt(byte expectedValue) {
7458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.gt(expectedValue);
7468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
7498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} argument greater than the given value as a parameter
7508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
7518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
7538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
7558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
7568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
7588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.gt(42.0))).andReturn("hello");}
7598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
7618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than.
7628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
7638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
7648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double gt(double expectedValue) {
7658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.gt(expectedValue);
7668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
7698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} argument greater than the given value as a parameter
7708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
7718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
7738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
7758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
7768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
7788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.gt(42.0f))).andReturn("hello");}
7798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
7818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than.
7828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
7838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
7848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float gt(float expectedValue) {
7858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.gt(expectedValue);
7868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
7898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code int} argument greater than the given value as a parameter
7908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
7918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
7938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
7958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
7968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
7978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
7988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.gt(42))).andReturn("hello");}
7998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
8018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than.
8028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
8038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
8048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int gt(int expectedValue) {
8058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.gt(expectedValue);
8068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
8098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} argument greater than the given value as a parameter
8108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
8118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
8138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
8158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
8168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
8188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.gt(42l))).andReturn("hello");}
8198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
8218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than.
8228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
8238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
8248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long gt(long expectedValue) {
8258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.gt(expectedValue);
8268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
8298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} argument greater than the given value as a parameter
8308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
8318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
8338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
8358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
8368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
8388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.gt((short)42))).andReturn("hello");}
8398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
8418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be greater than.
8428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
8438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
8448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short gt(short expectedValue) {
8458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.gt(expectedValue);
8468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
8498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code Comparable} argument less than the given value as a parameter
8508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
8518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
8538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
8558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
8568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
8588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.lt("hi"))).andReturn("hello");}
8598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
8618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than.
8628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
8638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
8648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T extends Comparable<T>> T lt(Comparable<T> expectedValue) {
8658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.lt(expectedValue);
8668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
8698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} argument less than the given value as a parameter
8708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
8718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
8738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
8758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
8768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
8788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.lt((byte)42))).andReturn("hello");}
8798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
8818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than.
8828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
8838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
8848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte lt(byte expectedValue) {
8858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.lt(expectedValue);
8868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
8898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} argument less than the given value as a parameter
8908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
8918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
8938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
8958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
8968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
8978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
8988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.lt(42.0))).andReturn("hello");}
8998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
9018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than.
9028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
9038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
9048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double lt(double expectedValue) {
9058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.lt(expectedValue);
9068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
9078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
9088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
9098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} argument less than the given value as a parameter
9108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
9118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
9138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
9158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
9168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
9188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.lt(42.0f))).andReturn("hello");}
9198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
9218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than.
9228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
9238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
9248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float lt(float expectedValue) {
9258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.lt(expectedValue);
9268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
9278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
9288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
9298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code int} argument less than the given value as a parameter
9308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
9318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
9338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
9358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
9368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
9388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.lt(42))).andReturn("hello");}
9398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
9418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than.
9428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
9438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
9448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int lt(int expectedValue) {
9458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.lt(expectedValue);
9468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
9478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
9488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
9498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} argument less than the given value as a parameter
9508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
9518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
9538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
9558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
9568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
9588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.lt(42l))).andReturn("hello");}
9598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
9618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than.
9628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
9638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
9648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long lt(long expectedValue) {
9658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.lt(expectedValue);
9668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
9678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
9688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
9698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} argument less than the given value as a parameter
9708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to a mocked method.
9718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
9738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
9758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
9768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
9788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.lt((short)42))).andReturn("hello");}
9798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
9818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be less than.
9828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
9838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
9848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short lt(short expectedValue) {
9858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.lt(expectedValue);
9868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
9878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
9888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
9898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an object implementing the given class as a parameter to a mocked method. During
9908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * replay mode, the mocked method call will accept any {@code Object} that is an instance of
9918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the specified class or one of its subclasses. Specifically, any {@code non-null} parameter for
9928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * which the {@code java.lang.Class.isAssignableFrom(Class)} will return true will be accepted by
9938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * this matcher during the replay phase.
9948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
9968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
9988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
9998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
10018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.isA(HashMap.class))).andReturn("hello");}
10028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the expected Class type.
10048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param clazz the class of the accepted type.
10058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
10068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
10078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T isA(Class<T> clazz) {
10088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.isA(clazz);
10098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
10108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
10118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
10128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a string that contains the given substring as a parameter to a mocked method.
10138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code non-null String} which contains
10148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided {@code substring}.
10158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Use this to loosen the expectations of acceptable parameters for a mocked method call.
10178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
10198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
10208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
10228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.substring("hi"))).andReturn("hello");}
10238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param substring the substring which any incoming parameter to the mocked method must contain.
10258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}.
10268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
10278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static String contains(String substring) {
10288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.contains(substring);
10298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
10308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
10318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
10328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code boolean} parameter that matches both of the provided expectations. During
10338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * replay mode, the mocked method will accept any {@code boolean} that matches both of the
10348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations. Possible expectations for {@code first} and {@code second} include (but
10358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * are not limited to) {@link #anyBoolean()} and {@link #eq(boolean)}.
10368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
10388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
10398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.and(AndroidMock.anyBoolean(), AndroidMock.eq(true)))).andReturn("hello");}
10408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
10428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(anyBoolean(), eq(true)))).andReturn("hello");}
10448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
10468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
10478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
10498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
10508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code false}. The return value is always ignored.
10518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
10528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static boolean and(boolean first, boolean second) {
10538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
10548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
10558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
10568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
10578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} parameter that matches both of the provided expectations. During replay
10588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mode, the mocked method will accept any {@code byte} that matches both of the provided
10598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expectations. Possible expectations for {@code first} and {@code second} include (but are not
10608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * limited to) {@link #anyByte()}, {@link #leq(byte)} and {@link #eq(byte)}.
10618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
10638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.and(
10648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.gt((byte)0), AndroidMock.lt((byte)42)))).andReturn("hello");}
10658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
10678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(gt((byte)0), lt((byte)42)))).andReturn("hello");}
10698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
10718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
10728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
10748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
10758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
10768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
10778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte and(byte first, byte second) {
10788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
10798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
10808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
10818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
10828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code char} parameter that matches both of the provided expectations. During replay
10838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mode, the mocked method will accept any {@code char} that matches both of the provided
10848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expectations. Possible expectations for {@code first} and {@code second} include (but are not
10858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * limited to) {@link #anyChar()} and {@link #eq(char)}.
10868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
10888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
10898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.and(AndroidMock.geq('a'), AndroidMock.lt('q')))).andReturn("hello");}
10908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
10928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(eq('a'), anyChar()))).andReturn("hello");}
10948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
10968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
10978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
10988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
10998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
11008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
11018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
11028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static char and(char first, char second) {
11038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
11048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
11058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
11068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
11078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} parameter that matches both of the provided expectations. During
11088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * replay mode, the mocked method will accept any {@code double} that matches both of the provided
11098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expectations. Possible expectations for {@code first} and {@code second} include (but are not
11108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * limited to) {@link #anyDouble()}, {@link #leq(double)} and {@link #eq(double)}.
11118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
11138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
11148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.and(AndroidMock.gt(0.0), AndroidMock.lt(42.0)))).andReturn("hello");}
11158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
11178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(gt(0.0), lt(42.0)))).andReturn("hello");}
11198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
11218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
11228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
11248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
11258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
11268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
11278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double and(double first, double second) {
11288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
11298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
11308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
11318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
11328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} parameter that matches both of the provided expectations. During
11338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * replay mode, the mocked method will accept any {@code float} that matches both of the provided
11348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expectations. Possible expectations for {@code first} and {@code second} include (but are not
11358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * limited to) {@link #anyFloat()}, {@link #leq(float)} and {@link #eq(float)}.
11368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
11388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
11398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.and(AndroidMock.gt(0.0f), AndroidMock.lt(42.0f)))).andReturn("hello");}
11408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
11428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(gt(0.0f), lt(42.0f)))).andReturn("hello");}
11448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
11468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
11478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
11498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
11508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
11518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
11528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float and(float first, float second) {
11538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
11548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
11558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
11568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
11578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code int} parameter that matches both of the provided expectations. During
11588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * replay mode, the mocked method will accept any {@code int} that matches both of the provided
11598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expectations. Possible expectations for {@code first} and {@code second} include (but are not
11608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * limited to) {@link #anyInt()}, {@link #leq(int)} and {@link #eq(int)}.
11618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
11638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
11648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.and(AndroidMock.gt(0), AndroidMock.lt(42)))).andReturn("hello");}
11658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
11678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(gt(0), lt(42)))).andReturn("hello");}
11698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
11718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
11728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
11748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
11758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
11768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
11778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int and(int first, int second) {
11788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
11798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
11808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
11818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
11828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} parameter that matches both of the provided expectations. During
11838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * replay mode, the mocked method will accept any {@code long} that matches both of the provided
11848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expectations. Possible expectations for {@code first} and {@code second} include (but are not
11858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * limited to) {@link #anyLong()}, {@link #leq(long)} and {@link #eq(long)}.
11868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
11888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
11898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.and(AndroidMock.gt(0l), AndroidMock.lt(42l)))).andReturn("hello");}
11908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
11928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(gt(0l), lt(42l)))).andReturn("hello");}
11948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
11968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
11978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
11988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
11998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
12008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
12018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
12028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long and(long first, long second) {
12038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
12048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
12058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
12068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
12078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} parameter that matches both of the provided expectations. During
12088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * replay mode, the mocked method will accept any {@code short} that matches both of the provided
12098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expectations. Possible expectations for {@code first} and {@code second} include (but are not
12108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * limited to) {@link #anyShort()}, {@link #leq(short)} and {@link #eq(short)}.
12118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
12138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.and(
12148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.gt((short)0), AndroidMock.lt((short)42)))).andReturn("hello");}
12158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
12178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(gt((short)0), lt((short)42)))).andReturn("hello");}
12198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
12218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
12228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
12248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
12258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
12268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
12278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short and(short first, short second) {
12288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
12298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
12308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
12318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
12328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code Object} parameter that matches both of the provided expectations. During
12338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * replay mode, the mocked method will accept any {@code Object} that matches both of the provided
12348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expectations. Possible expectations for {@code first} and {@code second} include (but are not
12358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * limited to) {@link #anyObject()}, {@link #isA(Class)} and {@link #contains(String)}.
12368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
12388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
12398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.and(
12408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *            AndroidMock.contains("hi"), AndroidMock.contains("world")))).andReturn("hello");}
12418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
12438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(contains("hi"), contains("world")))).andReturn("hello");}
12458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
12478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
12488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
12508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
12518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
12528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
12538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T and(T first, T second) {
12548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.and(first, second);
12558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
12568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
12578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
12588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code boolean} parameter that matches one or both of the provided expectations.
12598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code boolean} that matches one of the
12608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
12618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyBoolean()} and {@link #eq(boolean)}.
12628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
12648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
12658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.or(AndroidMock.eq(true), AndroidMock.anyBoolean()))).andReturn("hello");}
12668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
12688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(and(eq(true), anyBoolean()))).andReturn("hello");}
12708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
12728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
12738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
12758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
12768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code false}. The return value is always ignored.
12778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
12788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static boolean or(boolean first, boolean second) {
12798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
12808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
12818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
12828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
12838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} parameter that matches one or both of the provided expectations.
12848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code byte} that matches one of the
12858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
12868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyByte()}, {@link #eq(byte)},
12878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * and {@link #lt(byte)}.
12888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
12908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.or(
12918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.geq((byte)0), AndroidMock.lt((byte)42)))).andReturn("hello");}
12928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
12948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(or(geq((byte)0), lt((byte)42)))).andReturn("hello");}
12968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
12978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
12988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
12998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
13018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
13028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
13038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
13048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte or(byte first, byte second) {
13058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
13068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
13078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
13088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
13098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code char} parameter that matches one or both of the provided expectations.
13108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code char} that matches one of the
13118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
13128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyChar()} and {@link #eq(char)}.
13138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
13158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.or(
13168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.eq('a'), AndroidMock.eq('z')))).andReturn("hello");}
13178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
13198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(or(eq('a'), eq('z')))).andReturn("hello");}
13218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
13238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
13248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
13268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
13278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
13288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
13298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static char or(char first, char second) {
13308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
13318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
13328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
13338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
13348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} parameter that matches one or both of the provided expectations.
13358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code double} that matches one of the
13368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
13378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyDouble()}, {@link #eq(double)}
13388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * and {@link #lt(double)}.
13398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
13418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.or(
13428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.eq(0.0), AndroidMock.geq(42.0)))).andReturn("hello");}
13438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
13458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(or(eq(0.0), geq(42.0)))).andReturn("hello");}
13478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
13498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
13508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
13528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
13538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
13548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
13558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double or(double first, double second) {
13568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
13578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
13588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
13598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
13608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} parameter that matches one or both of the provided expectations.
13618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code float} that matches one of the
13628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
13638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyFloat()}, {@link #eq(float)}
13648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * and {@link #lt(float)}.
13658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
13678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.or(
13688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.eq(0.0f), AndroidMock.geq(42.0f)))).andReturn("hello");}
13698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
13718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(or(eq(0.0f), geq(42.0f)))).andReturn("hello");}
13738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
13758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
13768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
13788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
13798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
13808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
13818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float or(float first, float second) {
13828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
13838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
13848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
13858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
13868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code int} parameter that matches one or both of the provided expectations.
13878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code int} that matches one of the
13888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
13898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyInt()}, {@link #eq(int)}
13908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * and {@link #lt(int)}.
13918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
13938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.or(
13948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.eq(0), AndroidMock.geq(42)))).andReturn("hello");}
13958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
13978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
13988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(or(eq(0), geq(42)))).andReturn("hello");}
13998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
14018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
14028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
14048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
14058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
14068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
14078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int or(int first, int second) {
14088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
14098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
14108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
14118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
14128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} parameter that matches one or both of the provided expectations.
14138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code long} that matches one of the
14148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
14158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyLong()}, {@link #eq(long)}
14168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * and {@link #lt(long)}.
14178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
14198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.or(
14208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.eq(0l), AndroidMock.geq(42l)))).andReturn("hello");}
14218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
14238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(or(eq(0l), geq(42l)))).andReturn("hello");}
14258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
14278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
14288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
14308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
14318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
14328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
14338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long or(long first, long second) {
14348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
14358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
14368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
14378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
14388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} parameter that matches one or both of the provided expectations.
14398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code short} that matches one of the
14408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
14418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyShort()}, {@link #eq(short)}
14428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * and {@link #lt(short)}.
14438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
14458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.or(
14468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.eq((short)0), AndroidMock.geq((short)42)))).andReturn("hello");}
14478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
14498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(or(eq((short)0), geq((short)42)))).andReturn("hello");}
14518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
14538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
14548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
14568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
14578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
14588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
14598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short or(short first, short second) {
14608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
14618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
14628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
14638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
14648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code Object} parameter that matches one or both of the provided expectations.
14658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code Object} that matches one of the
14668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * provided expectations, or both of them. Possible expectations for {@code first} and
14678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code second} include (but are not limited to) {@link #anyObject()}, {@link #eq(Class)}
14688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * and {@link #lt(Comparable)}.
14698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
14718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.or(
14728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.notNull(), AndroidMock.geq(fortyTwo)))).andReturn("hello");}
14738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
14758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(or(notNull(), geq(fortyTwo)))).andReturn("hello");}
14778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
14798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
14808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param first the first expectation to test.
14828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param second the second expectation to test.
14838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
14848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
14858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T or(T first, T second) {
14868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.or(first, second);
14878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
14888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
14898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
14908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code boolean} parameter that does not match the provided expectation.
14918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code boolean} that does not match
14928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
14938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyBoolean()} and {@link #eq(boolean)}.
14948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
14968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
14978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq(true)))).andReturn("hello");}
14988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
14998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
15008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq(true)))).andReturn("hello");}
15028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
15048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
15058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
15078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code false}. The return value is always ignored.
15088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
15098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static boolean not(boolean expectation) {
15108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
15118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
15128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
15138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
15148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} parameter that does not match the provided expectation.
15158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code byte} that does not match
15168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
15178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyByte()}, {@link #eq(byte)} and
15188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #lt(byte)}.
15198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
15218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
15228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq((byte)42)))).andReturn("hello");}
15238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
15258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq((byte)42)))).andReturn("hello");}
15278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
15298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
15308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
15328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
15338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
15348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte not(byte expectation) {
15358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
15368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
15378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
15388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
15398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code char} parameter that does not match the provided expectation.
15408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code char} that does not match
15418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
15428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyChar()} and {@link #eq(char)}.
15438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
15458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
15468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq('a')))).andReturn("hello");}
15478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
15498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq('a')))).andReturn("hello");}
15518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
15538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
15548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
15568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
15578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
15588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static char not(char expectation) {
15598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
15608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
15618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
15628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
15638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} parameter that does not match the provided expectation.
15648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code double} that does not match
15658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
15668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyDouble()}, {@link #eq(double)} and
15678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #lt(double)}.
15688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
15708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
15718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq(42.0)))).andReturn("hello");}
15728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
15748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq(42.0)))).andReturn("hello");}
15768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
15788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
15798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
15818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
15828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
15838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double not(double expectation) {
15848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
15858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
15868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
15878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
15888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} parameter that does not match the provided expectation.
15898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code float} that does not match
15908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
15918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyFloat()}, {@link #eq(float)} and
15928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #lt(float)}.
15938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
15958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
15968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq(42.0f)))).andReturn("hello");}
15978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
15988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
15998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq(42.0f)))).andReturn("hello");}
16018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
16038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
16048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
16068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
16078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
16088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float not(float expectation) {
16098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
16108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
16118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
16128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
16138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code int} parameter that does not match the provided expectation.
16148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code int} that does not match
16158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
16168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyInt()}, {@link #eq(int)} and
16178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #lt(int)}.
16188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
16208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
16218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq(42)))).andReturn("hello");}
16228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
16248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq(42)))).andReturn("hello");}
16268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
16288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
16298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
16318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
16328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
16338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int not(int expectation) {
16348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
16358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
16368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
16378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
16388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} parameter that does not match the provided expectation.
16398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code long} that does not match
16408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
16418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyLong()}, {@link #eq(long)} and
16428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #lt(long)}.
16438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
16458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
16468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq(42l)))).andReturn("hello");}
16478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
16498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq(42l)))).andReturn("hello");}
16518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
16538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
16548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
16568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
16578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
16588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long not(long expectation) {
16598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
16608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
16618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
16628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
16638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} parameter that does not match the provided expectation.
16648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code short} that does not match
16658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
16668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyShort()}, {@link #eq(short)} and
16678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #lt(short)}.
16688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
16708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
16718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq((short)42)))).andReturn("hello");}
16728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
16748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq((short)42)))).andReturn("hello");}
16768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
16788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
16798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
16818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
16828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
16838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short not(short expectation) {
16848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
16858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
16868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
16878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
16888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code Object} parameter that does not match the given expectation.
16898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code Object} that does not match
16908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the provided expectation. Possible expectations for {@code expectation}
16918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * include (but are not limited to) {@link #anyObject()}, {@link #leq(Comparable)} and
16928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #isNull()}.
16938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
16958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(
16968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *        AndroidMock.not(AndroidMock.eq(fortyTwo)))).andReturn("hello");}
16978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
16988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
16998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(not(eq(fortyTwo)))).andReturn("hello");}
17018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
17038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
17048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectation the expectation to test.
17068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
17078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
17088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T not(T expectation) {
17098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.not(expectation);
17108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
17118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
17128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
17138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code boolean} parameter that is equal to the provided {@code value}.
17148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code boolean} that matches the
17158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue}.
17168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
17188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(true))).andReturn("hello");}
17198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
17218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(true))).andReturn("hello");}
17238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
17258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
17268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
17288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
17298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code false}. The return value is always ignored.
17308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
17318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static boolean eq(boolean expectedValue) {
17328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
17338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
17348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
17358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
17368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} parameter that is equal to the provided {@code expectedValue}.
17378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code byte} that matches the
17388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue}.
17398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
17418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq((byte)0))).andReturn("hello");}
17428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
17448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq((byte)0))).andReturn("hello");}
17468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
17488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
17498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
17518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
17528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code false}. The return value is always ignored.
17538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
17548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte eq(byte expectedValue) {
17558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
17568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
17578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
17588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
17598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code char} parameter that is equal to the provided {@code expectedValue}.
17608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code char} that matches the
17618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue}.
17628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
17648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq('a'))).andReturn("hello");}
17658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
17678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq('a'))).andReturn("hello");}
17698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
17718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
17728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
17748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
17758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
17768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
17778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static char eq(char expectedValue) {
17788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
17798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
17808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
17818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
17828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} parameter that is equal to the provided {@code expectedValue}.
17838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code double} that matches the
17848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue}.
17858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
17878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(0.0))).andReturn("hello");}
17888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
17908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(0.0))).andReturn("hello");}
17928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
17948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
17958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
17968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
17978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
17988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
17998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
18008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double eq(double expectedValue) {
18018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
18028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
18038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
18048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
18058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} parameter that is equal to the provided {@code expectedValue}.
18068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code float} that matches the
18078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue}.
18088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
18108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(0.0f))).andReturn("hello");}
18118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
18138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(0.0f))).andReturn("hello");}
18158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
18178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
18188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
18208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
18218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
18228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
18238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float eq(float expectedValue) {
18248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
18258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
18268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
18278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
18288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code int} parameter that is equal to the provided {@code expectedValue}.
18298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code int} that matches the
18308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue}.
18318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
18338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(0))).andReturn("hello");}
18348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
18368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(0))).andReturn("hello");}
18388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
18408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
18418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
18438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
18448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
18458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
18468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int eq(int expectedValue) {
18478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
18488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
18498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
18508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
18518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} parameter that is equal to the provided {@code expectedValue}.
18528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code long} that matches the
18538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue}.
18548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
18568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(0l))).andReturn("hello");}
18578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
18598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(0l))).andReturn("hello");}
18618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
18638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
18648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
18668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
18678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
18688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
18698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long eq(long expectedValue) {
18708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
18718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
18728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
18738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
18748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} parameter that is equal to the provided {@code expectedValue}.
18758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code short} that matches the
18768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue}.
18778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
18798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq((short)0))).andReturn("hello");}
18808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
18828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq((short)0))).andReturn("hello");}
18848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
18868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
18878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
18888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
18898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
18908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
18918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
18928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short eq(short expectedValue) {
18938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
18948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
18958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
18968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
18978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code Object} parameter that is equal to the provided {@code expectedValue}.
18988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * During replay mode, the mocked method will accept any {@code Object} that matches the
18998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value of {@code expectedValue} according to its {@code equals(Object)} method.
19008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
19028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq("hi"))).andReturn("hello");}
19038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
19058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq("hi"))).andReturn("hello");}
19078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
19098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
19108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the value to which the specified incoming parameter to the mocked method
19128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must be equal.
19138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
19148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
19158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T eq(T expectedValue) {
19168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue);
19178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
19188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
19198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
19208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code boolean} array parameter that is equal to the given array, i.e. it has to
19218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
19228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
19248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myBooleanArray))).andReturn("hello");}
19258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
19278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myBooleanArray))).andReturn("hello");}
19298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
19318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
19328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
19348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
19358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
19368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
19378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static boolean[] aryEq(boolean[] expectedValue) {
19388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
19398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
19408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
19418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
19428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code byte} array parameter that is equal to the given array, i.e. it has to
19438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
19448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
19468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myByteArray))).andReturn("hello");}
19478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
19498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myByteArray))).andReturn("hello");}
19518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
19538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
19548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
19568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
19578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
19588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
19598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static byte[] aryEq(byte[] expectedValue) {
19608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
19618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
19628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
19638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
19648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code char} array parameter that is equal to the given array, i.e. it has to
19658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
19668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
19688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myCharArray))).andReturn("hello");}
19698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
19718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myCharArray))).andReturn("hello");}
19738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
19758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
19768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
19788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
19798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
19808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
19818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static char[] aryEq(char[] expectedValue) {
19828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
19838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
19848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
19858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
19868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} array parameter that is equal to the given array, i.e. it has to
19878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
19888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
19908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myDoubleArray))).andReturn("hello");}
19918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
19938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myDoubleArray))).andReturn("hello");}
19958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
19978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
19988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
19998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
20008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
20018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
20028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
20038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double[] aryEq(double[] expectedValue) {
20048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
20058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
20068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
20078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
20088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} array parameter that is equal to the given array, i.e. it has to
20098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
20108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
20128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myFloatrArray))).andReturn("hello");}
20138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
20158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myFloatArray))).andReturn("hello");}
20178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
20198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
20208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
20228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
20238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
20248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
20258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float[] aryEq(float[] expectedValue) {
20268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
20278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
20288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
20298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
20308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code int} array parameter that is equal to the given array, i.e. it has to
20318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
20328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
20348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myIntArray))).andReturn("hello");}
20358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
20378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myIntArray))).andReturn("hello");}
20398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
20418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
20428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
20448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
20458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
20468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
20478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static int[] aryEq(int[] expectedValue) {
20488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
20498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
20508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
20518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
20528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code long} array parameter that is equal to the given array, i.e. it has to
20538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
20548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
20568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myLongArray))).andReturn("hello");}
20578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
20598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myLongArray))).andReturn("hello");}
20618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
20638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
20648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
20668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
20678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
20688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
20698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static long[] aryEq(long[] expectedValue) {
20708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
20718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
20728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
20738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
20748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code short} array parameter that is equal to the given array, i.e. it has to
20758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
20768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
20788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myShortArray))).andReturn("hello");}
20798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
20818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myShortArray))).andReturn("hello");}
20838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
20858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
20868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
20888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
20898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
20908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
20918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static short[] aryEq(short[] expectedValue) {
20928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
20938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
20948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
20958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
20968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code Object} array parameter that is equal to the given array, i.e. it has to
20978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * have the same length, and each element has to be equal.
20988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
20998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
21008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mock.getString(AndroidMock.eq(myObjectArray))).andReturn("hello");}
21018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Or, for illustration purposes (using static imports)
21038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expect(mock.getString(eq(myObjectArray))).andReturn("hello");}
21058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
21078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
21088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the type of the array, it is passed through to prevent casts.
21108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the array to which the specified incoming parameter to the mocked method
21118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * must have equal contents.
21128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
21138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
21148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T[] aryEq(T[] expectedValue) {
21158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.aryEq(expectedValue);
21168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
21178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
21188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
21198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code null} Object as a parameter.
21208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
21228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
21238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
21258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
21268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("unchecked")
21278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T isNull() {
21288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return (T) EasyMock.isNull();
21298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
21308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
21318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
21328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects any {@code non-null} Object parameter.
21338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
21358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
21368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
21388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
21398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("unchecked")
21408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T notNull() {
21418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return (T) EasyMock.notNull();
21428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
21438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
21448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
21458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code String} that contains a substring that matches the given regular
21468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expression as a parameter to the mocked method.
21478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * See {@link java.util.regex.Matcher#find()} for more details.
21498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
21518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
21528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param regex the regular expression which must match some substring of the incoming parameter
21548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * to the mocked method.
21558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
21568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
21578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static String find(String regex) {
21588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.find(regex);
21598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
21608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
21618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
21628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code String} as a parameter to the mocked method, the entire length of which must
21638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * match the given regular expression. This is not to be confused with {@link #find(String)} which
21648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * matches the regular expression against any substring of the incoming parameter to the mocked
21658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * method.
21668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * See {@link java.util.regex.Matcher#matches()} for more details.
21688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
21708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
21718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param regex the regular expression against which the entire incoming parameter to the
21738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mocked method must match.
21748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
21758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
21768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static String matches(String regex) {
21778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.matches(regex);
21788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
21798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
21808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
21818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code String} as a parameter to the mocked method that starts with the given prefix.
21828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * See {@link java.lang.String#startsWith(String)} for more details.
21848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
21868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
21878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
21888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param prefix the string that is expected to match against the start of any incoming
21898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * parameter to the mocked method.
21908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
21918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
21928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static String startsWith(String prefix) {
21938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.startsWith(prefix);
21948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
21958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
21968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
21978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code String} as a parameter to the mocked method that ends with the given
21988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code suffix}.
21998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * See {@link java.lang.String#startsWith(String)} for more details.
22018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
22038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
22048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param suffix the string that is expected to match against the end of any incoming
22068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * parameter to the mocked method.
22078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
22088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
22098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static String endsWith(String suffix) {
22108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.endsWith(suffix);
22118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
22128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
22138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
22148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code double} as a parameter to the mocked method that has an absolute difference to
22158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the given {@code expectedValue} that is less than the given {@code delta}.
22168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The acceptable range of values is theoretically defined as any value {@code x} which satisfies
22188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the following inequality: {@code expectedValue - delta &lt;= x &lt;= expectedValue + delta}.
22198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * In practice, this is only true when {@code expectedValue + delta} and
22218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expectedValue - delta} fall exactly on a precisely representable {@code double} value.
22228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Normally, the acceptable range of values is defined as any value {@code x} which satisfies the
22238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * following inequality:
22248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expectedValue - delta &lt; x &lt; expectedValue + delta}.
22258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g. {@code AndroidMock.expect(mockObject.getString(
22278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *    AndroidMock.eq(42.0, 0.1))).andReturn("hello world");}
22288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The code snippet above will expect any {@code double} value greater than 41.9 and
22308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * less than 42.1.
22318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
22338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
22348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the center value of the expected range of values.
22368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param delta the acceptable level of inaccuracy before this expectation fails.
22378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
22388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
22398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static double eq(double expectedValue, double delta) {
22408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue, delta);
22418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
22428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
22438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
22448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@code float} as a parameter to the mocked method that has an absolute difference to
22458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the given {@code expectedValue} that is less than the given {@code delta}.
22468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The acceptable range of values is theoretically defined as any value {@code x} which satisfies
22488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the following inequality: {@code expectedValue - delta &lt;= x &lt;= expectedValue + delta}.
22498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * In practice, this is only true when {@code expectedValue + delta} and
22518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expectedValue - delta} fall exactly on a precisely representable {@code float} value.
22528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Normally, the acceptable range of values is defined as any value {@code x} which satisfies the
22538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * following inequality:
22548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expectedValue - delta &lt; x &lt; expectedValue + delta}.
22558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g. {@code AndroidMock.expect(mockObject.getString(
22578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *    AndroidMock.eq(42.0f, 0.1f))).andReturn("hello world");}
22588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The code snippet above will expect any {@code float} value greater than 41.9 and
22608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * less than 42.1.
22618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
22638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
22648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the center value of the expected range of values.
22668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param delta the acceptable level of inaccuracy before this expectation fails.
22678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code 0}. The return value is always ignored.
22688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
22698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static float eq(float expectedValue, float delta) {
22708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.eq(expectedValue, delta);
22718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
22728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
22738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
22748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an {@code Object} as a parameter to the mocked method that is the same as the given
22758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * value. This expectation will fail unless the incoming parameter is {@code ==} to the
22768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code expectedValue} provided (i.e. the same {@code Object} reference).
22778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
22798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
22808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> the type of the object, it is passed through to prevent casts.
22828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the exact object which is expected during replay.
22838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
22848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
22858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T same(T expectedValue) {
22868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.same(expectedValue);
22878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
22888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
22898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
22908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects a {@link java.lang.Comparable} argument equal to the given value according to
22918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * its {@link java.lang.Comparable#compareTo(Object)} method.
22928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
22948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
22958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
22968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the {@link java.lang.Comparable} value which is expected to be equal to
22978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * the incoming parameter to the mocked method according to the
22988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link java.lang.Comparable#compareTo(Object)} method.
22998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
23008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
23018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T extends Comparable<T>> T cmpEq(Comparable<T> expectedValue) {
23028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.cmpEq(expectedValue);
23038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
23048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
23058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
23068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expects an argument that will be compared using the provided {@link java.util.Comparator}, the
23078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * result of which will then be applied to the provided {@link org.easymock.LogicalOperator}
23088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * (e.g. {@link org.easymock.LogicalOperator#LESS_THAN},
23098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.LogicalOperator#EQUAL},
23108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.LogicalOperator#GREATER_OR_EQUAL}).
23118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The following comparison will take place:
23138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code comparator.compare(actual, expected) operator 0}
23148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
23168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * For illustration purposes (using static imports):
23178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code
23198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expect(mockObject.getString(cmp("hi", CASE_INSENSITIVE_ORDER, LESS_THAN))).andReturn("hello");}
23208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code
23228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * AndroidMock.expect(mockObject.getString(AndroidMock.cmp("hi", String.CASE_INSENSITIVE_ORDER,
23238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *    LogicalOperator.LESS_THAN))).andReturn("hello");}
23248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The above invocation indicates that the call to {@code mockObject.getString(String)} is
23278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expecting any String which is lexically before "hi" (in a case insensitive ordering).
23288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * If this method is used for anything other than to set a parameter expectation as part of a
23308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * mock object's recording phase, then an {@code IllegalStateException} will be thrown.
23318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param expectedValue the expected value against which the incoming method parameter will be
23338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * compared.
23348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param comparator {@link java.util.Comparator} used to perform the comparison between the
23358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * expected value and the incoming parameter to the mocked method.
23368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param operator The comparison operator, usually one of
23378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.LogicalOperator#LESS_THAN},
23388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.LogicalOperator#LESS_OR_EQUAL},
23398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.LogicalOperator#EQUAL}, {@link org.easymock.LogicalOperator#GREATER},
23408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.LogicalOperator#GREATER_OR_EQUAL}
23418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
23428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
23438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T cmp(T expectedValue, Comparator<? super T> comparator,
23448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      LogicalOperator operator) {
23458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.cmp(expectedValue, comparator, operator);
23468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
23478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
23488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
23498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Expect any {@code Object} as a parameter to the mocked method, but capture it for later use.
23508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.Capture} allows for capturing of the incoming value. Use
23528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.Capture#getValue()} to retrieve the captured value.
23538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param <T> Type of the captured object
23558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param captured a container to hold the captured value, retrieved by
23568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.Capture#getValue()}
23578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return {@code null}. The return value is always ignored.
23588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
23598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static <T> T capture(Capture<T> captured) {
23608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.capture(captured);
23618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
23628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
23638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
23648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Switches the given mock objects (more exactly: the controls of the mock
23658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * objects) to replay mode.
23668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param mocks the mock objects.
23688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
23698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void replay(Object... mocks) {
23708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (Object mockObject : mocks) {
23718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (mockObject instanceof MockObject) {
23728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.replay(((MockObject) mockObject).getDelegate___AndroidMock());
23738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } else {
23748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.replay(mockObject);
23758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
23768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
23778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
23788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
23798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
23808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Resets the given mock objects (more exactly: the controls of the mock
23818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * objects) allowing the mock objects to be reused.
23828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
23838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param mocks the mock objects.
23848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
23858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void reset(Object... mocks) {
23868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (Object mockObject : mocks) {
23878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (mockObject instanceof MockObject) {
23888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.reset(((MockObject) mockObject).getDelegate___AndroidMock());
23898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } else {
23908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.reset(mockObject);
23918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
23928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
23938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
23948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
23958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
23968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Resets the given mock objects (more exactly: the controls of the mock
23978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * objects) and change them in to mocks with nice behavior.
23988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #createNiceMock(Class, Object...)} has more details.
23998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param mocks the mock objects
24018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
24028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void resetToNice(Object... mocks) {
24038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (Object mockObject : mocks) {
24048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (mockObject instanceof MockObject) {
24058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.resetToNice(((MockObject) mockObject).getDelegate___AndroidMock());
24068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } else {
24078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.resetToNice(mockObject);
24088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
24098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
24108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
24118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
24128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
24138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Resets the given mock objects (more exactly: the controls of the mock
24148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * objects) and turn them to a mock with default behavior. {@link #createMock(Class, Object...)}
24158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * has more details.
24168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param mocks the mock objects
24188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
24198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void resetToDefault(Object... mocks) {
24208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (Object mockObject : mocks) {
24218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (mockObject instanceof MockObject) {
24228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.resetToDefault(((MockObject) mockObject).getDelegate___AndroidMock());
24238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } else {
24248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.resetToDefault(mockObject);
24258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
24268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
24278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
24288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
24298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
24308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Resets the given mock objects (more exactly: the controls of the mock
24318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * objects) and turn them to a mock with strict behavior.
24328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link #createStrictMock(Class, Object...)} has more details.
24338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param mocks the mock objects
24358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
24368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void resetToStrict(Object... mocks) {
24378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (Object mockObject : mocks) {
24388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (mockObject instanceof MockObject) {
24398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.resetToStrict(((MockObject) mockObject).getDelegate___AndroidMock());
24408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } else {
24418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.resetToStrict(mockObject);
24428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
24438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
24448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
24458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
24468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
24478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Verifies that all of the expected method calls for the given mock objects (more exactly: the
24488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * controls of the mock objects) have been executed.
24498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * The {@code verify} method captures the scenario where several methods were invoked correctly,
24518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * but some invocations did not occur. Typically, the {@code verify} method is the final thing
24528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * invoked in a test.
24538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param mocks the mock objects.
24558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
24568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void verify(Object... mocks) {
24578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (Object mockObject : mocks) {
24588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (mockObject instanceof MockObject) {
24598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.verify(((MockObject) mockObject).getDelegate___AndroidMock());
24608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } else {
24618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        EasyMock.verify(mockObject);
24628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
24638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
24648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
24658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
24668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
24678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Switches order checking of the given mock object (more exactly: the control
24688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * of the mock object) on or off. When order checking is on, the mock will expect the method
24698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * invokations to occur exactly in the order in which they appeared during the recording phase.
24708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param mock the mock object.
24728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param orderCheckingOn {@code true} to turn order checking on, {@code false} to turn it off.
24738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
24748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void checkOrder(Object mock, boolean orderCheckingOn) {
24758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (mock instanceof MockObject) {
24768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      EasyMock.checkOrder(((MockObject) mock).getDelegate___AndroidMock(), orderCheckingOn);
24778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else {
24788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      EasyMock.checkOrder(mock, orderCheckingOn);
24798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
24808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
24818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
24828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
24838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Reports an argument matcher. This method is needed to define custom argument
24848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * matchers.
24858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * For example:
24878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code
24898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * AndroidMock.reportMatcher(new IntIsFortyTwo());
24908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * AndroidMock.expect(mockObject.getString(null)).andReturn("hello world");}
24918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * This example will expect a parameter for {@code mockObject.getString(int)} that matches the
24938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * conditions required by the {@code matches} method as defined by
24948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.IArgumentMatcher#matches(Object)}.
24958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
24968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param matcher the matcher whose {@code matches} method will be applied to the incoming
24978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * parameter to the mocked method.
24988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
24998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void reportMatcher(IArgumentMatcher matcher) {
25008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    EasyMock.reportMatcher(matcher);
25018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
25028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
25038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
25048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Returns the arguments of the current mock method call, if inside an
25058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code IAnswer} callback - be careful here, reordering parameters of a
25068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * method changes the semantics of your tests.
25078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
25088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * This method is only usable within an {@link org.easymock.IAnswer} instance. Attach an
25098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.IAnswer} to an expectation by using the
25108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@link org.easymock.IExpectationSetters#andAnswer(org.easymock.IAnswer)} method.
25118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
25128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * E.g.
25138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * {@code AndroidMock.expect(mockObject.getString()).andAnswer(myAnswerCallback);}
25148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
25158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @return the arguments of the current mock method call.
25168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @throws IllegalStateException if called outside of {@code IAnswer}
25178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *         callbacks.
25188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
25198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static Object[] getCurrentArguments() {
25208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return EasyMock.getCurrentArguments();
25218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
25228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
25238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
25248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Makes the mock thread safe. The mock will be usable in a multithreaded
25258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * environment.
25268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
25278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param mock the mock to make thread safe.
25288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @param threadSafe If the mock should be thread safe or not.
25298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
25308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public static void makeThreadSafe(Object mock, boolean threadSafe) {
25318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (mock instanceof MockObject) {
25328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      EasyMock.makeThreadSafe(((MockObject) mock).getDelegate___AndroidMock(), threadSafe);
25338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else {
25348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      EasyMock.makeThreadSafe(mock, threadSafe);
25358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
25368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
25378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
25388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("unchecked")
25398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  private static <T, S> T getSubclassFor(Class<? super T> clazz, Class<S> delegateInterface,
25408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      Object realMock, Object... args) {
25418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Class<T> subclass;
25428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    String className = null;
25438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
25448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (isAndroidClass(clazz)) {
25458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        className = FileUtils.getSubclassNameFor(clazz, SdkVersion.getCurrentVersion());
25468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } else {
25478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        className = FileUtils.getSubclassNameFor(clazz, SdkVersion.UNKNOWN);
25488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
25498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      subclass = (Class<T>) Class.forName(className);
25508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (ClassNotFoundException e) {
25518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new RuntimeException("Could not find class for " + className
25528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + " which likely means that the mock-instrumented jar has not been created or else"
25538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + " is not being used in the current runtime environment. Try running MockGeneratorMain"
25548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + " in MockGenerator_deploy.jar or using the output of that execution as the input to"
25558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + " the dex/apk generation.", e);
25568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
25578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Constructor<T> constructor = getConstructorFor(subclass, args);
25588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    T newObject;
25598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
25608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      newObject = constructor.newInstance(args);
25618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (InstantiationException e) {
25628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new RuntimeException("Internal error instantiating new mock subclass"
25638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + subclass.getName(), e);
25648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalAccessException e) {
25658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new RuntimeException(
25668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "Internal error - the new mock subclass' constructor was inaccessible", e);
25678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (InvocationTargetException e) {
25688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new ExceptionInInitializerError(e);
25698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
25708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Method[] methods = subclass.getMethods();
25718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Method setMethod;
25728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
25738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      setMethod = subclass.getMethod("setDelegate___AndroidMock", delegateInterface);
25748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (NoSuchMethodException e) {
25758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new RuntimeException("Internal error - No setDelegate method found for " + "class "
25768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + subclass.getName() + " and param " + delegateInterface.getName(), e);
25778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
25788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
25798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      setMethod.invoke(newObject, realMock);
25808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
25818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new IllegalArgumentException("Internal error setting the delegate, expected "
25828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + newObject.getClass() + " to be subclass of " + clazz.getName());
25838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (InvocationTargetException e) {
25848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new RuntimeException("Severe internal error, setDelegate threw an exception", e);
25858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalAccessException e) {
25868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new RuntimeException("Internal error, setDelegate method was inaccessible", e);
25878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
25888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return newObject;
25898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
25908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
25918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  static boolean isUnboxableToPrimitive(Class<?> clazz, Object arg, boolean exactMatch) {
25928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (!clazz.isPrimitive()) {
25938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new IllegalArgumentException(
25948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "Internal Error - The class to test against is not a primitive");
25958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
25968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Class<?> unboxedType = null;
25978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (arg.getClass().equals(Integer.class)) {
25988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      unboxedType = Integer.TYPE;
25998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (arg.getClass().equals(Long.class)) {
26008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      unboxedType = Long.TYPE;
26018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (arg.getClass().equals(Byte.class)) {
26028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      unboxedType = Byte.TYPE;
26038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (arg.getClass().equals(Short.class)) {
26048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      unboxedType = Short.TYPE;
26058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (arg.getClass().equals(Character.class)) {
26068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      unboxedType = Character.TYPE;
26078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (arg.getClass().equals(Float.class)) {
26088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      unboxedType = Float.TYPE;
26098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (arg.getClass().equals(Double.class)) {
26108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      unboxedType = Double.TYPE;
26118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (arg.getClass().equals(Boolean.class)) {
26128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      unboxedType = Boolean.TYPE;
26138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else {
26148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return false;
26158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
26168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (exactMatch) {
26178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return clazz == unboxedType;
26188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
26198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return isAssignable(clazz, unboxedType);
26208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
26218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
26228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  private static boolean isAssignable(Class<?> to, Class<?> from) {
26238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (to == Byte.TYPE) {
26248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return from == Byte.TYPE;
26258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (to == Short.TYPE){
26268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return from == Byte.TYPE || from == Short.TYPE || from == Character.TYPE;
26278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (to == Integer.TYPE || to == Character.TYPE) {
26288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return from == Byte.TYPE || from == Short.TYPE || from == Integer.TYPE
26298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          || from == Character.TYPE;
26308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (to == Long.TYPE) {
26318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return from == Byte.TYPE || from == Short.TYPE || from == Integer.TYPE || from == Long.TYPE
26328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          || from == Character.TYPE;
26338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (to == Float.TYPE) {
26348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return from == Byte.TYPE || from == Short.TYPE || from == Integer.TYPE
26358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          || from == Character.TYPE || from == Float.TYPE;
26368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (to == Double.TYPE) {
26378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return from == Byte.TYPE || from == Short.TYPE || from == Integer.TYPE || from == Long.TYPE
26388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          || from == Character.TYPE || from == Float.TYPE || from == Double.TYPE;
26398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else if (to == Boolean.TYPE) {
26408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return from == Boolean.TYPE;
26418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } else {
26428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return to.isAssignableFrom(from);
26438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
26448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
26458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
26468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("unchecked")
26478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  static <T> Constructor<T> getConstructorFor(Class<T> clazz, Object... args)
26488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throws SecurityException {
26498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Constructor<T>[] constructors = (Constructor<T>[]) clazz.getConstructors();
26508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Constructor<T> compatibleConstructor = null;
26518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (Constructor<T> constructor : constructors) {
26528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      Class<?>[] params = constructor.getParameterTypes();
26538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (params.length == args.length) {
26548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        boolean exactMatch = true;
26558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        boolean compatibleMatch = true;
26568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        for (int i = 0; i < params.length; ++i) {
26578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          Object arg = args[i];
26588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          if (arg == null) {
26598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal            arg = Void.TYPE;
26608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          }
26618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          if (!params[i].isAssignableFrom(arg.getClass())) {
26628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal            if (params[i].isPrimitive()) {
26638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              exactMatch &= isUnboxableToPrimitive(params[i], arg, true);
26648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              compatibleMatch &= isUnboxableToPrimitive(params[i], arg, false);
26658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal            } else {
26668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              exactMatch = false;
26678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              compatibleMatch = false;
26688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal            }
26698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          }
26708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        }
26718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        if (exactMatch) {
26728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          return constructor;
26738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        } else if (compatibleMatch) {
26748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          compatibleConstructor = constructor;
26758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        }
26768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
26778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
26788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    if (compatibleConstructor != null) {
26798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return compatibleConstructor;
26808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
26818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<String> argTypes = new ArrayList<String>(args.length);
26828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (Object arg : args) {
26838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      argTypes.add(arg == null ? "<null>" : arg.getClass().toString());
26848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
26858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    throw new IllegalArgumentException("Could not find the specified Constructor: "
26868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        + clazz.getName() + "(" + argTypes + ")");
26878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
26888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
26898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  @SuppressWarnings("unchecked")
26908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  private static <T> Class<T> getInterfaceFor(Class<T> clazz) {
26918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
26928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      String className;
26938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (isAndroidClass(clazz)) {
26948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        className = FileUtils.getInterfaceNameFor(clazz, SdkVersion.getCurrentVersion());
26958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } else {
26968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        className = FileUtils.getInterfaceNameFor(clazz, SdkVersion.UNKNOWN);
26978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
26988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return (Class<T>) Class.forName(className);
26998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (ClassNotFoundException e) {
27008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      throw new RuntimeException("Could not find mock for " + clazz.getName()
27018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + "  -- Make sure to run the MockGenerator.jar on your test jar, and to "
27028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          + "build the Android test APK using the modified jar created by MockGenerator", e);
27038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
27048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
27058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
27068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  static boolean isAndroidClass(Class<?> clazz) {
27078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    String packageName = clazz.getPackage().getName();
27088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return packageName.startsWith("android.") || packageName.startsWith("dalvik.")
27098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        || packageName.startsWith("java.") || packageName.startsWith("javax.")
27108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        || packageName.startsWith("org.xml.sax") || packageName.startsWith("org.xmlpull.v1")
27118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        || packageName.startsWith("org.w3c.dom") || packageName.startsWith("org.apache.http")
27128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        || packageName.startsWith("junit.");
27138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
27148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal}
2715