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}