18da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal/*
28da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Copyright 2010 Google Inc.
38da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
48da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Licensed under the Apache License, Version 2.0 (the "License"); you may not
58da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * use this file except in compliance with the License. You may obtain a copy of
68da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * 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, WITHOUT
128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * License for the specific language governing permissions and limitations under
148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * the License.
158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal */
168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalpackage com.google.android.testing.mocking;
178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport javassist.CannotCompileException;
198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport javassist.ClassPool;
208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport javassist.CtClass;
218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport javassist.CtMethod;
228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport javassist.Modifier;
238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport javassist.NotFoundException;
248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport javassist.expr.ExprEditor;
258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport javassist.expr.MethodCall;
268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport junit.framework.TestCase;
288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.Capture;
308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.IAnswer;
318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.LogicalOperator;
328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport org.easymock.internal.matchers.Equals;
338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.io.IOException;
358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.io.InputStream;
368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.io.ObjectInput;
378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.ArrayList;
388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.Arrays;
398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.Calendar;
408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.List;
418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.Locale;
428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.Map;
438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.SimpleTimeZone;
448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport java.util.Vector;
458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal/**
488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Tests for the AndroidMock class.
498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal *
508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * @author swoodward@google.com (Stephen Woodward)
518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal */
528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalpublic class AndroidMockTest extends TestCase {
538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  private List<String> notForwardedMethods =
548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      new ArrayList<String>(Arrays.asList(new String[] {
558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.getInterfaceFor(java.lang.Class)",
568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.getSubclassNameFor(java.lang.Class)",
578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.getSubclassFor(java.lang.Class,"
588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              + "java.lang.Class,java.lang.Object)",
598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.getInterfaceNameFor(java.lang.Class)",
608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.createStrictMock("
618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              + "java.lang.Class,java.lang.Object[])",
628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.createStrictMock("
638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              + "java.lang.String,java.lang.Class,java.lang.Object[])",
648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.createMock("
658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              + "java.lang.Class,java.lang.Object[])",
668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.createMock("
678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              + "java.lang.String,java.lang.Class,java.lang.Object[])",
688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.createNiceMock("
698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              + "java.lang.Class,java.lang.Object[])",
708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          "com.google.android.testing.mocking.AndroidMock.createNiceMock("
718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal              + "java.lang.String,java.lang.Class,java.lang.Object[])"}));
728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  private CtMethod[] getForwardedMethods() throws NotFoundException {
748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<CtMethod> methods =
758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new ArrayList<CtMethod>(Arrays.asList(getAndroidMockCtClass().getDeclaredMethods()));
768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    // Get a copy for safe removal of elements during iteration.
778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (CtMethod method : Arrays.asList(methods.toArray(new CtMethod[0]))) {
788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      if (notForwardedMethods.contains(method.getLongName())
798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          || !Modifier.isPublic(method.getModifiers())) {
808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        methods.remove(method);
818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return methods.toArray(new CtMethod[0]);
848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  private CtClass getAndroidMockCtClass() throws NotFoundException {
878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    return ClassPool.getDefault().get("com.google.android.testing.mocking.AndroidMock");
888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  private void compileClasses(List<GeneratedClassFile> mockClasses) throws NotFoundException {
918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (GeneratedClassFile clazz : mockClasses) {
928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CtClass ctClass;
938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      ctClass = ClassPool.getDefault().get(clazz.getClassName());
948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      try {
958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        ctClass.toClass();
968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } catch (CannotCompileException e) {
978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        // Just ignore -- this will happen for every class used in more than one test.
988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
1008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testIsUnboxableToPrimitiveAllPrimitives() {
1038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Integer.TYPE, new Integer(42), true));
1048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Long.TYPE, new Long(42L), true));
1058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Short.TYPE, new Short((short) 42), true));
1068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Byte.TYPE, new Byte((byte) 42), true));
1078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Boolean.TYPE, Boolean.TRUE, true));
1088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Float.TYPE, new Float(42.0f), true));
1098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Double.TYPE, new Double(42.0), true));
1108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Character.TYPE, new Character('a'), true));
1118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Integer.TYPE, 42, true));
1138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Long.TYPE, 42L, true));
1148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Short.TYPE, (short) 42, true));
1158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Byte.TYPE, (byte) 42, true));
1168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Boolean.TYPE, true, true));
1178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Float.TYPE, 42.0f, true));
1188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Double.TYPE, 42.0, true));
1198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertTrue(AndroidMock.isUnboxableToPrimitive(Character.TYPE, 'a', true));
1208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testIsUnboxableToPrimitiveIsObject() {
1238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertFalse(AndroidMock.isUnboxableToPrimitive(Integer.TYPE, new Object(), false));
1248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testIsUnboxableToPrimitiveAllWideningPrimitives() {
1278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Object[] testValues =
1288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new Object[] {new Byte((byte) 42), new Short((short) 42), new Integer(42), new Long(42L),
1298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal            new Float(42.0f), new Double(42.0), new Character('a'), Boolean.TRUE};
1308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    boolean[] byteExpected = new boolean[] {true, false, false, false, false, false, false, false};
1318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    boolean[] shortExpected = new boolean[] {true, true, false, false, false, false, true, false};
1328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    boolean[] intExpected = new boolean[] {true, true, true, false, false, false, true, false};
1338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    boolean[] longExpected = new boolean[] {true, true, true, true, false, false, true, false};
1348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    boolean[] floatExpected = new boolean[] {true, true, true, false, true, false, true, false};
1358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    boolean[] doubleExpected = new boolean[] {true, true, true, true, true, true, true, false};
1368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    boolean[] charExpected = new boolean[] {true, true, true, false, false, false, true, false};
1378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    boolean[] booleanExpected =
1388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new boolean[] {false, false, false, false, false, false, false, true};
1398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (int i = 0; i < testValues.length; ++i) {
1418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("Convert byte from " + testValues[i].getClass(), byteExpected[i], AndroidMock
1428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          .isUnboxableToPrimitive(Byte.TYPE, testValues[i], false));
1438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("Convert short from " + testValues[i].getClass(), shortExpected[i], AndroidMock
1448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          .isUnboxableToPrimitive(Short.TYPE, testValues[i], false));
1458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("Convert int from " + testValues[i].getClass(), intExpected[i], AndroidMock
1468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          .isUnboxableToPrimitive(Integer.TYPE, testValues[i], false));
1478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("Convert long from " + testValues[i].getClass(), longExpected[i], AndroidMock
1488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          .isUnboxableToPrimitive(Long.TYPE, testValues[i], false));
1498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("Convert float from " + testValues[i].getClass(), floatExpected[i], AndroidMock
1508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          .isUnboxableToPrimitive(Float.TYPE, testValues[i], false));
1518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("Convert double from " + testValues[i].getClass(), doubleExpected[i],
1528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          AndroidMock.isUnboxableToPrimitive(Double.TYPE, testValues[i], false));
1538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("Convert char from " + testValues[i].getClass(), charExpected[i], AndroidMock
1548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          .isUnboxableToPrimitive(Character.TYPE, testValues[i], false));
1558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("Convert boolean from " + testValues[i].getClass(), booleanExpected[i],
1568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          AndroidMock.isUnboxableToPrimitive(Boolean.TYPE, testValues[i], false));
1578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
1588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testIsUnboxableToPrimitiveNotPrimitive() {
1628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
1638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      AndroidMock.isUnboxableToPrimitive(Object.class, Object.class, false);
1648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Exception should have been thrown");
1658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
1668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // expected
1678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
1688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateMock() throws ClassNotFoundException, IOException, CannotCompileException,
1718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      NotFoundException {
1728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
1738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
1748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
1758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<String> mockVector = AndroidMock.createMock(Vector.class);
1768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockVector.get(0)).andReturn("Hello World");
1778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockVector);
1788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockVector.get(0).toString());
1798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockVector);
1808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateMockUsingParameters() throws ClassNotFoundException, IOException,
1838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
1848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
1858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
1868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
1878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    SimpleTimeZone mockTimeZone = AndroidMock.createMock(SimpleTimeZone.class, 0, "GMT");
1888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockTimeZone.getRawOffset()).andReturn(42);
1898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockTimeZone);
1908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals(42, mockTimeZone.getRawOffset());
1918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockTimeZone);
1928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
1938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateMockUsingProtectedConstructors() throws ClassNotFoundException,
1958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      IOException, CannotCompileException, NotFoundException {
1968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
1978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Calendar.class);
1988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
1998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Calendar mockCalendar = AndroidMock.createMock(Calendar.class);
2008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockCalendar.getGreatestMinimum(1)).andReturn(42);
2018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockCalendar);
2028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals(42, mockCalendar.getGreatestMinimum(1));
2038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockCalendar);
2048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    // Just don't explode
2068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Calendar newMockCalendar =
2078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        AndroidMock.createMock(Calendar.class, new SimpleTimeZone(1, "GMT"), Locale.UK);
2088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateMockUsingCastableParameters() throws ClassNotFoundException, IOException,
2118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
2128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
2138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
2148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
2158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    SimpleTimeZone mockTimeZone = AndroidMock.createMock(SimpleTimeZone.class, 'a', "GMT");
2168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockTimeZone.getRawOffset()).andReturn(42);
2178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockTimeZone);
2188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals(42, mockTimeZone.getRawOffset());
2198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockTimeZone);
2208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateMockUsingUnusableParameters() throws ClassNotFoundException, IOException,
2238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
2248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
2258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
2268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
2278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
2288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone = AndroidMock.createMock(SimpleTimeZone.class, "GMT");
2298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for incorrect number of constructor parameters");
2308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
2318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
2328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
2338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
2348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone = AndroidMock.createMock(SimpleTimeZone.class, 0, null);
2358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for indeterminate null constructor parameters");
2368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
2378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
2388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
2398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
2408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone = AndroidMock.createMock(SimpleTimeZone.class, 0, new Object());
2418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for incorrect constructor parameters");
2428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
2438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
2448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
2458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateMockUsingInterface() throws ClassNotFoundException, IOException,
2488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
2498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
2508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Map.class);
2518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
2528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<String, String> mockMap = AndroidMock.createMock(Map.class);
2538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get("key")).andReturn("Hello World");
2548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
2558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockMap.get("key"));
2568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockMap);
2578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateMockUsingClass() throws ClassNotFoundException, IOException,
2608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
2618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
2628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
2638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
2648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<String> mockVector = AndroidMock.createMock(Vector.class);
2658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockVector.get(0)).andReturn("Hello World");
2668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockVector);
2678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockVector.get(0).toString());
2688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockVector);
2698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateNiceMock() throws ClassNotFoundException, IOException,
2728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
2738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
2748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
2758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
2768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<String> mockVector = AndroidMock.createNiceMock(Vector.class);
2778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockVector.get(0)).andReturn("Hello World");
2788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockVector);
2798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockVector.get(0).toString());
2808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockVector);
2818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
2828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
2838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateNiceMockUsingUnusableParameters() throws ClassNotFoundException,
2848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      IOException, CannotCompileException, NotFoundException {
2858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
2868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
2878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
2888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
2898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone = AndroidMock.createNiceMock(SimpleTimeZone.class, "GMT");
2908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for incorrect number of constructor parameters");
2918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
2928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
2938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
2948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
2958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone = AndroidMock.createNiceMock(SimpleTimeZone.class, 0, null);
2968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for indeterminate null constructor parameters");
2978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
2988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
2998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
3008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
3018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone =
3028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          AndroidMock.createNiceMock(SimpleTimeZone.class, 0, new Object());
3038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for incorrect constructor parameters");
3048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
3058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
3068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
3078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateNiceMockUsingParameters() throws ClassNotFoundException, IOException,
3108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
3118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
3128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
3138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
3158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    SimpleTimeZone mockTimeZone = AndroidMock.createNiceMock(SimpleTimeZone.class, 0, "GMT");
3168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockTimeZone.getRawOffset()).andReturn(42);
3178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockTimeZone);
3188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals(42, mockTimeZone.getRawOffset());
3198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockTimeZone);
3208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateNiceMockUsingCastableParameters() throws ClassNotFoundException,
3238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      IOException, CannotCompileException, NotFoundException {
3248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
3258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
3268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
3288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    SimpleTimeZone mockTimeZone = AndroidMock.createNiceMock(SimpleTimeZone.class, 'a', "GMT");
3298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockTimeZone.getRawOffset()).andReturn(42);
3308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockTimeZone);
3318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals(42, mockTimeZone.getRawOffset());
3328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockTimeZone);
3338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateNiceMockUsingInterface() throws ClassNotFoundException, IOException,
3368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
3378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
3388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Map.class);
3398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
3418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<String, String> mockMap = AndroidMock.createNiceMock(Map.class);
3428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get("key")).andReturn("Hello World");
3438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
3448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockMap.get("key"));
3458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockMap);
3468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateNiceMockUsingClass() throws ClassNotFoundException, IOException,
3498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
3508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
3518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
3528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
3548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<String> mockVector = AndroidMock.createNiceMock(Vector.class);
3558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockVector.get(0)).andReturn("Hello World");
3568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockVector);
3578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockVector.get(0).toString());
3588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockVector);
3598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateStrictMock() throws ClassNotFoundException, IOException,
3628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
3638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
3648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
3658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
3678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<String> mockVector = AndroidMock.createStrictMock(Vector.class);
3688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockVector.get(0)).andReturn("Hello World");
3698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockVector);
3708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockVector.get(0).toString());
3718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockVector);
3728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
3738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateStrictMockUsingUnusableParameters() throws ClassNotFoundException,
3758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      IOException, CannotCompileException, NotFoundException {
3768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
3778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
3788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
3798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
3808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
3818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone = AndroidMock.createStrictMock(SimpleTimeZone.class, "GMT");
3828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for incorrect number of constructor parameters");
3838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
3848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
3858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
3868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
3878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone = AndroidMock.createStrictMock(SimpleTimeZone.class, 0, null);
3888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for indeterminate null constructor parameters");
3898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
3908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
3918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
3928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
3938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      SimpleTimeZone mockTimeZone =
3948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          AndroidMock.createStrictMock(SimpleTimeZone.class, 0, new Object());
3958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("Excepted an IllegalArgumentException for incorrect constructor parameters");
3968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IllegalArgumentException e) {
3978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // Expected
3988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
3998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateStrictMockUsingParameters() throws ClassNotFoundException, IOException,
4028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
4038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
4048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
4058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
4078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    SimpleTimeZone mockTimeZone = AndroidMock.createStrictMock(SimpleTimeZone.class, 0, "GMT");
4088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockTimeZone.getRawOffset()).andReturn(42);
4098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockTimeZone);
4108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals(42, mockTimeZone.getRawOffset());
4118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockTimeZone);
4128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateStrictMockUsingCastableParameters() throws ClassNotFoundException,
4158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      IOException, CannotCompileException, NotFoundException {
4168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
4178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(SimpleTimeZone.class);
4188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
4208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    SimpleTimeZone mockTimeZone = AndroidMock.createStrictMock(SimpleTimeZone.class, 'a', "GMT");
4218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockTimeZone.getRawOffset()).andReturn(42);
4228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockTimeZone);
4238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals(42, mockTimeZone.getRawOffset());
4248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockTimeZone);
4258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateStrictMockUsingInterface() throws ClassNotFoundException, IOException,
4288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
4298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
4308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Map.class);
4318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
4338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<String, String> mockMap = AndroidMock.createStrictMock(Map.class);
4348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get("key")).andReturn("Hello World");
4358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
4368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockMap.get("key"));
4378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockMap);
4388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateStrictMockUsingClass() throws ClassNotFoundException, IOException,
4418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
4428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
4438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
4448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
4458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<String> mockVector = AndroidMock.createStrictMock(Vector.class);
4468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockVector.get(0)).andReturn("Hello World");
4478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockVector);
4488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    assertEquals("Hello World", mockVector.get(0).toString());
4498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockVector);
4508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCreateMockConstructorDoesWorkOnAllReturnTypes() throws ClassNotFoundException,
4538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      IOException, CannotCompileException, NotFoundException {
4548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
4558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(ClassDoesWorkInConstructor.class);
4568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
4578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    ClassDoesWorkInConstructor mock = AndroidMock.createMock(ClassDoesWorkInConstructor.class);
4588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAllForwardedMethods() throws CannotCompileException, NotFoundException {
4618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    for (CtMethod method : getForwardedMethods()) {
4628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      MethodVerifier verifier = new MethodVerifier(method);
4638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // CtMethod.instrument Causes every instruction in the method to be
4648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // inspected, and passed to
4658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // the MethodVerifier callback (extends javassist.expr.ExprEditor). We
4668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // want to verify that
4678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // the expected EasyMock method is called at least once in each
4688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      // AndroidMock method.
4698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      method.instrument(verifier);
4708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertTrue(method.getLongName() + " not called.", verifier.expectedMethodCalled());
4718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
4728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCheckOrder() throws ClassNotFoundException, IOException, CannotCompileException,
4758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      NotFoundException {
4768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
4778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
4788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
4798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<?> mockVector = AndroidMock.createMock(Vector.class);
4808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.checkOrder(mockVector, false);
4818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.checkOrder(AndroidMock.createMock(Map.class), false);
4828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testVerify() throws ClassNotFoundException, IOException, CannotCompileException,
4858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      NotFoundException {
4868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
4878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
4888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
4898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<?> mockVector = AndroidMock.createMock(Vector.class);
4908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockVector);
4918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockVector);
4928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
4938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
4948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockMap);
4958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
4968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
4978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testResetToStrict() throws ClassNotFoundException, IOException,
4988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
4998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
5008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
5018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
5028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<?> mockVector = AndroidMock.createMock(Vector.class);
5038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.resetToStrict(mockVector);
5048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.resetToStrict(mockMap);
5068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testResetToDefault() throws ClassNotFoundException, IOException,
5098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
5108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
5118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
5128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
5138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<?> mockVector = AndroidMock.createMock(Vector.class);
5148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.resetToDefault(mockVector);
5158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.resetToDefault(mockMap);
5178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testResetToNice() throws ClassNotFoundException, IOException,
5208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
5218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
5228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
5238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
5248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<?> mockVector = AndroidMock.createMock(Vector.class);
5258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.resetToNice(mockVector);
5268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.resetToNice(mockMap);
5288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testReset() throws ClassNotFoundException, IOException, CannotCompileException,
5318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      NotFoundException {
5328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
5338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
5348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
5358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<?> mockVector = AndroidMock.createMock(Vector.class);
5368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.reset(mockVector);
5378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.reset(mockMap);
5398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testReplay() throws ClassNotFoundException, IOException, CannotCompileException,
5438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      NotFoundException {
5448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
5458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(Vector.class);
5468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
5478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Vector<?> mockVector = AndroidMock.createMock(Vector.class);
5488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockVector);
5498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
5518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testExpect() {
5548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    mockMap.clear();
5568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(null);
5578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
5588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testExpectLastCall() {
5618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    mockMap.clear();
5638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expectLastCall();
5648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
5658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyBoolean() {
5688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyBoolean())).andReturn(null);
5708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
5718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyByte() {
5748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyByte())).andReturn(null);
5768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
5778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyChar() {
5808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyChar())).andReturn(null);
5828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
5838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyInt() {
5868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyInt())).andReturn(null);
5888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
5898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyLong() {
5928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyLong())).andReturn(null);
5948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
5958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
5968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
5978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyFloat() {
5988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
5998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyFloat())).andReturn(null);
6008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyDouble() {
6048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyDouble())).andReturn(null);
6068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyShort() {
6108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyShort())).andReturn(null);
6128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnyObject() {
6168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.anyObject())).andReturn(null);
6188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testGeq() {
6228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.geq((byte) 0))).andReturn(null);
6248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.geq((short) 0))).andReturn(null);
6258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.geq(0))).andReturn(null);
6268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.geq(0L))).andReturn(null);
6278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.geq(0.0))).andReturn(null);
6288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.geq(0.0f))).andReturn(null);
6298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.geq("Hi"))).andReturn(null);
6308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testLeq() {
6348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.leq((byte) 0))).andReturn(null);
6368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.leq((short) 0))).andReturn(null);
6378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.leq(0))).andReturn(null);
6388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.leq(0L))).andReturn(null);
6398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.leq(0.0))).andReturn(null);
6408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.leq(0.0f))).andReturn(null);
6418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.leq("Hi"))).andReturn(null);
6428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testGt() {
6468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.gt((byte) 0))).andReturn(null);
6488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.gt((short) 0))).andReturn(null);
6498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.gt(0))).andReturn(null);
6508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.gt(0L))).andReturn(null);
6518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.gt(0.0))).andReturn(null);
6528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.gt(0.0f))).andReturn(null);
6538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.gt("Hi"))).andReturn(null);
6548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testLt() {
6588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.lt((byte) 0))).andReturn(null);
6608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.lt((short) 0))).andReturn(null);
6618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.lt(0))).andReturn(null);
6628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.lt(0L))).andReturn(null);
6638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.lt(0.0))).andReturn(null);
6648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.lt(0.0f))).andReturn(null);
6658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.lt("Hi"))).andReturn(null);
6668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testIsA() {
6708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.isA(String.class))).andReturn(null);
6728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testContains() {
6768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.contains("hi"))).andReturn(null);
6788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
6798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
6808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
6818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAnd() {
6828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
6838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.and(AndroidMock.eq(true), AndroidMock.eq(true))))
6848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
6858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(
6868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        mockMap.get(AndroidMock.and(AndroidMock.eq((byte) 0), AndroidMock.eq((byte) 0))))
6878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
6888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(
6898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        mockMap.get(AndroidMock.and(AndroidMock.eq((short) 0), AndroidMock.eq((short) 0))))
6908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
6918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.and(AndroidMock.eq(0), AndroidMock.eq(0))))
6928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
6938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.and(AndroidMock.eq(0L), AndroidMock.eq(0L))))
6948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
6958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.and(AndroidMock.eq(0.0), AndroidMock.eq(0.0))))
6968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
6978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.and(AndroidMock.eq(0.0f), AndroidMock.eq(0.0f))))
6988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
6998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.and(AndroidMock.eq("hi"), AndroidMock.eq("hi"))))
7008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.and(AndroidMock.eq('a'), AndroidMock.eq('a'))))
7028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testOr() {
7078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
7088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.or(AndroidMock.eq(true), AndroidMock.eq(true))))
7098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(
7118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        mockMap.get(AndroidMock.or(AndroidMock.eq((byte) 0), AndroidMock.eq((byte) 0))))
7128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(
7148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        mockMap.get(AndroidMock.or(AndroidMock.eq((short) 0), AndroidMock.eq((short) 0))))
7158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.or(AndroidMock.eq(0), AndroidMock.eq(0))))
7178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.or(AndroidMock.eq(0L), AndroidMock.eq(0L))))
7198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.or(AndroidMock.eq(0.0), AndroidMock.eq(0.0))))
7218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.or(AndroidMock.eq(0.0f), AndroidMock.eq(0.0f))))
7238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.or(AndroidMock.eq("hi"), AndroidMock.eq("hi"))))
7258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.or(AndroidMock.eq('a'), AndroidMock.eq('a'))))
7278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
7288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testNot() {
7328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
7338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq(true)))).andReturn(null);
7348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq((byte) 0)))).andReturn(null);
7358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq((short) 0)))).andReturn(null);
7368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq(0)))).andReturn(null);
7378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq(0L)))).andReturn(null);
7388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq(0.0)))).andReturn(null);
7398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq(0.0f)))).andReturn(null);
7408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq("hi")))).andReturn(null);
7418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.not(AndroidMock.eq('a')))).andReturn(null);
7428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testEq() {
7468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
7478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq(true))).andReturn(null);
7488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq((byte) 0))).andReturn(null);
7498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq((short) 0))).andReturn(null);
7508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq(0))).andReturn(null);
7518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq(0L))).andReturn(null);
7528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq(0.0))).andReturn(null);
7538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq(0.0f))).andReturn(null);
7548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq(0.0, 0.1))).andReturn(null);
7558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq(0.0f, 0.1f))).andReturn(null);
7568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq("hi"))).andReturn(null);
7578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.eq('a'))).andReturn(null);
7588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAryEq() {
7628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
7638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new boolean[] {true}))).andReturn(null);
7648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new byte[] {(byte) 0}))).andReturn(null);
7658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new short[] {(short) 0}))).andReturn(null);
7668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new int[] {0}))).andReturn(null);
7678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new long[] {0L}))).andReturn(null);
7688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new double[] {0.0}))).andReturn(null);
7698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new float[] {0.0f}))).andReturn(null);
7708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new String[] {"hi"}))).andReturn(null);
7718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.aryEq(new char[] {'a'}))).andReturn(null);
7728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testIsNull() {
7768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
7778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.isNull())).andReturn(null);
7788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testNotNull() {
7828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
7838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.notNull())).andReturn(null);
7848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testFind() {
7888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
7898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.find("hi"))).andReturn(null);
7908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testMatches() {
7948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
7958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.matches("hi"))).andReturn(null);
7968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
7978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
7988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
7998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testStartsWith() {
8008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.startsWith("hi"))).andReturn(null);
8028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testEndsWith() {
8068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.endsWith("hi"))).andReturn(null);
8088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testSame() {
8128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.same("hi"))).andReturn(null);
8148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCmpEq() {
8188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.cmpEq("hi"))).andReturn(null);
8208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCmp() {
8248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(
8268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        mockMap.get(AndroidMock.cmp("hi", String.CASE_INSENSITIVE_ORDER, LogicalOperator.EQUAL)))
8278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        .andReturn(null);
8288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testCapture() {
8328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.capture(new Capture<Byte>()))).andReturn(null);
8348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.capture(new Capture<Character>()))).andReturn(null);
8358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.capture(new Capture<Double>()))).andReturn(null);
8368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.capture(new Capture<Float>()))).andReturn(null);
8378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.capture(new Capture<Integer>()))).andReturn(null);
8388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.capture(new Capture<Long>()))).andReturn(null);
8398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(AndroidMock.capture(new Capture<String>()))).andReturn(null);
8408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testReportMatcher() {
8448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.reportMatcher(new Equals(null));
8468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(null)).andReturn(null);
8478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testGetCurrentArguments() {
8518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockMap.get(null)).andAnswer(new IAnswer() {
8538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      @Override
8548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      public Object answer() {
8558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        AndroidMock.getCurrentArguments();
8568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        return null;
8578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
8588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    });
8598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    mockMap.get(null);
8618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testMakeThreadSafe() {
8648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    Map<?, ?> mockMap = AndroidMock.createMock(Map.class);
8658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.makeThreadSafe(mockMap, false);
8668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockMap);
8678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAndThrowsOnMockedInterface() throws IOException {
8708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    ObjectInput mockInStream = AndroidMock.createMock(ObjectInput.class);
8718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockInStream.read()).andThrow(new IOException("foo"));
8728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockInStream);
8738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
8748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      mockInStream.read();
8758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("IOException not thrown");
8768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IOException e) {
8778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("foo", e.getMessage());
8788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
8798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockInStream);
8808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  public void testAndThrowsOnMockedClass() throws IOException, ClassNotFoundException,
8838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      CannotCompileException, NotFoundException {
8848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    List<GeneratedClassFile> mockClasses =
8858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        new AndroidMockGenerator().createMocksForClass(InputStream.class);
8868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    compileClasses(mockClasses);
8878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    InputStream mockInStream = AndroidMock.createMock(InputStream.class);
8888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.expect(mockInStream.read()).andThrow(new IOException("foo"));
8898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.replay(mockInStream);
8908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    try {
8918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      mockInStream.read();
8928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      fail("IOException not thrown");
8938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    } catch (IOException e) {
8948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      assertEquals("foo", e.getMessage());
8958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
8968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    AndroidMock.verify(mockInStream);
8978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
8988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
8998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  /**
9008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * Used for testing that a given method on Android Mock calls the equivalent
9018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * method on EasyMock, to ensure that the method-wiring of Android Mock is
9028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * correct.
9038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   *
9048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   * @author swoodward@google.com (Stephen Woodward)
9058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal   */
9068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  class MethodVerifier extends ExprEditor {
9078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    private CtMethod expectedMethod;
9088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    private boolean methodCalled;
9098da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
9108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    MethodVerifier(CtMethod expectedMethod) {
9118da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      this.expectedMethod = expectedMethod;
9128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
9138da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
9148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    @Override
9158da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    public void edit(MethodCall calledMethod) {
9168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      try {
9178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        methodCalled = methodCalled || expectedMethod.equals(calledMethod.getMethod());
9188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      } catch (NotFoundException e) {
9198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        throw new RuntimeException(e);
9208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      }
9218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
9228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
9238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    public boolean expectedMethodCalled() {
9248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      return methodCalled;
9258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    }
9268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  }
9278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal}
928