1a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu/* 2a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * Copyright (C) 2016 Google Inc. 3a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * 4a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * Licensed under the Apache License, Version 2.0 (the "License"); 5a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * you may not use this file except in compliance with the License. 6a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * You may obtain a copy of the License at 7a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * 8a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * http://www.apache.org/licenses/LICENSE-2.0 9a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * 10a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * Unless required by applicable law or agreed to in writing, software 11a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * distributed under the License is distributed on an "AS IS" BASIS, 12a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * See the License for the specific language governing permissions and 14a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu * limitations under the License. 15a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu */ 16a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 17a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxupackage com.android.carrierdefaultapp; 18a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 19a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport android.app.Activity; 20a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport android.content.ComponentName; 21a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport android.content.Context; 22a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport android.content.ContextWrapper; 23a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport android.content.Intent; 24a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport android.test.ActivityUnitTestCase; 25a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport android.util.Log; 26a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 27a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport org.mockito.MockitoAnnotations; 28a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 29a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxuimport java.util.HashMap; 30a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 31a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxupublic class CarrierDefaultActivityTestCase<T extends Activity> extends ActivityUnitTestCase<T> { 32a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 33a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu protected TestContext mContext; 34a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 35a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu private T mActivity; 36a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 37a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu CarrierDefaultActivityTestCase(Class<T> activityClass) { 38a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu super(activityClass); 39a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu } 40a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 41a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu @Override 42a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu protected void setUp() throws Exception { 43a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu super.setUp(); 44a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu MockitoAnnotations.initMocks(this); 45a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu mContext = new TestContext(getInstrumentation().getTargetContext()); 46a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu setActivityContext(mContext); 47a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu } 48a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 49a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu @Override 50a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu protected void tearDown() throws Exception { 51a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu super.tearDown(); 52a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu } 53a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 54a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu protected T startActivity() throws Throwable { 55a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu runTestOnUiThread(new Runnable() { 56a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu @Override 57a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu public void run() { 58a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu mActivity = startActivity(createActivityIntent(), null, null); 59a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu } 60a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu }); 61a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu return mActivity; 62a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu } 63a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 64a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu protected void stopActivity() throws Exception { 65a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu getInstrumentation().callActivityOnStop(mActivity); 66a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu } 67a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 68a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu protected Intent createActivityIntent() { 69a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu Intent intent = new Intent(); 70a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu return intent; 71a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu } 72a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu 73a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu protected <S> void injectSystemService(Class<S> cls, S service) { 74a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu mContext.injectSystemService(cls, service); 75a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu } 76a21a87b7a4153839cebb3152d0003ee86d7a5252fionaxu}