1/*
2 * Copyright 2010 Google Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16package com.google.android.testing.mocking.test;
17
18import android.content.Context;
19
20import com.google.android.testing.mocking.AndroidMock;
21import com.google.android.testing.mocking.SdkVersion;
22import com.google.android.testing.mocking.UsesMocks;
23import com.google.android.testing.mocking.testapp.ClassToMock;
24
25import junit.framework.TestCase;
26
27/**
28 * Tests that Android Mock provides correct mocks when running on a Dalvik VM.
29 *
30 * @author swoodward (Stephen Woodward)
31 */
32public class MockingTest extends TestCase {
33  /**
34   * Test that an SDK class is mocked correctly, that is to say the mock
35   * comes from the pre-generated set, and it corresponds to the correct
36   * runtime environment
37   */
38  @UsesMocks(Context.class)
39  public void testFrameworkMock() {
40    Context mockContext = AndroidMock.createMock(Context.class);
41    String packageName = mockContext.getClass().getPackage().getName();
42    assertEquals(SdkVersion.getCurrentVersion().getPackagePrefix(),
43        packageName.substring(0, packageName.indexOf('.') + 1));
44  }
45
46  /**
47   * Test that a non-SDK class is mocked correctly
48   */
49  @UsesMocks(ClassToMock.class)
50  public void testNormalMock() {
51    ClassToMock myMockClass = AndroidMock.createMock(ClassToMock.class);
52    AndroidMock.expect(myMockClass.getString()).andReturn(
53        "I'm the king of the world, king of the -- d'oh!");
54    AndroidMock.expect(myMockClass.getInt()).andReturn(42);
55    AndroidMock.replay(myMockClass);
56    assertEquals("I'm the king of the world, king of the -- d'oh!",
57        myMockClass.getString());
58    assertEquals(42, myMockClass.getInt());
59    AndroidMock.verify(myMockClass);
60  }
61}
62
63