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.test; 178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal 188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport android.content.Context; 198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal 208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport com.google.android.testing.mocking.AndroidMock; 218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport com.google.android.testing.mocking.SdkVersion; 228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport com.google.android.testing.mocking.UsesMocks; 238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport com.google.android.testing.mocking.testapp.ClassToMock; 248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal 258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalimport junit.framework.TestCase; 268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal 278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal/** 288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Tests that Android Mock provides correct mocks when running on a Dalvik VM. 298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * 308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * @author swoodward (Stephen Woodward) 318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal */ 328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalpublic class MockingTest extends TestCase { 338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal /** 348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Test that an SDK class is mocked correctly, that is to say the mock 358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * comes from the pre-generated set, and it corresponds to the correct 368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * runtime environment 378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal */ 388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal @UsesMocks(Context.class) 398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal public void testFrameworkMock() { 408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal Context mockContext = AndroidMock.createMock(Context.class); 418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal String packageName = mockContext.getClass().getPackage().getName(); 428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal assertEquals(SdkVersion.getCurrentVersion().getPackagePrefix(), 438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal packageName.substring(0, packageName.indexOf('.') + 1)); 448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal } 458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal 468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal /** 478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal * Test that a non-SDK class is mocked correctly 488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal */ 498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal @UsesMocks(ClassToMock.class) 508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal public void testNormalMock() { 518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal ClassToMock myMockClass = AndroidMock.createMock(ClassToMock.class); 528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal AndroidMock.expect(myMockClass.getString()).andReturn( 538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal "I'm the king of the world, king of the -- d'oh!"); 548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal AndroidMock.expect(myMockClass.getInt()).andReturn(42); 558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal AndroidMock.replay(myMockClass); 568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal assertEquals("I'm the king of the world, king of the -- d'oh!", 578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal myMockClass.getString()); 588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal assertEquals(42, myMockClass.getInt()); 598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal AndroidMock.verify(myMockClass); 608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal } 618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal} 628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal 63